####################################################################### Luigi Auriemma Applicazione: Aqualung http://aqualung.sourceforge.net Versioni: <= 0.9beta5 e CVS <= 0.193.2 Piattaforme: *nix Bug: buffer-overflow in meta_read_flac Exploitation: locale Data: 09 Aug 2006 Autore: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduzione 2) Bug 3) The Code 4) Fix ####################################################################### =============== 1) Introduzione =============== Aqualung e' un player musicale per Linux creato con in mente un playback senza salti tra le tracce. ####################################################################### ====== 2) Bug ====== Il programma e' affetto da un buffer-overflow situato nella funzione meta_read_flac che gestisce i commenti Vorbis dei file FLAC. Il problema e' nella gestione del tag vendor che viene copiato nel buffer field di 1024 (MAXLEN) bytes senza controllare la grandezza del buffer di destinazione (un controllo che invece viene fatto per tutte le altre operazioni di copia). Da meta_decoder.c: void meta_read_flac(metadata * meta, FLAC__StreamMetadata * flacmeta) { char field[MAXLEN]; char str[MAXLEN]; int i,j,k; ... for (j = 0; j < flacmeta->data.vorbis_comment.vendor_string.length; j++) { field[j] = flacmeta->data.vorbis_comment.vendor_string.entry[j]; } field[j] = '\0'; ... ####################################################################### =========== 3) The Code =========== http://aluigi.org/poc/aquabof.zip ####################################################################### ====== 4) Fix ====== CVS 0.193.4 #######################################################################