####################################################################### Luigi Auriemma Applicazione: Liero Xtreme http://lieroxtreme.thegaminguniverse.com Versioni: <= 0.62b Piattaforme: Windows Bugs: A] server crash/freeze B] format string nella funzione di visualizzazione Exploitation: A] remoto, contro server B] locale/remoto, contro clients Data: 06 Mar 2006 Autore: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduzione 2) Bugs 3) The Code 4) Fix ####################################################################### =============== 1) Introduzione =============== Liero Xtreme (aka Lierox) e' un clone freeware del gioco classico per DOS chiamato Liero, ed e' principalmente concentrato sulla possibilita' di espandere e customizzare il gioco attraverso mods, livelli e skins. Sono supportati sia il multiplayer via LAN che Internet (tramite il master server). ####################################################################### ======= 2) Bugs ======= ---------------------- A] server crash/freeze ---------------------- Il server puo' essere congelato o crashato utilizzando una lunga stringa con il comando "connect". Il problema e' causato dalle istruzioni usate dal gioco per gestire i dati di questo comando che in alcuni casi portano all'immediato crash del server od un ciclo che congela il gioco. -------------------------------------------------- B] format string nella funzione di visualizzazione -------------------------------------------------- La funzione del client che visualizza i messaggi a schermo (0x004052d0) e' vulnerabile ad un bug di tipo format string che puo' essere usato per eseguire codice malevolo. Esistono diversi modi per sfruttare questo bug ma i piu' interessanti sono i seguenti: - entrare in un server utilizzando un nickname formattato a modo (come %n%n%n%n o %02000xand) che sara' visualizzato da tutti i clients nel server e da tutti i successivi clients che entreranno nel server mentre l'attacker sta' giocando. In questo tipo di attacco se il server e' protetto da password l'attacker deve conoscere la parola chiave. - avviare un server dedicato visibile sul master server (default) con un nome formattato, cosi' qualsiasi client che provera' ad entrare nel menu "Join Internet Server" sara' attaccato immediatamente. - creare un livello (estensione .lxl) con un nome mappa formattato. A causa della propensione del gioco verso il modding anche questo attacco e' molto buono. ####################################################################### =========== 3) The Code =========== http://aluigi.org/poc/lieroxxx.zip Per il bug B il mio proof-of-concept utilizza solo il primo metodo che ho spiegato, per gli altri due basta solo: - aprire il file config\config.cfg e aggiungere %03000x dove viene scelto il nome del server (Server.Name), dopodiche' lanciare il server dedicato - prendere il file "userdata\levels\Dirt Level.lxl" e sovrascrivere i bytes all'offset 36 con la stringa %03000x ####################################################################### ====== 4) Fix ====== No fix. Nessuna risposta dagli sviluppatori. #######################################################################