Analisi: Internet Explorer 0-day di dicembre 2008

di: Giovanni Tugnolo     04 Febbraio 2009

Lo scorso Dicembre, Microsoft è stata costretta a fronteggiare una pericolosa vulnerabilità di livello zero-day che ha colpito il browser web Internet Explorer, largamente il più utilizzato sul Web.

Con zero-day si intende una vulnerabilità per la quale, una volta scoperta pubblicamente, sono già disponibili exploit in grado di sfruttarla. La vulnerabilità viene quindi giudicata come "estremamente grave" da Secunia, e anche se inizialmente sembrava coinvolgere unicamente IE7 e sfruttabile unicamente via Web, il problema si è poi allargato anche alle versioni meno recenti del browser (IE5.01, IE6.x) e alla Beta di IE8, in postazioni Windows aggiornate (XP SP3 e SP2, 2003 Server SP1 e SP2, 2008 Server, Vista Gold e SP1) e a vettori d'attacco trasversali, come dei controlli ActiveX in un documento Word.

I primi exploit erano già attivi il 9 dicembre scorso, e hanno avuto modo di colpire almeno fino al 17 dicembre, data in cui Microsoft ha rilasciato le patch necessarie a correggere il problema. Come spesso accade in scenari simili, sono stati migliaia i siti compromessi in quel periodo: TrendMicro parlava di 6000 siti web infetti in meno di una settimana, e di numeri - ovviamente - destinati a crescere. I primi attacchi si sono verificati in Oriente, in particolare in Cina, e coinvolgevano la versione più utilizzate del browser, ovvero IE7.

Approfondiamo il carattere di questa vulnerabilità.

XML Parsing Buffer Overflow

La vulnerabilità è dovuta a una possibile corruzione della memoria durante il processo di DHTML Data Binding offerto da Explorer, una funzione che ottimizza i tempi di rendering delle pagine rappresentando il contenuto di file XML come oggetti in memoria. Il modo in cui il browser implementa il data binding, funzione attiva di default nel programma, può portare a rilasciare un oggetto senza aggiornare le dimensioni dell'array, lasciando la possibilità di portare a termine un attacco di heap overflow referenziando successivamente quella zona di memoria. In questo modo è possibile far eseguire codice arbitrario sulla macchina della vittima, con i privilegi relativi all'utente loggato. La porzione di codice vulnerabile è contenuta nel file MSHTML.DLL.

Dopo aver ottenuto accesso alla memoria, ad esempio attraverso heap spray, una tecnica che appare sempre più utilizzata nelle vulnerabilità di Internet Explorer, il codice arbitrario può essere iniettato attraverso un documento XML creato ad arte per contenere elementi SPAN nidificati. Un esempio pratico è reperibile ad esempio su milw0rm.

Una qualunque pagina web può sfruttare questa vulnerabilità silenziosamente, con un po' di javascript e del codice XML opportunamente inserito in un iframe. I primi esemplari di siti infetti sfruttavano la cosa per far scaricare all'utente il trojan Downloader-AZN, che a sua volta si occupava di scaricare una lista di malware da installare sulla macchina, oltre a modificare il file HOSTS (rendendo inaccessibili alcuni nomi di dominio) e a cercare di interrompere l'esecuzione di alcuni processi, tra cui alcuni concernenti l'antivirus Kaspersky.

Guide Sicurezza

Guida SQL Injection con Sqlmap

Scopriamo se le nostre applicazioni web sono vulnerabili alle SQL...

Guida sicurezza applicazioni Web

Le tecniche di attacco più comuni, i metodi per verificare la...

Guida Sicurezza wireless

Quali sono i pericoli di sicurezza di una rete senza filo e quali...

Altre guide

Newsletter @Sicurezza

Ogni lunedì, direttamente nella tua e-mail: approfondimenti e bollettini su virus, vulnerabilità e sicurezza informatica.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto