Vulnerabilità remota nello stack IPv6 di OpenBSD

Nel processo in background slaacd, che è responsabile dell'autoconfigurazione dell'indirizzo IPv6 (IPv6 Stateless Address Autoconfiguration, RFC 4862) in OpenBSD, è stata identificata una vulnerabilità che porta ad un buffer overflow quando si riceve un annuncio del router IPv6 appositamente progettato (RA, Router Advertisement) .

Inizialmente, la funzionalità di autoconfigurazione dell'indirizzo IPv6 era implementata a livello di kernel, ma a partire da OpenBSD 6.2 è stata spostata in un processo slaacd separato e non privilegiato. Questo processo è responsabile dell'invio di messaggi RS (Router Solicitation) e dell'analisi delle risposte RA (Router Advertisement) con informazioni sul router e sui parametri di connessione di rete.

A febbraio, slaacd ha corretto un bug che causava il crash se venivano specificati 7 server nell'elenco RDNSS (Recursive DNS Servers). Questa svista ha attirato l'attenzione di ricercatori indipendenti che hanno cercato di esaminare il codice slaacd per altri errori che si verificano durante l'analisi dei campi nei messaggi RA. Dall'analisi è emerso che esiste un altro problema nel codice, che si manifesta durante l'elaborazione del campo DNSSL (DNS Search List), che comprende elenchi di nomi di dominio e modelli host per DNS.

Ogni nome nell'elenco DNSSL è codificato utilizzando un delimitatore nullo e interponendo tag da un byte che determinano la dimensione dei dati che seguono. La vulnerabilità è causata dal fatto che nel codice di analisi dell'elenco un campo con una dimensione viene copiato in una variabile di tipo intero con segno (“len = data[pos]”). Pertanto, se nel campo viene specificato un valore con il bit più significativo impostato, tale valore verrà percepito nell'operatore condizionale come un numero negativo e il controllo della dimensione massima consentita (“if (len > 63 || len + pos + 1 > datalen) {“) non funzionerà, il che porterà a una chiamata a memcpy con un parametro la cui dimensione dei dati copiati supera la dimensione del buffer.

Vulnerabilità remota nello stack IPv6 di OpenBSD
Vulnerabilità remota nello stack IPv6 di OpenBSD


Fonte: opennet.ru

Aggiungi un commento