SCALE: Encontrar automáticamente errores de cumplimiento de RFC en servidores de nombres DNS

El Sistema de Nombres de Dominio (DNS) tiene características intrincadas que interactúan de maneras sutiles. Los errores en las implementaciones de DNS al manejar combinaciones de estas características pueden dar lugar a un comportamiento incorrecto o dependiente de la implementación, vulnerabilidades de seguridad y más. Introducimos el primer enfoque para encontrar errores de cumplimiento de RFC en las implementaciones de servidores de nombres DNS a través de la generación automática de pruebas.

Nuestro enfoque SCALE (Ejecución Lógica Automatizada Impulsada por Restricciones de Pequeño Alcance) genera conjuntamente archivos de zona y consultas correspondientes para cubrir los comportamientos de RFC especificados por un modelo ejecutable de resolución de DNS. Hemos construido una herramienta llamada Ferret basada en este enfoque y la aplicamos para probar 8 implementaciones de DNS de código abierto, incluidas implementaciones populares como Bind, PowerDNS, Knot y Nsd. Ferret generó más de 13,000 archivos de prueba, de los cuales el 62% resultó en alguna diferencia entre las implementaciones. Identificamos y reportamos 30 nuevos errores únicos a partir de estos casos de prueba fallidos, incluido al menos un error en cada implementación, de los cuales 20 ya se han solucionado. Muchos de estos errores existían incluso en las implementaciones de DNS más populares, incluida una nueva vulnerabilidad crítica en Bind que los atacantes podrían explotar fácilmente para bloquear de forma remota los servidores de nombres y los resolutores de DNS.