Un grave bug nella libreria glibc, usata in moltissime distribuzioni di Linux, potrebbe permettere l'esecuzione di codice potenzialmente malevolo sulle macchine che usano il sistema operativo del pinguino.
Se la macchina è sotto attacco, infatti, basterebbe cliccare su di un link (anche lecito) o collegarsi a un server sul Web per aprire la porta agli hacker.
GNU C Library (glibc) è una libreria open source molto diffusa che viene usata oltre che su computer di vario tipo, anche su router e altri hardware dedicati, per risolvere i nomi DNS, trasformando i familiari indirizzi Web in indirizzi IP.
In pratica, il bug che è stato riscontrato si attiva quando la funzione getaddrinfo() effettua una richiesta per la trasformazione di un nome DNS e riceve in cambio una quantità di informazioni troppo grande per il suo buffer.
Un tipico caso di buffer overflow, quindi, che coinvolge lo stack dedicato alla ricezione dei dati. Fermin J. Serna, il ricercatore di Google che ha scovato il bug in maniera indipendente dalla stessa scoperta effettuata da un suo collega di Red Hat, ha spiegato sul suo blog:
"glibc riserva per la risposta del DNS 2048 bytes nello stack, usando la funziona allocal() […] se la risposta è più grande dei 2048 byte allocati, viene creato un ulteriore buffer da 2048 byte e tutte le informazioni relative (puntatore al buffer, nuova dimensione del buffer e dimensione della risposta) vengono aggiornate. In alcune circostanze, si verifica una incongruenza tra il buffer e la nuova allocazione, con il risultato che il vecchio buffer viene usato per immagazzinare la risposta anche se le dimensioni sono insufficienti"
Questo, per fortuna, non si traduce automaticamente nell'esecuzione di codice in quanto nei sistemi operativi sono solitamente attivi altri strati di protezione come ASLR (Address Space Layout Randomization) o la protezione contro l'esecuzione del codice proveniente da uno stack.
La quantità di app e sistemi affetti da questo bug è molto elevata e sebbene, come anticipato, questo non porti automaticamente all'esecuzione di codice, non è una bella porta da tenere aperta.
Per questo è il caso di aggiornare il prima possibile tutte le distro Linux, le interfacce di programmazione Python, PHP e Ruby on Rails, molti gestori di Bitcoins e in generale qualsiasi applicazione che si colleghi alla Rete e abbia bisogno di una ricerca DNS.
Gli utenti Android, secondo il ricercatore, non sarebbero interessati da questa falla perché Google ha usato una libreria alternativa a glibc, Bionic, che non presenta questo problema.
Allo stesso modo, molti router e altri piccoli dispositivi sono protetti in quanto usano uclibc, una versione più leggera della stessa libreria che non soffre del bug.
In Rete è stato distribuito un programmino che testa se un problema è vulnerabile o meno ed è liberamente scaricabile dal sito di Github.
Se, per caso, non dovesse essere possibile aggiornare una macchina affetta da questo problema, è possibile evitare brutte sorprese configurando un firewall in modo che vengano "droppate" tutte le risposte UDP DNS più lunghe di 512 byte e limitando la lunghezza di quelle TCP DNS a 1024.
fonte: tomshw