####################################################################### Luigi Auriemma Applicazione: RogerWilco (http://www.rogerwilco.com) Versioni: 1.4.1.2 (buffer-overflow del server e del client) 1.4.1.6 (server freeze bug; crash del server e client) Piattaforme: Windows Bugs: crash, buffer-oveflow e freeze temporaneo Date: 08 Sep 2003 Autore: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduzione 2) Storia 3) Bugs 4) Il Codice 5) Fix ####################################################################### =============== 1) Introduzione =============== RogerWilco e' un programma per chattare in tempo reale sviluppato da Gamespy. Oltre 2 mesi fa' rilasciai un advisory riguardante dei bugs trovati nella precedente versione del 2001 di tale programma ed ora dopo questo tempo sono alle prese con un advisory riguardo vulnerabilita' simili... ####################################################################### ========= 2) Storia ========= La storia recente delle vulnerabilita' di RogerWilco e' composta da circa 3 versioni: MkId3: rilasciata nel 2001, e' stata l'ultima sino all'estate 2003 1.4.1.2: versione rilasciata per correggere i bugs che trovai nella precedente versione del 2001 (sfortunatamente uno di questi bugs non fu' realmente corretto) 1.4.1.6: la versione "remixata" del 2001 (?) Pima del rilascio della versione 1.4.1.2, i programmatori di Gamespy mi inviarono una beta. Tale versione correggeva PIENAMENTE i bugs trovati nella versione 2001. Dopo alcuni giorni la versione 1.4.1.2 venne rilasciata pubblicamente. Decisi quindi di darvi ugualmente un'occhiata e trovai una sorpresa. Usando un nickname piu' lungo (circa il doppio di quello usato per la versione 2001) si causa un buffer overflow nel server ed un broadcast buffer overflow verso tutti i clients 1.4.1.2 se l'attacco viene lanciato contro un server dedicato. Infatti il server dedicato non e' mai stato vulnerabile (il problema ha sempre interessato solo il client/server grafico) e quindi cio' che fa' e' semplicemente inoltrare il pacchetto malformato a tutti i clients connessi. Naturalmente contattai velocemente Gamespy riportando il problema. Nessuno mi ricontatto' ma l'8 Luglio 2003 una nuova versione (1.4.1.6) venne rilasciata. Non la testai subito in quanto avevo abbandonato temporaneamente la ricerca di bugs su tale applicazione, ma dopo circa 2 settimane decisi di testare questa versione. Incredibilmente la versione 1.4.1.6 e' molto simile quella del 2001 ma con alcune differenze. Una di queste differenze infatti e' l'assenza del vecchio broadcast buffer overflow ed il suo rimpiazzo con un crash causato da un nickname grande almeno 33 bytes. Cio' che mi fa' pensare che tale versione in realta' sia una modifica di quella del 2001 e' una prova evidente: il freeze bug esistente anche nella versione del 2001 che fu' corretto nella 1.4.1.2... Quindi ricontattai Gamespy ancora una volta richiedendo spiegazioni ed anche riportando nuovamente i problemi e finalmente dopo alcuni giorni gli sviluppatori dissero che stavano lavorando ad una patch. Aspetto, aspetto ed aspetto ancora ma dopo oltre un mese nessuno mi ha ricontattato e nessuna nuova versione di RogerWilco e' stata rilasciata. ####################################################################### ======= 3) Bugs ======= Nota importatne: ---------------- Il server dedicato (RWBS) NON e' vulnerabile a questi bugs. Comunque se viene utilizzato un server dedicato, esso inoltrera' i pacchetti ricevuti dall'attacker a tutti i clients connessi. Quindi chiunque si ritrovera' a chattare su quel server ricevera' il pacchetto malformato e sara' vulnerabile all'attacco. Gli unici limiti per l'attacker sono la password del server (se essa e' usata e l'attacker non la conosce) ed il canale che e' richiesto come target dell'attacco. 1.4.1.2: -------- La versione 1.4.1.2 e' vulnerabile ad un buffer-overflow che avviene quando un nickname grande 1022 bytes (nella versione 2001 doveva essere 516 bytes) e' inviato al server ma fortunatamente il crash avviene prima dell'inoltre del nickname agli altri clients (mentre nella versione 2001 l'inoltro avveniva prima causando un danno maggiore). 1.4.1.6: -------- Il crash nella versione 1.4.1.6 avviene in NETWORK.DLL quando viene inviato un nickname di almeno 33 bytes. Non sembra essere possibile eseguire codice remoto ma solo crashare il server o i clients 1.4.1.6 connessi ad un server dedicato. L'altro bug e' il vecchio freeze bug del server gia' visto nella versione 2001 (http://aluigi.org/adv/wilco-adv.txt). ####################################################################### ============ 4) Il Codice ============ Sono dispobili 2 nuove opzioni nel mio programma per testare le vulnerabilita' di RogerWilco: http://aluigi.org/poc/wilco.zip ####################################################################### ====== 5) Fix ====== Gamespy e' stata contattata molte volte ma non vogliono o non sanno correggere tali bugs. Suggerisco a chi usa tale programma di settare -=SEMPRE=- una password per il server e di fornirla solo a persone fidate in quanto l'attacker deve avere accesso al server per sfruttare le vulnerabilita'. #######################################################################