Vulnerabilidade remota na pila IPv6 de OpenBSD

No proceso en segundo plano slaacd, que é responsable da configuración automática de enderezos IPv6 (IPv6 Stateless Address Autoconfiguration, RFC 4862) en OpenBSD, identificouse unha vulnerabilidade que leva a un desbordamento do búfer ao recibir un anuncio de enrutador IPv6 deseñado especialmente (RA, Anuncio do enrutador) .

Inicialmente, a funcionalidade de configuración automática de enderezos IPv6 implementouse a nivel do núcleo, pero a partir de OpenBSD 6.2 trasladouse a un proceso slaacd sen privilexios separado. Este proceso encárgase de enviar mensaxes RS (Router Solicitation) e analizar as respostas RA (Router Advertisement) con información sobre o router e os parámetros de conexión de rede.

En febreiro, slaacd solucionou un erro que facía que fallase se se especificaban 7 servidores na lista RDNSS (Servidores DNS recursivos). Este descoido chamou a atención de investigadores independentes que intentaron examinar o código slaacd para detectar outros erros que se producen ao analizar campos nas mensaxes de RA. A análise mostrou que hai outro problema no código, que se manifesta ao procesar o campo DNSSL (lista de busca de DNS), que inclúe listas de nomes de dominio e modelos de host para DNS.

Cada nome da lista DNSSL está codificado mediante un delimitador nulo e etiquetas interpostas dun byte que determinan o tamaño dos datos que seguen. A vulnerabilidade prodúcese polo feito de que no código de análise da lista cópiase un campo cun tamaño nunha variable cun tipo enteiro con signo ("len = data[pos]"). En consecuencia, se se especifica un valor no campo co bit máis significativo definido, este valor percibirase no operador condicional como un número negativo e na comprobación do tamaño máximo permitido ("se (len > 63 || len + pos + 1 > datalen) {“) non funcionará, o que dará lugar a unha chamada a memcpy cun parámetro cuxo tamaño dos datos copiados supere o tamaño do búfer.

Vulnerabilidade remota na pila IPv6 de OpenBSD
Vulnerabilidade remota na pila IPv6 de OpenBSD


Fonte: opennet.ru

Engadir un comentario