####################################################################### Luigi Auriemma Applicazione: GGZ Gaming Zone http://www.ggzgamingzone.org Versioni: <= 0.0.12 Piattaforme: Windows, *nix, *BSD ed altre Bug: disconnessione dei clients attramers dati XML malformati Exploitation: remoto, contro clients Data: 12 Mar 2006 Autore: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduzione 2) Bug 3) The Code 4) Fix ####################################################################### =============== 1) Introduzione =============== GGZ Gaming Zone (GGZ) e' un sistema open source per chattare e giocare online. A scapito del numero di versione il progetto esiste da molto tempo, e' seguito da una discreta comunita' e supporta molti giochi: http://www.ggzgamingzone.org/software.php ####################################################################### ====== 2) Bug ====== Tutto il protocollo di GGZ e' basato su XML. Nonostante il software rigetti i caratteri problematici per evitare XML malformato o XML injection, esistono alcuni modi per bypassare questi controlli. Il primo e' attraverso l'uso del carattere apice ' alla fine del nickname passato dal client a login. Quando questo attacker entra in una stanza gli altri clients ricevono una stringa XML simile alla seguente: I clients si disconnetteranno immediatamente. Inoltre se il nickname e' piu' lungo di 16 caratteri o contiene dei caratteri problematici (come l'apice ' ma non alla fine) verra' sostituito dal server con . Questo nickname di default causa lo stesso effetto spiegato prima, infatti quando l'attacker invia un messaggio od esce dalla stanza, gli altri clients considerano i dati XML ricevuti come malformati e si disconnettono: L'ultimo problema invece e' causato dalla funzione snprintf() usata dal server che troca i messaggi ed i successivi delimitatori XML a 4096 bytes. Quando un attacker invia un messaggio troppo grande gli altri client non ricevono il delimitatore finale "]]>" in quanto e' stato cancellato dal server con snprintf(): ####################################################################### =========== 3) The Code =========== http://aluigi.org/poc/ggzcdos.zip ####################################################################### ====== 4) Fix ====== No fix. I problemi saranno corretti quando in futuro verra' adottata una libreria XML. #######################################################################