####################################################################### Luigi Auriemma Applicazione: Need for Speed Hot Pursuit 2 http://www.eagames.com/pccd/nfshp2/home.jsp Versioni: <= 242 Piattaforme: Windows Bug: buffer-overflow nel client Exploitation: remoto Data: 22 Jan 2004 Autore: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduzione 2) Bug 3) The Code 4) Fix ####################################################################### =============== 1) Introduzione =============== Need for Speed Hot Pursuit 2 (NFSHP2) e' un bel gioco di corse automobilistiche sviluppato da Blackboxgames (http://www.blackboxgames.com) e pubblicato da Electronic Arts (http://www.ea.com). E' stato rilasciato ad Ottobre 2002. ####################################################################### ====== 2) Bug ====== Il client di NFSHP2 e' vulnerabile ad un buffer-overflow causato da una stringa stroppo grande nelle informazioni inviate dal server. Le richieste di informazioni sono fatte automaticamente da ogni client che entra nella sezione Multiplayer del gioco, ogni pacchetto verra' infatti inviato a tutti i servers trovati nella lista del master server e poi i clients aspetteranno le risposte. Il problema e' proprio in tali risposte ed esattamente nei valori dopo i seguenti parametri: gamename, gamever, hostname, gametype, mapname e gamemode La seguente e' una delle porzioni di codice vulnerabile che permette il verificarsi del buffer-overflow, proveniente direttamente da l'eseguibile decodificato di NFSHP2 242: :0050558D 6814206E00 push 006E2014 :00505592 6800E86900 push 0069E800 ("mapname") :00505597 56 push esi :00505598 E873930000 call 0050E910 :0050559D 83C40C add esp, 0000000C :005055A0 8D9344010000 lea edx, dword[ebx+00000144] :005055A6 8A08 mov cl, byte[eax] :005055A8 40 inc eax :005055A9 880A mov byte[edx], cl :005055AB 42 inc edx :005055AC 84C9 test cl, cl :005055AE 75F6 jne 005055A6 Semplice spiegazione: - il codice cerca la stringa "mapname" nel pacchetto - inizia a copiare il valore dopo "mapname" in un nuovo buffer piu' piccolo Come detto prima, i clients richiedono informazioni ai servers in modo automatico il che significa che se esiste almeno un server fasullo creato da un attacker nessuno potra' giocare online e soprattutto l'attacker ha la possibilita' di prendere il controllo od eseguire codice su tutti i clients esistenti. ####################################################################### =========== 3) The Code =========== http://aluigi.org/poc/nfshp2cbof.zip ####################################################################### ====== 4) Fix ====== Nessun fix. Sfortunatamente (come notato da altri ricercatori in passato) Electronic Arts ha un supporto davvero orrendo, non ci sono indirizzi e-mail per segnalare bugs ed il form web (l'unica via possibile) e' completamente inutile. Ho cercato anche di contattare ripetutamente il supporto tecnico ed alcuni sviluppatori di Blackboxgames (girando su Google alla ricerca di indirizzi e-mail) ma non ho ricevuto alcuna risposta. Il tempo non corregge i bugs, le persone si. #######################################################################