Il governo US preferirebbe che si smettesse di programmare strumenti in C o C++. In un nuovo rapporto, l’Office of the National Cyber Director (ONCD) della Casa Bianca ha invitato gli sviluppatori a utilizzare “linguaggi di programmazione sicuri per la memoria”, una categoria che esclude i linguaggi più diffusi.

Il consiglio fa parte della strategia di Cybersecurity del Presidente degli Stati Uniti Biden e mira a rendere sicuri gli elementi costitutivi del cyberspazio.

La sicurezza della memoria si riferisce alla protezione da bug e vulnerabilità che riguardano l’accesso alla memoria.

Nel 2019, gli ingegneri della sicurezza di Microsoft hanno riferito che circa il 70% delle vulnerabilità di sicurezza erano causate da problemi di sicurezza della memoria

I rischi

La violazione dell’accesso alla memoria può compromettere gravemente un programma, consentendo la manipolazione e lo sfruttamento non autorizzati del flusso di esecuzione e dell’integrità dei dati.

Quando un aggressore ottiene il controllo della memoria, può leggere o alterare informazioni sensibili, come password, chiavi di crittografia o dati personali dell’utente, direttamente dallo spazio di memoria del programma.

Questo accesso può portare all’esecuzione di codice arbitrario, consentendo agli aggressori di iniettare payload dannosi, installare backdoor o aumentare i privilegi. Inoltre, sfruttando vulnerabilità come buffer overflow o errori use-after-free, gli aggressori possono sovrascrivere aree di memoria critiche, reindirizzando il flusso di controllo del programma verso codice dannoso.

Questi exploit minano l‘affidabilità, la sicurezza e l’attendibilità del programma, portando potenzialmente a violazioni dei dati, corruzione del sistema e gravi danni finanziari o di reputazione per l’organizzazione colpita.

Delphi e Dossier Manager sono “memory-safe”

Tra i linguaggi suggeriti dalla NSA risulta anche Delphi, il linguaggio di Dossier Manager.

Pur non avendo la garbage collection, Delphi è caratterizzato dalla presenza di un sistema di tipo forte e la verifica da parte del linguaggio della mappatura dei tipi di dati in fase di compilazione e non in fase di esecuzione. I linguaggi dinamici, anche se dotati di un garbage collector, possono essere carenti ed essere esposti a errori di runtime, che possono influire sulla loro sicurezza.

In più, Delphi non deve ricorrere all’uso di puntatori e a una gestione più diretta della memoria nel codice generale. Sebbene Delphi non blocchi l’uso dell’accesso diretto alla memoria, questo è piuttosto raro. Delphi offre meccanismi che automatizzano e semplificano la gestione della memoria anche senza un GC.

Condividi l'articolo!