####################################################################### Luigi Auriemma Applicazione: Amp II 3D engine http://www.4drulers.com/amp.html Versioni: qualsiasi versione dal momento che nessuna patch e' al momento disponibile Giochi: Gore: Ultimate Soldier <= 1.50 ... possibly others ... Piattaforme: Windows Bug: socket irraggiungibile Exploitation: remoto, contro il server Data: 06 Gen 2005 Autore: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduzione 2) Bug 3) The Code 4) Fix ####################################################################### =============== 1) Introduzione =============== L'Amp II engine e' un motore di gioco sviluppato da 4d Rules (http://www.4drulers.com) e Slam Software (http://www.slamsoftware.com). L'unico gioco rilasciato usanto tale motore sembra essere Gore (http://www.4drulers.com/gore/) datato Giugno 2002. ####################################################################### ====== 2) Bug ====== Il codice usato dal motore per la gestione dei pacchetti UDP e' simile al seguente: if(select(sock, &read_set, NULL, NULL, &timeout_zero) < 0) socket_error(); ... if(ioctlsocket(sock, FIONREAD, &packet_length) < 0) socket_error(); if(packet_length) { // read socket data } Il problema e' proprio nel controllo if(packet_length) (che significa "se packet_length e' diverso da zero") perche' FIONREAD e' utilizzato per ricavare l'esatta quantita' di dati nella coda del socket quindi se un attacker invia un pacchetto UDP di zero bytes al server, packet_length continuera' ad essere uguale a zero ed il controllo if(packet_length) verra' ingannato entrando in un loop infinito che gestira' sempre lo stesso pacchetto UDP vuoto ma senza leggerne il contenuto e liberare la coda del socket. In breve, un pacchetto UDP di zero bytes e' capace di interrompere silenziosamente il match sul server. ####################################################################### =========== 3) The Code =========== http://aluigi.org/poc/amp2zero.zip ####################################################################### ====== 4) Fix ====== L'Amp II engine non e' piu' supportato e probabilmente verra' rilasciata una patch per Gore in futuro. #######################################################################