####################################################################### Luigi Auriemma Applicazione: DUMB - Dynamic Universal Music Bibliotheque http://dumb.sourceforge.net Versioni: <= 0.9.3 and current CVS Piattaforme: Windows, *nix, *BSD ed altre Bug: heap overflow in it_read_envelope Exploitation: locale Data: 16 Jul 2006 Autore: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduzione 2) Bug 3) The Code 4) Fix ####################################################################### =============== 1) Introduzione =============== DUMB e' una libreria open source per la lettura dei formati musicali IT, XM, S3M e MOD. ####################################################################### ====== 2) Bug ====== it_read_envelope e' la funzione chiamata da it_read_instrument per la lettura dei valori di envelope usati per il volume, pan e pitch di ogni strumento del file IT (Impulse Tracker) se e' di versione uguale o maggiore alla 0x200. La funzione legge un valore ad 8 bit (envelope->n_nodes) che descrive il numero di nodi nell'envelope e dopodiche' inizia la loro lettura usando 8 bit per node_y e 16 per node_t. Il problema e' che sia node_y che (soprattutto) node_t hanno una grandezza fissa di 25 elementi allocati quando viene letto il numero di strumenti nel file IT all'inizio. La memoria allocata e' quella della struttura IT_INSTRUMENT che gia' contiene le tre strutture IT_ENVELOPE usate appunto per volume, pan e pitch. La quantita' di dati necessaria per causare l'overflow della memoria allocata e' di circa 371 bytes, dalla fine di pitch_envelope alla fine di map_sample, cio' significa che e' necessario specificare almeno 213 n_nodes per causare l'heap overflow. ####################################################################### =========== 3) The Code =========== http://aluigi.org/poc/dumbit.zip ####################################################################### ====== 4) Fix ====== Il bug verra' corretto nelle versioni future. #######################################################################