####################################################################### Luigi Auriemma Applicazione: Yager http://www.yager-game.de Versioni: <= 5.24 Piattaforme: Windows Bugs: A] nickname buffer-overflow B] data block buffer-overflow C] congelamento causato da blocco dati incompleto D] vari crash causati da dati corrotti Exploitation: remoto, contro server e clients Data: 14 Apr 2005 Autore: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduzione 2) Bugs 3) The Code 4) Fix ####################################################################### =============== 1) Introduzione =============== Yager e' un gioco di combattimenti aerei futuristico sviluppato da Yager Development (http://www.yager.de) e pubblicato da THQ (http://www.thq.de) e DreamCatcher Interactive (http://www.dreamcatchergames.com). Il gioco e' stato rilasciato a Settembre 2003. Nota: questo gioco utilizza il multiplayer soltanto via LAN ed IP diretto quindi non esiste un master server con la lista di servers online (contrariamente a quasi tutti i giochi multiplayer esistenti). ####################################################################### ======= 2) Bugs ======= --------------------------- A] nickname buffer-overflow --------------------------- Il gioco e' vulnerabile ad un buffer-overflow nel campo del nickname (ID 0x1e) che puo' essere sfruttato da un attacker per eseguire codice malevolo. ----------------------------- B] data block buffer-overflow ----------------------------- Il buffer utilizzato per ricevere i dati dal socket e' di 256 bytes mentre la massima grandezza di un blocco dati e' 65536 (un numero a 16 bit), tale situazione genera un buffer-overflow. ------------------------------------------------- C] congelamento causato da blocco dati incompleto ------------------------------------------------- Il server ed i clients ad esso connessi possono essere facilmente congelati con l'invio di dati incompleti. Il problema e' che il gioco e' sincronizzato con la ricezione dei dati dalla rete e quindi si blocca sino al completo ricevimento dei dati attesi. Per esempio, l'intestazione del blocco dati e' di 10 bytes quindi se noi ne inviamo 9 o meno saremo capaci di bloccare l'intero gioco. -------------------------------------- D] vari crash causati da dati corrotti -------------------------------------- Il gioco non utilizza abbastanza controlli per verificare la correttezza dei dati ricevuti quindi e' possibile causare vari tipi di crash attraverso l'utilizzo di dati modificati. ####################################################################### =========== 3) The Code =========== http://aluigi.org/poc/yagerbof.zip ####################################################################### ====== 4) Fix ====== No fix. Una patch dovrebbe essere rilasciata presto. #######################################################################