Se ti iscrivi alla piattaforma di gioco Steam, potresti aver notato l’ aggiornamento del software del 4 aprile. Ha risolto un bug misterioso che causava il crash del software con pacchetti UDP malformati. Il ricercatore che ha trovato questo difetto, Tom Court, ha pubblicato tutti i dettagli tecnici . Sorpresa: si scopre che questo bug in realtà permetteva di prendere il controllo del PC di qualsiasi utente connesso, e questo durante un periodo che va dal minimo al 2008 fino a luglio 2017. O dieci anni.

Il problema sta nel protocollo Steam, che si basa su UDP. Nella sua implementazione software, un cattivo controllo della lunghezza dei pacchetti ha permesso di provocare un danneggiamento della memoria. Era quindi sufficiente inviare pacchetti UDP malformati al PC dell’utente per eseguire qualsiasi codice.

L’attaccante deve prima analizzare il traffico della vittima

Per avere successo, l’attaccante sarebbe comunque in grado di osservare prima del suo traffico vittima, solo per identificare il numero di indirizzo IP e la porta utilizzata, e il numero di sequenziamento Steam Packet. Questa informazione è necessaria per passare il suo pacchetto dannoso per un pacchetto legittimo al software client.

In un video di YouTube , Tom Court dimostra un simile attacco. Alla fine vediamo i pacchetti inviati per aprire la calcolatrice.

Questo attacco è stato possibile solo fino 11 luglio 2017, data in cui Steam ha integrato nel suo software client una funzione di protezione della memoria chiamata ASLR (Address Space Layout Randomization). Dopo tale data, il danneggiamento della memoria non consentiva più l’esecuzione di codice arbitrario. Potrebbe ancora bloccare il software.

Tom Court sottolinea la fortissima reattività degli sviluppatori di Steam. Avvisati il ​​20 febbraio 2018, hanno sviluppato un cerotto in meno di 12 ore. Ciò che è sfortunato è che un tale errore, dopo tutto piuttosto semplicistico, rimane nel codice per così tanto tempo senza essere visto. Questo è il motivo per cui il ricercatore di sicurezza incoraggia gli sviluppatori a controllare regolarmente il loro vecchio codice e aggiornarlo.