Giu 28, 2024 News, RSS, Tecnologia, Vulnerabilità
Il 52% dei progetti open-source più “critici” per le organizzazioni non utilizza codice memory-safe: è quanto emerge da un report redatto da CISA, FBI, dall’Australian Cyber Security Centre, dall’Australian Signal Directorate e dal Canadian Centre for Cyber Security.
La definizione di “software critico” utilizzata per analizzare i 172 progetti del report è fornita dal NIST e sta a indicare tutti quei software che vengono eseguiti con privilegi elevati, che hanno accesso diretto o privilegiato alle risorse di rete o di computazione, che vengono usati per gestire l’accesso ai dati o a tecnologie operativi, che eseguono funzioni critiche per il business o che operano al di fuori dei normali confini di controllo con privilegi elevati.
L’analisi prosegue il lavoro svolto per “The case for Memory -Safe Roadmaps”, una pubblicazione che analizzava le vulnerabilità di memory-safety indicandole come la classe più diffusa di vulnerabilità software, in grado di pesare notevolmente sulle finanze aziendali.
In seguito a questo primo report, l’Office of the National Cyber Director della Casa Bianca ha richiesto ai programmatori di usare solo linguaggi di programmazione memory-safe, ovvero quei linguaggi che impediscono di utilizzare in maniera errata la memoria e introdurre bug legati a questo problema.
Un linguaggio memory-safe gestire la memoria al posto del programmatore per evitare che si verifichino allocazioni o utilizzi errati; un esempio classico è l’accesso all’n-esimo elemento di un array che contiene n-1 elementi. Linguaggi di programmazione memory-safe comprendono Rust, Go, C#, Java, Swift, Python e JavaScript; al contrario, linguaggi quali assembly, C, C++, Cython e D non sono memory-safe.
Dall’analisi è emerso non solo che più della metà dei progetti open source critici è scritta in linguaggi non memory-safe, ma anche che i progetti più estesi sono scritti in “maniera sproporzionata” con linguaggi unsafe: dei 10 progetti più grandi, in base al numero di linee di codice, tutti hanno una porzione di codice memory-unsafe che supera il 26%; per 4 di questi la percentuale supera il 94%.
Il problema non riguarda solo i progetti in sé, ma anche le loro dipendenze: di tre progetti memory-safe analizzati, ognuno di essi dipendeva da componenti terze scritte con linguaggi memory-unsafe.
Il report evidenzia che questi linguaggi vengono usati principalmente nei progetti in cui le performance e le limitazioni alle risorse sono fattori critici, come nei kernel e nei driver dei sistemi operativi, in software per la crittografia e in programmi di networking. “Può essere un investimento utile per la sicurezza aggiornare questi tipi di progetti con linguaggi memory-safe, e anche i nuovi progetti dovrebbero prendere in considerazione l’uso di linguaggi memory-safe. I recenti progressi consentono ai linguaggi di programmazione memory-safe, come Rust, di raggiungere le prestazioni dei linguaggi memory-unsafe” si legge nell’analisi.
Gli esperti di sicurezza ribadiscono l’importanza di usare linguaggi sicuri dal punto di vista della memoria e applicare i principi di sicurezza in fase di progettazione del software e scrittura di codice.