C e C++ non gestiscono la memoria in modo sicuro: la Casa Bianca ne sconsiglia l'uso

L'ONCD (Office of the National Cyber Director), l'agenzia Usa che si occupa della Cybersicurezza, ha pubblicato un documento in cui sconsiglia ufficialmente l'utilizzo dei linguaggi di programmazione C e C++ per il tipo di gestione della memoria.
di Rosario Grasso pubblicata il 04 Marzo 2024, alle 17:01 nel canale SoftwareL'agenzia Usa che si occupa di cybersicurezza ha ufficialmente sconsigliato l'uso di C e C++, i celebri linguaggi di programmazione la cui adozione negli ultimi anni è andata scemando anche da parte di grandi colossi come Google e Microsoft per via del tipo di gestione della memoria che viene fatto. Rust, Go e Java, da questo punto di vista, sono più adatti secondo l'ONCD (Office of the National Cyber Director), anche perché automatizzerebbero alcuni processi.
Le attenzioni si concentrano, infatti, sull'assenza di un sistema automatico per il controllo della memoria. Essendo privi di garbage collector, in particolare, C e C++ non offrirebbero sufficienti garanzie per affrontare le moderne sfide di sicurezza, affidando le operazioni più gravose all'attenzione degli sviluppatori e degli utenti. La principale funzione di un garbage collector è quella di individuare e liberare la memoria occupata da oggetti o dati che non sono più utilizzati dal programma, al fine di evitare la cosiddetta "memory leak" (perdita di memoria) e garantire un uso efficiente delle risorse di sistema. Sebbene neanche questa sia considerata la pratica migliore, perché comporta un maggiore consumo delle risorse di elaborazione, rappresenta il migliore compromesso dal punto di vista della sicurezza.
Microsoft e Google hanno già da tempo abbandonato questi linguaggi di programmazione per lo stesso tipo di insidie. Con Chromium, in particolare, la casa di Mountain View è passata a Rust, considerato ora come il più sicuro in assoluto. Microsoft, invece, è passata a Rust in Windows già nel 2019, dopo aver rilevato che gran parte dei problemi di sicurezza del sistema operativo dipendevano proprio dal linguaggio di programmazione adottato.
La posizione dell'ONCD non rappresenta un'immediata cessazione dell'utilizzo di C e C++, che anzi rimangono tra i linguaggi di programmazione più popolari. Sviluppato da Dennis Ritchie presso i laboratori Bell nel 1972, C è un linguaggio di programmazione procedurale che segue un approccio basato sulla decomposizione di un problema in sotto-task. C++, inoltre, conserva molte delle caratteristiche di C, ma aggiunge funzionalità orientate agli oggetti e altre caratteristiche come i template e un'avanzata gestione delle risorse.
37 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - infoil vostro codice in C e C++ facciamo troppa fatica a bucarlo,
usate Rust Go e Java che ci rendete il lavoro più facile
è il programmatore che deve farlo a manina in modo sicuro
Inoltre in ambito sicurezza se non si fanno i dovuti check si può essere vittima di un buffer overflow attack (https://www.imperva.com/learn/appli...uffer-overflow/).
Quello che dicono è che, a scapito di un pò di performance (perdita trascurabile se si lavora a microservizi che scalano), un linguaggio col garbage collector riduce o annulla problemi molti più gravi.
Come dico da decenni forse ci sono milioni di persone che FANNO i programmatori ma solo qualche migliaia È un programmatore.
Certo multithreading e altre evoluzioni hanno sicuramente complicato la vita del programmatore e ad ogni modo i linguaggi devono evolversi e Rust ritengo sia un buon sostituto di C/C++. Java non credo GO forse
non è il linguaggio di programmazione ad essere insicuro ma l'uso che se ne fa (male) ...
Certo multithreading e altre evoluzioni hanno sicuramente complicato la vita del programmatore e ad ogni modo i linguaggi devono evolversi e Rust ritengo sia un buon sostituto di C/C++. Java non credo GO forse
...se uno vuole ci sono anche le funzioni thread-safe con _s alla fine, vogliono una variabile di appoggio in più ma almeno rischi meno
Sì ma c'è un motivo se sempre più parti di linux (kernel) stanno venendo riscritte in rust ehh.
Inoltre in ambito sicurezza se non si fanno i dovuti check si può essere vittima di un buffer overflow attack (https://www.imperva.com/learn/appli...uffer-overflow/).
Quello che dicono è che, a scapito di un pò di performance (perdita trascurabile se si lavora a microservizi che scalano), un linguaggio col garbage collector riduce o annulla problemi molti più gravi.
*
Mi chiedo che ripercussione abbia questa linea guida. Vuol dire che spingeranno i software usati a livello governativo o critici per la sicurezza nazionale ad usare linguaggi memory safe?
Comunque la code-base in C/C++ e' semplicemente colossale. Per rimpiazzarla, anche fosse possibile, serviranno decenni e nuove generazioni di programmatori esperti in linguaggi memory safe ad alte prestazioni.
Devi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".