Il 70% di tutte le vulnerabilità presenti nei prodotti Microsoft risolte ogni anno dagli aggiornamenti software sono problematiche di sicurezza legate alla gestione della memoria. È quanto rivelato da un ingegnere della multinazionale di Redmond nel corso di una conferenza dedicata alla sicurezza.
Le problematiche di sicurezza relative alla gestione della memoria sono quelle a cui gli ingegneri fanno riferimento descrivendo applicazioni che accedono alla memoria del sistema operativo in modalità tali da non comportare errori. Questo tipo di bug si verifica quando un software, per errore o intenzionalmente, accede a locazioni e indirizzi di memoria non effettivamente allocati.
Sono vari i termini con i quali si fa riferimento a queste problematiche, come riporta ZDNet: buffer overflow, fenomeno di race condition, eccezione page fault, puntatore nullo, esaurimento dello stack, esaurimento/corruzione heap, condizione di use after free e altre condizioni che, in vari modi, consentono di eseguire codice arbitrario.
Parlando nel corso della BlueHat security conference di Israele, Matt Miller – security engineer di Microsoft, ha spiegato che negli ultimi 12 anni, circa il 70% di tutte le patch Microsoft erano relative a bug di sicurezza legati alla gestione della memoria.
La ragione di questa percentuale così alta a suo dire è da ricercare nel fatto che Windows è scritto per lo più in C e C++, due linguaggi di programmazioni poco sicuri dal punto di vista della gestione della memoria, ma che offrono agli sviluppatori la possibilità di controllare in dettaglio gli indirizzi di memoria nei quali eseguire il codice. Un piccolo errore nel codice di gestione della memoria da parte degli sviluppatori può portare a una serie di problematiche di sicurezza che gli attacker possono sfruttare con relative pericolose conseguenze che possono ad esempio portare all’esecuzione di codice con privilegi elevati.
I bug di sicurezza relativi alla gestione della memoria sono quelli attualmente più sfruttati dai cybercriminali per sviluppare exploit, vale a dire codice che sfrutta una vulnerabilità di un sistema permettendo l’esecuzione di codice malevolo, generalmente con lo scopo di acquisire i privilegi di amministratore della macchina colpita, ed exploit kit cioè strumenti software che consentono di automatizzare lo sfruttamento di vulnerabilità.
Microsoft ha risolto varie problematiche nella gestione della memoria ma questo non ferma gli attacker nel cercare sempre nuovi modi per scalfire il sistema. Da questo punto di vista sono fondamentali i programmi di bug bounty con i quali le aziende premiano i ricercatori che riescono a individuare falle nel codice. Nessun software è perfetto e immune da bug e iniziative di questo tipo consentono di individuare vulnerabilità che rischiano altrimenti di finire nelle mani di malintenzionati.