En las diferentes implementaciones del protocolo DNSSEC se han identificado dos vulnerabilidades que afectan a los resolutores DNS BIND, PowerDNS, dnsmasq, Knot Resolver y Unbound. Las vulnerabilidades permiten provocar una denegación de servicio en los resolutores DNS que realizan validaciones mediante DNSSEC, debido a una carga alta en la CPU que impide el procesamiento de otras solicitudes. Para llevar a cabo el ataque, basta con enviar al resolutor DNS que utiliza DNSSEC una consulta que provoque la referencia a una zona DNS especialmente diseñada en el servidor del atacante.
Problemas identificados:
- CVE-2023-50387 (nombre en clave KeyTrap) — la consulta a zonas DNS especialmente diseñadas provoca una denegación de servicio debido a la generación de una carga significativa en la CPU y la prolongada verificación de DNSSEC. Para llevar a cabo el ataque, es necesario desplegar en un servidor DNS controlado por el atacante una zona de dominio con configuraciones maliciosas y hacer que un servidor DNS recursivo acceda a esta zona, cuya denegación de servicio es el objetivo del atacante.
Las configuraciones maliciosas consisten en utilizar para la zona una combinación de claves conflictivas, registros RRSET y firmas digitales. Intentar verificar utilizando estas claves conduce a la realización de operaciones largas y que requieren muchos recursos, que pueden saturar completamente la CPU y bloquear el procesamiento de otras solicitudes (por ejemplo, se afirma que durante un ataque a BIND se logró detener el procesamiento de otras solicitudes durante 16 horas).
- CVE-2023-50868 (nombre en clave NSEC3) — denegación de servicio debido a la realización de cálculos significativos al calcular los hashes en los registros NSEC3 (Next Secure v3) al procesar respuestas DNSSEC especialmente diseñadas. El método de ataque es similar a la primera vulnerabilidad, con la diferencia de que en el servidor DNS del atacante se crea un conjunto de registros NSEC3 RRSET diseñado especialmente.
Se destaca que la aparición de las vulnerabilidades mencionadas anteriormente se debe a la definición en la especificación DNSSEC de la posibilidad de que el servidor DNS envíe todas las claves criptográficas disponibles, mientras que los resolutores deben procesar cualquier clave recibida hasta que la verificación se complete con éxito o todas las claves recibidas hayan sido verificadas.
Como medidas para bloquear vulnerabilidades en los resolvers, se ha limitado el número máximo de claves DNSSEC implicadas en el proceso de construcción de la cadena de confianza, así como el número máximo de cálculos de hashes para NSEC3, y se han restringido los reintentos de verificación para cada RRSET (combinaciones de claves y firmas) y cada respuesta. servidores.
Se han solucionado las vulnerabilidades en las actualizaciones de Unbound (1.19.1), PowerDNS Recursor (4.8.6, 4.9.3, 5.0.2), Knot Resolver (5.7.1), dnsmasq (2.90) y BIND (9.16.48, 9.18.24 y 9.19.21). El estado de la corrección de las vulnerabilidades en las distribuciones se puede evaluar en las siguientes páginas: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware, NetBSD, FreeBSD.
Las versiones del servidor DNS BIND 9.16.48, 9.18.24 y 9.19.21 han solucionado además varias vulnerabilidades adicionales:
- CVE-2023-4408 — el análisis de mensajes DNS grandes puede conducir a una alta carga en la CPU.
- CVE-2023-5517 — una consulta especialmente diseñada a una zona inversa puede provocar un cierre inesperado debido a la activación de la verificación assert. El problema solo se manifiesta en configuraciones con la opción 'nxdomain-redirect' habilitada.
- CVE-2023-5679 — la resolución recursiva de hosts puede llevar a un cierre inesperado debido a la activación de la verificación assert en sistemas con soporte para DNS64 y 'serve-stale' (configuraciones, stale-cache-enable y stale-answer-enable) habilitadas.
- CVE-2023-6516 — consultas recursivas especialmente diseñadas pueden llevar al agotamiento de la memoria disponible para los procesos.
Fuente: opennet.ru
