###################################################################### Luigi Auriemma Applicazione: Blade encoder (http://bladeenc.mp3.no) Versioni: 0.94.2 e precedenti Piattaforme: Tutte le piattaforme supportate dal programma Bugs: Utilizzo di un numero intero per posizionarsi nei files codice sulla vittima Date: 02 Feb 2003 Autore: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ###################################################################### 1) Introduzione 2) Bug 3) Il Codice 4) Fix ###################################################################### =============== 1) Introduzione =============== Blade encoder e' un eccellente encoder mp3 OpenSource che lavora in console ed e' multipiattaforma. Sfortunamente non e' piu' supportato dal suo autore, di conseguenza al momento l'unica patch disponibile e' quella nella sezione "Fix" di questo advisory. ###################################################################### ====== 2) Bug ====== Il bug e' causato dall'utilizzo di un numero intero con segno per muoversi all'interno dei files dopo che il programma legge la grandezza del wave chunk "fmt ". Esattamente il problema e' localizzato nell'uso della variabile int "offset" nella funzione myFseek alla fine del file samplein.c. ###################################################################### ============ 3) Il Codice ============ Ho scritto un semplice file wave che mostra un messaggio nella console quando il programma e' lanciato (bladeenc blade586-942.wav). L'exploit e' stato scritto per girare SOLO sulla versione precompilata del programma per Windows su i586 (http://www2.arnes.si/~mmilut/BEnc-0942-Win-i586.zip). Il proof-of-concept e' stato scritto per girare su Win98 solamente! http://aluigi.org/poc/blade586-942.wav ###################################################################### ====== 4) Fix ====== Come detto nell'introduzione questo buon programma non e' piu' supportato, comunque la patch e' molto molto semplice e facile da applicare a tutte le versioni di Bladeenc semplicemente perche' la funzione da patchare e' l'ultima nel file samplein.c bladeenc/samplein.c ------------------- ... 619 char dummy[256]; 620 //PATCH 621 offset = abs(offset); 622 //PATCH 623 624 while (offset >= 256) ... ------------------- Altre idee? ######################################################################