####################################################################### Luigi Auriemma Applicazione: Netrek http://www.netrek.org Versioni: <= 2.12.0 (Vanilla server) Piattaforme: *nix e Windows Bug: format string Exploitation: remoto (in-game) Date: 02 Mar 2007 Author: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduzione 2) Bug 3) The Code 4) Fix ####################################################################### =============== 1) Introduzione =============== Netrek e' un gioco di strategia in tempo reale ispirato alla saga di Star Trek. ####################################################################### ====== 2) Bug ====== Il server Vanilla e' affetto da una vulnerabilita' di tipo format string causata dalla chiamata della funzione pmessage2() senza l'argomento di formattazione necessario. Il bug si trova in new_warning() e puo' essere sfruttato attraverso il locking di un giocatore (anche lo stesso attacker) che utilizza un nickname malforme. L'opzione EVENTLOG deve essere abilitata per sfruttare questa vulnerabilita' (disabilitata di default). da ntserv/warning.c: void new_warning(int index, const char *fmt, ...) { char temp[150]; va_list args; va_start(args, fmt); vsprintf(temp, fmt, args); ... if (eventlog) { char from_str[9]="WRN->\0\0\0"; strcat(from_str, me->p_mapchars); pmessage2(0, 0, from_str, me->p_no, temp); } ####################################################################### =========== 3) The Code =========== http://aluigi.org/poc/netrekfs.zip ####################################################################### ====== 4) Fix ====== Versione 2.12.1 #######################################################################