####################################################################### Luigi Auriemma Applicazione: Winamp http://www.winamp.com e http://classic.winamp.com Versioni: Winamp 2.91 usando IN_MIDI.DLL 3.01 (Winamp 3 crasha ma non ho trovato metodi per eseguire codice) Piattaforme: Windows Bugs: Esecuzione di codice attraverso file MIDI malformati alcuni limiti) Date: 08 Sep 2003 Autore: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduzione 2) Bug 3) Il Codice 4) Fix ####################################################################### =============== 1) Introduzione =============== Probabilmente Winamp e' il player di file multimediali piu' famoso per i sistemi Win32. Supporta moltissimi formati soprattutto grazie ai fans che scrivono i plugins per questo magnifico programma. Un aneddoto divertente riguardo il bug che ho trovato e' che tale bug in realta' lo trovai circa 9 mesi fa' (inizio Gennaio 2003) ma pensavo non fosse molto interessante e cosi' lo dimenticai sul mio hard-disk per molto tempo... ####################################################################### ====== 2) Bug ====== Winamp 2.91 usa un plugin di default chiamato IN_MIDI.DLL ed e' usato appunto per gestire i files MIDI. Le versioni uguali e precedenti alla 3.01 di tale plugin permettono all'attacker di eseguire codice sulla vittima semplicemente settando il valore "Track data size" di un file MIDI a 0xffffffff. Esempio: 4 bytes MIDI Header "MThd" 4 bytes Header data size 00000006 2 bytes Format 0000 2 bytes Number of tracks 0001 2 bytes Divisions 0001 4 bytes Track Header "MTrk" 4 bytes Track data size ffffffff <--- bug ... "aaaaaaaaaaaaaaaaaaaaa..." <--- yeah! Una cosa importante (ed anche l'unico limite per l'attacker) e' che non esiste un unico modo per sfruttale questa vulnerabilita' ma l'esecuzione di codice e' direttamente correlata al metodo usato dall' utente per aprire il file e dalla periferica MIDI usata: drag'n'drop, normale apertura del file, midiOut e DirectMusic. Un altra nota e' che l'esecuzione di codice non avviene sempre nello stesso momento che il file e' aperto o avviato, infatti puo' avvenire anche dopo la seconda eccezione o quando Winamp viene chiuso (anche cio' dipende dalle 4 opzioni di prima). Winamp3 sembra essere parzialmente vulnerabile ma non ho trovato un metodo per sovrascrivere l'indirizzo di ritorno o passare un mio indirizzo al flusso di codice. ####################################################################### ============ 3) Il Codice ============ No exploit. ####################################################################### ====== 4) Fix ====== Nullsoft e' stata contattata un sacco di volte per oltre un mese ma nessuno mi ha risposto o ha corretto il plugin MIDI. Comunque gli effetti del bug limitano il suo sfruttamento, quindi per basta semplicemente usare un altro player per ascoltare i file MIDI fino a che non verra' rilasciata una patch per Winamp. #######################################################################