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

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 pubblicata il , alle 17:01 nel canale Software
 

L'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.

C e C++ Casa Bianca

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 - info
barzokk04 Marzo 2024, 17:06 #1
Traduzione:
il vostro codice in C e C++ facciamo troppa fatica a bucarlo,
usate Rust Go e Java che ci rendete il lavoro più facile
!fazz04 Marzo 2024, 17:07 #2
beh normale c e c++ non gestiscono la memoria punto.

è il programmatore che deve farlo a manina in modo sicuro
matrix8304 Marzo 2024, 17:26 #3
Quanta ignoranza in un articolo. C uber alles.
Pino9004 Marzo 2024, 17:31 #4
Né C né C++ gestiscono la memoria, sono gli sviluppatori a doverla gestire esplicitamente. Praticamente hanno detto che la maggior parte degli sviluppatori fa schifo a gestire la memoria e di conseguenza scrive programmi poco sicuri: non posso che essere d'accordo!
lammoth04 Marzo 2024, 17:53 #5
Diciamo che con i sw che diventano sempre più complessi, anche un programmatore accorto può dimenticarsi una free dopo una malloc/calloc o una delete dopo una new e via dicendo (specie se si lavora in ambiti multithread).

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.
io78bis04 Marzo 2024, 18:05 #6
Originariamente inviato da: Pino90
Né C né C++ gestiscono la memoria, sono gli sviluppatori a doverla gestire esplicitamente. Praticamente hanno detto che la maggior parte degli sviluppatori fa schifo a gestire la memoria e di conseguenza scrive programmi poco sicuri: non posso che essere d'accordo!


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
bancodeipugni04 Marzo 2024, 18:15 #7
solo un americano poteva uscire con una cosa del genere...

non è il linguaggio di programmazione ad essere insicuro ma l'uso che se ne fa (male) ...
bancodeipugni04 Marzo 2024, 18:17 #8
Originariamente inviato da: io78bis
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


...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
Nui_Mg04 Marzo 2024, 18:26 #9
Originariamente inviato da: bancodeipugni
non è il linguaggio di programmazione ad essere insicuro ma l'uso che se ne fa (male) ...

Sì ma c'è un motivo se sempre più parti di linux (kernel) stanno venendo riscritte in rust ehh.
ZeroSievert04 Marzo 2024, 18:32 #10
Originariamente inviato da: lammoth
Diciamo che con i sw che diventano sempre più complessi, anche un programmatore accorto può dimenticarsi una free dopo una malloc/calloc o una delete dopo una new e via dicendo (specie se si lavora in ambiti multithread).

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".

La discussione è consultabile anche qui, sul forum.
 
^