####################################################################### Luigi Auriemma Applicazione: - Etherlords I http://www.etherlords.com/etherlords1/ - Etherlords II http://www.etherlords.com Versioni: Etherlords I <= 1.07 Etherlords II <= 1.03 Piattaforme: Windows Bug: lettura di memoria non allocata (crash) Exploitation: remoto, verso server e client Data: 25 Mar 2004 Autore: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduzione 2) Bug 3) The Code 4) Fix ####################################################################### =============== 1) Introduzione =============== Etherlords e' un gioco 3D a turni sviluppato da Nival (http://www.nival.com) e pubblicato da Fishtank Interactive (http://www.fishtankgames.de) e Strategy First (http://www.strategyfirst.com). Etherlords I venne rilasciato a Novembre 2001 mentre il secondo gioco e' stato rilasciato ad Ottobbre 2003. ####################################################################### ====== 2) Bug ====== Il pacchetto segnato dal numero 3 di solito e' inviato dal server al client e contiene un valore a 16 bit all'offset 9 usato per specificare la grandezza del blocco dati che lo segue. Se tale numero e' troppo grande il gioco leggera' anche la memoria non allocata dopo il pacchetto e crashera' immediatamente. L'istruzione memcpy() che segue proviene da Etherlords II 1.03 ed e' proprio ove si verifica il bug: :0076FD4B C1E902 shr ecx, 02 :0076FD4E F3A5 rep movsd :0076FD50 8BCA mov ecx, edx :0076FD52 83E103 and ecx, 003 :0076FD55 F3A4 rep movsb La cosa interessante e' che il pacchetto 3 puo' anche essere usato contro lo stesso server che infatti lo gestira' come fa' il client e crashera'. ####################################################################### =========== 3) The Code =========== http://aluigi.org/poc/ethboom.zip ####################################################################### ====== 4) Fix ====== No fix. Nessuna risposta dagli sviluppatori. #######################################################################