Sommario
La sicurezza dei progetti open source critici è di fondamentale importanza per garantire la protezione delle infrastrutture digitali. La Cybersecurity and Infrastructure Security Agency (CISA), in collaborazione con il Federal Bureau of Investigation (FBI), l’Australian Signals Directorate’s Australian Cyber Security Centre (ASD’s ACSC) e il Canadian Centre for Cyber Security (CCCS), ha pubblicato un rapporto congiunto che esplora la sicurezza della memoria nei progetti open source. Questa guida, pubblicata il 26 giugno 2024, analizza i rischi associati all’uso di linguaggi di programmazione non sicuri per la gestione della memoria.
Il rapporto congiunto evidenzia che le vulnerabilità legate alla sicurezza della memoria sono tra le più comuni e costose da gestire. Queste vulnerabilità possono portare a buffer overflow, uso dopo il rilascio della memoria e altri problemi che consentono agli avversari di prendere il controllo dei software, sistemi e dati. La guida mira a fornire un punto di partenza per creare roadmap di sicurezza della memoria, identificando i progetti open source critici e valutando l’uso di linguaggi di programmazione sicuri e non sicuri.
Metodologia e Risultati
L’analisi ha coinvolto 172 progetti critici identificati dalla Open Source Security Foundation (OpenSSF). Tra questi, il 52% dei progetti contiene codice scritto in linguaggi non sicuri per la memoria, e il 55% del totale delle linee di codice (LoC) è scritto in tali linguaggi. I linguaggi non sicuri per la memoria richiedono che i programmatori gestiscano manualmente l’uso e l’allocazione della memoria, aumentando il rischio di errori e vulnerabilità.
Proporzione di Linguaggi non sicuri nei Progetti
Categoria | Progetti | Proporzione |
---|---|---|
Solo linguaggi sicuri | 82 | 48% |
Almeno un linguaggio non sicuro | 90 | 52% |
Linee di codice totali | 314,755,905 | |
Linee di codice non sicure | 173,588,291 | 55% |
Discussione
L’analisi ha rivelato che molti progetti critici open source sono parzialmente scritti in linguaggi non sicuri per la memoria. Anche i progetti scritti principalmente in linguaggi sicuri possono contenere dipendenze da componenti scritti in linguaggi non sicuri. Questo aumenta il rischio di vulnerabilità di sicurezza della memoria.
È importante continuare a promuovere l’uso di linguaggi di programmazione sicuri per la memoria, come Rust, che trasferiscono la responsabilità della gestione della memoria dal programmatore al compilatore o all’interprete. Questo riduce significativamente le opportunità di introdurre vulnerabilità di sicurezza della memoria. Inoltre, è fondamentale adottare pratiche di codifica sicura e test di sicurezza rigorosi.
Raccomandazioni
Il rapporto congiunto raccomanda agli sviluppatori di software di creare roadmap per la sicurezza della memoria, compresi piani per affrontare la sicurezza della memoria nelle dipendenze esterne. È inoltre incoraggiato lo sviluppo e l’adozione di strumenti di analisi delle dipendenze per identificare e mitigare i rischi associati all’uso di linguaggi non sicuri.
Per ulteriori dettagli, il rapporto completo è disponibile qui.