####################################################################### Luigi Auriemma Applicazione: Serious Sam engine http://www.seriousengine.com Versioni: Versioni che usano il protocollo TCP per il multiplayer: - SeriousSam: the First Encounter <= 1.05 - SeriousSam: the Second Encounter <= 1.05 (1.07 NON e' vulnerabile) - Demo di Serious Sam test 2 2.1a ed i demo del Second encounter (certo, sono dei demo ma ci sono persone che li usano) - probabilmente anche altri giochi basati su tale motore ma non ho potuto testarli Piattaforme: Windows Bug: Crash remoto causato da dati malformati Date: 30 Oct 2003 Autore: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduzione 2) Bug 3) The Code 4) Fix ####################################################################### =============== 1) Introduzione =============== Il motore di Serious Sam e' il grandioso motore di gioco sviluppato da Croteam. I giochi basati su tale motore sono "Serious Sam: the first encounter", "Serious Sam: the second encounter", "Deer Hunter 2003" e "Carnivores: Cityscape" (altri?). Come gia' detto nell'intestazione di questo advisory, SOLO i giochi o le versioni del motore che usano il protocollo TCP sono vulnerabili, infatti la versione 1.07 di "Serious Sam: the second encounter" (patch rilasciata oltre un anno e mezzo fa) rende il gioco incompatibile con le vecchie versioni proprio perche' viene usato l'UDP anziche' il TCP. Tale versione NON e' vulnerabile. Ho testato anche la versione Linux beta di "Serious Sam: the first encounter" la quale usa l'UDP ed infatti NON e' vulnerabile (invece la versione Win32 usa il TCP e quindi E' vulnerabile). ####################################################################### ====== 2) Bug ====== Il bug e' un crash od un freeze remoto del server causato da un parametro malformato nei dati inviati dal client. Il seguente e' un esempio dei dati originali: "\x1f\x00\x00\x00" "\x40\xE1\xDE\x03\xFB\xCA\x2A\xBC\x83\x01\x00\x00\x07\x47\x41\x54" "\x56\x10\x27\x00\x00\x05\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01" "\x00\x00\x00\xA0\x0F\x00\x00\x64\x00\x00\x00" Il primo parametro, 0x0000001f, probabilmente si riferisce alla dimensione dei dati che seguono o qualcosa di simile e se lo si modifica il server avra' diversi effetti "negativi". Per esempio valori oltre 0x8100000000 crashano il server ed altri valori come 0xfffffff0 invece lo bloccano. ####################################################################### =========== 3) The Code =========== http://aluigi.org/poc/ssboom.zip ####################################################################### ====== 4) Fix ====== - "Serious Sam: the first encounter": Nessun fix. Ho provato a contattare Croteam senza successo, inoltre sembra che tale gioco non sia piu' supportato. - "Serious Sam: the second encounter": Basta semplicemente usare la patch 1.07 gia' disponibile da lungo tempo. Durante i miei test ho visto (e non soltanto visto eh eh eh) un sacco di persone che usano ancora la versione 1.05, quindi non perdere tempo ed aggiorna questo fantastico gioco!!! - Altri giochi basati sul motore di Serious Sam: Non possiedo e non ho potuto testare altri giochi (cause: nessun demo disponibile o il demo non supporta il multiplayer o non c'erano servers online) quindi non posso essere sicuro se sono vulnerabili o no. #######################################################################