####################################################################### Luigi Auriemma Applicazione: Star Wars Battlefront http://www.lucasarts.com/games/swbattlefront/ Versioni: <= 1.11 Piattaforme: Windows Xbox e Playstation 2 non sono state testate Bugs: A] buffer-overflow limitato del nickname B] crash causato dall'accesso arbitrario alla memoria Exploitation: remota, contro il server (in-game) Data: 24 Novembre 2004 Autore: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduzione 2) Bugs 3) The Code 4) Fix ####################################################################### =============== 1) Introduzione =============== Star Wars Battlefront e' il nuovissimo gioco basato sull'universo di Guerre Stellari, e' sviluppato da Pandemic Studios (http://www.pandemicstudios.com) e pubblicato da LucasArts (http://www.lucasarts.com) ed e' stato rilasciato a Settembre 2004. Questo gioco e' disponibile anche per Xbox e Playstation 2. Il server dedicato per Playstation 2 gira su Windows ed utilizza lo stesso protocollo per far partecipare un giocatore alla partita usato dalla versione PC, infatti l'ho testato ed anche lui e' vulnerabile. Dal momento che non mi e' possibile testare anche queste 2 piattaforme non posso confermare se sono vulnerabili o no. ####################################################################### ======= 2) Bugs ======= ---------------------------------------- A] buffer-overflow limitato del nickname ---------------------------------------- Se un client utilizza un nickname troppo grande viene causato un buffer overflow limitato nel server. "Limitato" in quanto non sembra possibile sovrascrivere zone importanti di memoria e, quindi, eseguire codice remoto. ----------------------------------------------------- B] crash causato dall'accesso arbitrario alla memoria ----------------------------------------------------- Esiste uno strano campo nella richiesta di join usata da questo gioco. Tale campo e' un valore a 32 bits che deve contenere un indirizzo di memoria usato per costruire il seguente messaggio di debug: "player %s had crash at 0x%x\n" dove %s e' proprio la locazione di memoria specificata dal client. L'effetto, naturalmente, e' che un attacker puo' forzare un server a leggere una zona di memoria irraggiungibile causandone il crash immediato. Io non ho la minima idea del perche' sia stato utilizzato un metodo cosi' stupido e pericoloso. Da notare che il server dedicato per Playstation 2 non sembra essere vulnerabile a questo bug. Entrambi questi bugs devono essere considerati in-game bugs (tradotto: se il server e' protetto con una password, l'attacker deve conoscerla), semplicemente perche' il campo password (un checksum a 32 bits) e' controllato prima delle altre informazioni e quindi il pacchetto e' scartato se la password usata dall'attacker e' sbagliata. ####################################################################### =========== 3) The Code =========== http://aluigi.org/fakep/swbfp.zip A] swbfp -s 200 localhost invia un nickname di 200 caratteri al server B] swbfp -m 1234 localhost forza il server a leggere i dati all'offset 1234 (0x000004d2) ####################################################################### ====== 4) Fix ====== No fix. La mia prima mail fu' inviata il 26 Ottobre 2004, gli sviluppatori dissero che avrebbero corretto i bugs ma dopo tutto questo tempo ed il rilascio di 2 patch normali (ossia, non per questi bugs) la situazione e' sconosciuta... inutile chiedere a Pandemic quale sia lo stato della patch, le mie ultime 2 mail "keep-alive" (ossia quelle in cui si chiede lo stato della patch e soprattutto si cerca di capire se gli sviluppatori sono ancora vivi) sono state completamente ignorate. #######################################################################