L'ONCD (Office of the National Cyber Director), cioè l'agenzia statunitense che si occupa della Cybersecurity, ha recentemente pubblicato un report in cui C e C++ vengono indicati come linguaggi insicuri. Tale considerazione riguarda nello specifico la gestione della memoria, per questo motivo sarebbe più consigliabile l'utilizzo di alternative come Rust, Go e Java. Il primo sembrerebbe essere inoltre il più sicuro in assoluto. Non a caso si tratta di una soluzione oggi adottata in Chromium e per lo sviluppo del kernel di Windows.
Perché C e C++ sono sconsigliati
Come anticipato, C e C++ presentano dei limiti per quanto riguarda la gestione della memoria. Ciò è dovuto in particolare alla mancanza di funzionalità per il suo controllo automatico. Niente garbage collection come per esempio nel caso di Java, tutto viene affidato all'attenzione degli sviluppatori e ai comportamenti degli utilizzatori.
Today we released a report calling on the technical community to adopt memory safe programming languages. We have the ability & responsibility to reduce the cyber attack surface & prevent entire classes of security bugs from entering the digital ecosystem https://t.co/munVsA1Be8 pic.twitter.com/YP9Al7KQ1d
— Office of the National Cyber Director (@ONCD) February 26, 2024
Certo, anche la garbage collection presenta degli svantaggi, tra cui un maggior consumo delle risorse computazionali, ma dal punto di vista della sicurezza apporterebbe degli indubbi benefici.
Non è un caso che, in momenti diversi, due grandi aziende come Microsoft e Google abbiano sottolineato le insidie nascoste nel codice C e C++. A tal proposito basterebbe citare il caso del sorgente di Chromium, i cui "problemi di memoria" sarebbero stati dovuti proprio a questi linguaggi convincendo Big G a passare a Rust. Chromium, inoltre, non è alla base del solo Chrome, quindi le vulnerabilità della sua codebase finiscono per coinvolgere anche altri progetti.
Nel Caso della Casa di Redmond, lo switch verso Rust in Windows deriva da alcune osservazioni risalenti al 2019. Quando la compagnia registrò che quasi 2/3 della problematiche di sicurezza delle applicazioni deriverebbero dall'uso dei due linguaggi in questione.
Il futuro di C e C++
Le constatazioni dell'ONCD non porteranno di certo ad un abbandono di C e C++. È però prevedibile che nel prossimo futuro i linguaggi che prevedono un accesso diretto alla memoria verranno guardati con sempre maggiore diffidenza. Questo in particolare per il discorso legato alla sicurezza di puntatori e al buffer overflow, condizione di errore a runtime che spesso spiana la strada alla riscrittura di porzioni di memoria con finalità malevole.