
Gli scienziati del centro di ricerca francese Inria, insieme a Microsoft, hanno sviluppato un modo per convertire automaticamente il codice C in codice Rust sicuro, con l’obiettivo di soddisfare la crescente domanda di sicurezza della memoria.
Creato negli anni ’70, il linguaggio di programmazione C è diventato la base per molti sistemi, applicazioni e librerie mission-critical, incluso il kernel Linux. Tuttavia il C, come la sua continuazione logica C++, non garantisce la sicurezza della memoria. La sua gestione manuale della memoria, pur fornendo flessibilità ed efficienza, è soggetta a errori come out-of-bounds e use-after-free.
Questi bug costituiscono una parte significativa delle vulnerabilità del software. Ad esempio, nel 2019 costituivano il 76% delle vulnerabilità di Android, ma grazie all’utilizzo di Rust e del secure code questa cifra è scesa al 24% nel 2024.
Rust ti permette di scrivere codice sia sicuro che non sicuro, lasciando la scelta allo sviluppatore. Al contrario, C e C++ richiedono uno sforzo significativo, come analisi e test statici, ma non la forniscono in modo nativo.
Negli ultimi anni c’è stato un forte sostegno al passaggio a linguaggi con sicurezza della memoria incorporata, come Rust, Go, Python e Java. Nonostante ciò, alcuni programmatori continuano a cercare modi per utilizzare C e C++ in modo sicuro, evitando il passaggio a Rust. Google, pur promuovendo attivamente Rust, riconosce anche che C e C++ rimarranno in uso per molti anni a venire.
Tra i tentativi di migliorare la sicurezza del C spiccano progetti come TrapC e Fil-C. Il primo sviluppa un approccio a un sottoinsieme del linguaggio e il secondo, pur fornendo sicurezza, riduce le prestazioni e non supporta la piena compatibilità con l’interfaccia binaria dell’applicazione.
Lo studio, Compiling C into Safe Rust , dei ricercatori Aymeric Fromertz (Inria) e Jonathan Protzenko (Microsoft), offre un approccio alternativo. Si sono concentrati sulla traduzione del codice formalmente testato per l’uso industriale in Rust sicuro. Per fare ciò, è stato creato un sottoinsieme del linguaggio C chiamato Mini-C, che evita costrutti difficili da tradurre come l’aritmetica dei puntatori e la mutabilità implicita.
Utilizzando Mini-C tramite il compilatore KaRaMeL, gli sviluppatori ottengono la conversione automatica del codice in Rust sicuro. Ad esempio, la libreria di crittografia HACL, composta da 80.000 righe di codice, è stata tradotta con modifiche minime. E la libreria serializzatore EverParse, contenente 1.400 righe di codice, è stata convertita senza alcuna modifica. Le prestazioni del codice Rust risultante sono rimaste al livello del C originale, nonostante l’aggiunta di ulteriori controlli e altri miglioramenti.
I frutti del lavoro dei ricercatori vengono già utilizzati nelle applicazioni di sicurezza del mondo reale. Ad esempio, la versione Rust di HACL è stata recentemente integrata nelle librerie Mozilla NSS e OpenSSH.
Ti è piaciuto questo articolo? Ne stiamo discutendo nella nostra Community su LinkedIn, Facebook e Instagram. Seguici anche su Google News, per ricevere aggiornamenti quotidiani sulla sicurezza informatica o Scrivici se desideri segnalarci notizie, approfondimenti o contributi da pubblicare.

DirittiOggi è il 28 gennaio e, come ogni anno da un bel po’ di tempo a questa parte, ci ritroviamo a celebrare la Giornata europea della protezione dei dati. È una roba che nasce nel…
Cyber NewsUn aggiornamento di sicurezza è stato rilasciato dai responsabili della manutenzione di OpenSSL, la libreria crittografica, al fine di risolvere circa una dozzina di vulnerabilità che includono, tra gli altri, errori logici e corruzioni di…
CyberpoliticaNon è la prima iniziativa che spunta su questo fronte, ultimamente. Anzi, se ne sentono diverse, una dopo l’altra. Ed è quasi inevitabile: autonomia tecnologica e sicurezza nazionale stanno diventando un terreno sempre più battuto,…
CulturaC’è questa idea sbagliata, un po’ romantica volendo, per cui il ransomware è “roba da IT”: qualche server in crisi, due notti in bianco, poi si riparte e fine… La realtà, soprattutto per un’azienda quotata…
DirittiNel precedente contributo abbiamo esplorato come la posizione di garanzia del professionista della cybersecurity si scontri con fattispecie classiche come l’accesso abusivo. Tuttavia, nella mia esperienza professionale e accademica, riscontro spesso una zona d’ombra ancora…