####################################################################### Luigi Auriemma Applicazione: Scrapland http://www.scrapland.com Versioni: <= 1.0 Piattaforme: Windows Bug: terminazione del server Exploitation: remoto, contro il server (parzialmente in-game) Data: 28 Feb 2005 Autore: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduzione 2) Bug 3) The Code 4) Fix ####################################################################### =============== 1) Introduzione =============== Scrapland e' il famoso gioco sviluppato da MercurySteam Entertainment (http://www.mercurysteam.com) con il supporto creativo di American McGee (http://www.americanmcgee.com). E' pubblicato da Enlight (http://www.enlight.com) ed e' stato rilasciato all'inizio del 2005. ####################################################################### ====== 2) Bug ====== Il problema principale del gioco e' che il server termina per qualsiasi errore invece di mostrare semplicemente il messaggio di errore nella console di gioco e continuare il proprio lavoro. Cio' fa' si che un attacker possa far crashare facilmente un server in diversi modi, alcuni dei quali sono: - size>SSize: il gioco utilizza dei numeri ad 8 bits per specificare la lunghezza dele stringhe di testo contenute nei pachetti. Tali numeri ad 8 bits sono gestiti come interi con segno quindi qualsiasi numero piu' grande di 127 causa l'errore del server. - modello inesistente: se il client utilizza un modello (come il motore, il pilota od il giocatore) non disponibile sul server, quest'ultimo terminera' dicendo che il modello specificato dal client non e' stato trovato. - newpos<=size: un altro tipo di errore. - violazione di accesso causato dalla ricezione di due pacchetti parziali. Se il server e' pieno, non e' possible farlo terminare. ####################################################################### =========== 3) The Code =========== http://aluigi.org/poc/scrapboom.zip ####################################################################### ====== 4) Fix ====== No fix. Nessuna risposta dagli sviluppatori. #######################################################################