####################################################################### Luigi Auriemma Applicazione: Freeciv http://www.freeciv.org Versioni: <= 2.0.7 Piattaforme: Windows, *nix, *BSD, MacOS ed altre Bug: errata allocazione di memoria Exploitation: remoto, contro server Data: 06 Mar 2006 Autore: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduzione 2) Bug 3) The Code 4) Fix ####################################################################### =============== 1) Introduzione =============== Freeciv e' un clone open soure del gioco Civilization. Il gioco supporta anche il multiplayer online attraverso il suo metaserver (che puo' essere visto anche sul web) e GGZ (http://www.ggzgamingzone.org). ####################################################################### ====== 2) Bug ====== Freeciv supporta sia i dati in chiaro che compressi (gli amministratori possono disabilitare questa funzione solo ricompilando il server dal codice sorgente con USE_COMPRESSION non definito). Quando il server riceve un dato jumbo (ossia con un valore 0xffff) legge il successivo numero a 32 bits che specifica l'ammontare di dati compressi. Dopodiche' il server effettua una comparazione con segno per sapere se la quantita' di dati compressi e' maggiore di quanto e' stato ricevuto, se il client specifica un numero negativo sara' quindi capace di eludere questo controllo. Dopo aver sottratto 6 bytes (header size) dalla quantita' di dati compressi specificata dal client il server prova ad allocare la memoria necessaria alla decompressione dei dati che e' fissa a 100 volte tale valore. Se la memoria non puo' essere allocata il server termina o si congela mostrando un messaggio di out of memory. ####################################################################### =========== 3) The Code =========== http://aluigi.org/poc/freecivdos.zip ####################################################################### ====== 4) Fix ====== Versione 2.0.8 #######################################################################