#######################################################################
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.
#######################################################################