
PoC di riproduzione per la vulnerabilità di buffer overflow basato su heap in FreeBSD dhclient durante l'analisi dell'opzione DHCP 119 (CVE-2020-7461)
Autori: Moshe Kol, Shlomi Oberman
PoC Riproduttore per la vulnerabilità di overflow del buffer heap in FreeBSD dhclient durante l'analisi dell'opzione DHCP 119 (CVE-2020-7461).
Il problema risiede nella funzione find_search_domain_name_len nel file sbin/dhclient/options.c.
Questa funzione viene chiamata da expand_domain_search quando l'opzione DHCP 119 (ricerca dominio, RFC 3397) viene fornita dal server.
Quando viene utilizzato uno schema di compressione, la funzione find_search_domain_name_len viene chiamata ricorsivamente a partire dalla posizione puntata, ma non controlla il valore di ritorno della chiamata ricorsiva. Se la chiamata ricorsiva fallisce, viene utilizzato un valore di ritorno di -1, che viene semplicemente aggiunto alla variabile di lunghezza cumulativa.
Ecco il codice con il bug (righe 299-301, options.c, ultimo commit 70066b9):
299: pointed_len = find_search_domain_name_len(option,
300: &pointer);
301: domain_name_len += pointed_len;
Successivamente nella funzione expand_domain_search, viene allocato un buffer con la lunghezza calcolata usando , e poi il nome espanso viene scritto in questo buffer usando la funzione . Poiché quest'ultima funzione non ha alcun controllo sul valore del puntatore nello schema di compressione, è possibile superare i limiti del buffer allocato.
find_search_domain_name_lenexpand_search_domain_namePuoi trovare il FreeBSD Security Advisory qui.