####################################################################### Luigi Auriemma Applicazione: Ventrilo http://www.ventrilo.com Versioni: <= 2.3.0 e >= 2.1.2 Piattaforme: Windows (x86), Linux (x86), Solaris (SPARC), Solaris (x86), FreeBSD (x86), NetBSD (x86) e Mac OSX (PPC) Bug: uscita forzata o crash causato da un pacchetto di stato malforme Exploitation: remoto, contro server Data: 23 Aug 2005 Autore: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduzione 2) Bug 3) The Code 4) Fix ####################################################################### =============== 1) Introduzione =============== Ventrilo e' un software VoIP sviluppato da Flagship Industries ed ampiamente conosciuto ed utilizzato in tutto il mondo. Viene utilizzato in particolare per il gioco online. ####################################################################### ====== 2) Bug ====== Oltre alla porta TCP utilizzata per ricevere le connessioni dei clients il server di Ventrilo va' in ascolto anche sulla stessa porta UDP per gestire le richieste di stato per ricavare informazioni e dettagli. Il problema e' nel codice che verifica tali richieste, infatti esiste un controllo per la gestione di possibili dati malformi che interrompe il server quando viene ricevuto un pacchetto contenente una quantita' di dati inferiore a quanto specificato nell'intestazione della query. Per esempio una normale richiesta di informazioni (comando 1 con 16 bytes di dati riportati nell'intestazione) senza dati e' tutto cio' che server per sfruttare questo bug. Sui servers per Windows verra' salvato il seguente messaggio nel file di log: ERROR: ServerLoop exception detected. Aborting. Sulle altre piattaforme (testato Linux x86) invece avviene un crash in free(). Naturalmente e' anche possibile sfruttare il bug anonimamente tramite lo spoofing del mittente del pacchetto malforme. ####################################################################### =========== 3) The Code =========== http://aluigi.org/poc/ventboom.zip ####################################################################### ====== 4) Fix ====== No fix. Sul sito web del vendor non esiste un indirizzo e-mail per riportare i bugs (support, info e bugs infatti non esistono) ed il forum richiede una registrazione quindi, probabilmente, non vogliono essere contattati... Il bug puo' essere evitato settando un filtro nel firewall per rifiutare i pacchetti UDP indirizzati alla porta utilizzata per lo stato (3784 di default, e' la stessa porta utilizzata per accettare i clients). #######################################################################