CERT publica CVE para 6 vulnerabilidades críticas de seguridad en dnsmasq
(lists.thekelleys.org.uk)- CERT publicará el 11 de mayo de 2026 un conjunto de CVE para 6 vulnerabilidades críticas de seguridad en dnsmasq
- Todas las vulnerabilidades son bugs antiguos y afectan a casi todas las versiones de dnsmasq, excepto algunas muy antiguas
- Los CVE se revelaron previamente a los proveedores, y cada proveedor debe distribuir a tiempo una versión parcheada del paquete dnsmasq
- Se creó 2.92rel2, que aplica los parches a la versión estable dnsmasq 2.92, y puede descargarse desde la ubicación habitual
- Pronto se creará la etiqueta dnsmasq-2.93rc1, y tras las pruebas se apunta a lanzar la versión 2.93 en aproximadamente una semana
Divulgación de vulnerabilidades y parches de dnsmasq
- CERT publicará el 11 de mayo de 2026 un conjunto de CVE para 6 vulnerabilidades críticas en dnsmasq
- Todas las vulnerabilidades son bugs antiguos y aplican a casi todas las versiones de dnsmasq, excepto algunas muy antiguas
- Los CVE se revelaron previamente a los proveedores, y cada proveedor debe distribuir a tiempo una versión parcheada del paquete dnsmasq
- Los detalles y parches pueden consultarse en https://thekelleys.org.uk/dnsmasq/CVE/
- Se creó 2.92rel2, que aplica los parches a la versión estable dnsmasq 2.92, y puede descargarse desde la ubicación habitual
- También se subirán commits de corrección al árbol de desarrollo al mismo tiempo; algunos usan los mismos parches que los backports y otros son reescrituras más amplias que abordan la causa raíz
Aumento de reportes basados en AI y plan para 2.93
- En los últimos meses han aumentado mucho los reportes de bugs impulsados por investigación de seguridad basada en AI, y eliminar duplicados y clasificar bugs ha requerido mucho tiempo
- Los bugs se dividieron entre los que requerían divulgación previa a proveedores y los que convenía corregir de inmediato tras hacerse públicos; esta distinción es inevitablemente subjetiva
- Dado que varios “good guys” encontraron repetidamente los mismos bugs, se considera posible que los “bad guys” también los hayan encontrado, por lo que no se ve mucha eficacia en un embargo largo
- Coordinar embargos y ofrecer backports requiere mucho tiempo y esfuerzo de todos los participantes
- La prioridad es corregir la mayoría de los bugs en próximas versiones para dejar nuevas releases de dnsmasq lo más libres de errores posible
- El hecho de que en las semanas previas al anuncio hayan llegado muchos commits de corrección de seguridad al repositorio git también va en esa dirección
- Pronto se planea crear la etiqueta dnsmasq-2.93rc1, y el objetivo es publicar la versión estable 2.93 lo antes posible
- Probar la release candidate es importante, así que quienes puedan deberían probarla cuanto antes
- Si todo avanza sin problemas, 2.93 podría salir en aproximadamente una semana
- El “tsunami” de reportes de bugs generados por AI no muestra señales de detenerse, por lo que es posible que el mismo proceso vuelva a repetirse pronto
- Existe una tensión entre incorporar en 2.93 la mayor cantidad posible del flujo actual de bugs y lanzarlo a tiempo, y la prioridad está en una release oportuna
1 comentarios
Comentarios en Hacker News
Parece que ya estamos en un punto de inflexión donde se vuelve urgente cambiar el código escrito en C a lenguajes con seguridad de memoria
La mayoría de las vulnerabilidades que se descubren últimamente están directamente relacionadas con lenguajes sin seguridad de memoria, y parece muy difícil justificar que no se pueda escribir un servidor DNS/DHCP en Rust o Go, idealmente sin
unsafeLos investigadores de seguridad con IA al menos están haciendo algo. Si reescribir todo en Rust fuera tan fácil, al día siguiente de un incidente así ya habría aparecido un reemplazo sólido en Rust
No pasa porque hacer este tipo de trabajo no te da estrellas en GitHub
Dudo que realmente sea cierto eso de “como no conocemos el tamaño máximo, todo debe ser dinámico”. Que un programa declare el tamaño máximo aceptable de entrada y, si se excede, falle o use un búfer circular, no es precisamente el fin del mundo
Si puedes conocer el tamaño, puedes diseñar en torno a eso. La RAM es finita, y es raro que todas las capas dentro de ella estén diseñadas como si fueran infinitas
Cambiar a Rust parece una enorme pérdida de tiempo y no resuelve el problema de fondo: que no se modela el programa según la realidad de los recursos finitos del sistema. Y no es solo un problema de memoria. Casos como Chrome metiendo un modelo de 4 GB en el dispositivo del usuario son parecidos
https://xchglabs.com/blog/dnsmasq-five-cves.html
Tenía curiosidad por saber si OpenWRT ya había sacado una nueva compilación, y la respuesta es que todavía no, pero están en eso
https://forum.openwrt.org/t/dnsmasq-set-of-serious-cves/2500...
https://github.com/mirror/dd-wrt/issues/465
https://svn.dd-wrt.com/changeset/64944
https://svn.dd-wrt.com/changeset/64905
Dicen que el lanzamiento viene “coming soon”
Mi MaraDNS ha sido auditado bastante a fondo al entrar en la era de las auditorías de seguridad asistidas por IA
Desde 2023 no se ha encontrado ni un solo bug de seguridad serio [1]
Lo único que encontraron los auditores fue algo como “cuando Deadwood está en modo totalmente recursivo y recibe un paquete extraño, tarda más de lo normal en liberar recursos” [2], o “una utilidad auxiliar incluida en MaraDNS ni siquiera compilaba desde 2022, pero tiene un desbordamiento de búfer solo cuando
$HOMEsupera los 50 caracteres” [3]Personalmente me deja muy satisfecho que MaraDNS parezca bastante seguro ahora que está recibiendo auditorías de seguridad reales y profundas
[1] https://samboy.github.io/MaraDNS/webpage/security.html
[2] https://github.com/samboy/MaraDNS/discussions/136
[3] https://github.com/samboy/MaraDNS/pull/137
Lua tampoco estuvo exento de correcciones de seguridad
Yo también tengo unas cuantas bibliotecas que escribí yo mismo, y desde 1991 no se ha encontrado ni un solo bug de seguridad serio en ellas. Claro, nadie usa mis bibliotecas
No es por quitar mérito, pero este tipo de afirmaciones es importante ponerlas en contexto junto con el tamaño de la base de usuarios
Esta autopromoción aporta muy poco a una discusión sobre dnsmasq
Cuanto más usado es un software, más revisiones recibe y más bugs y casos límite se descubren
Menos mal que este software no se usa en millones de dispositivos que casi nunca reciben actualizaciones
Está bastante serio
“Un atacante remoto que pueda hacer consultas DNS o responder DNS puede provocar una gran escritura fuera de límites en el heap”
Una respuesta DNS malformada puede “provocar un bucle infinito que haga que dnsmasq deje de responder a todas las consultas”
Solicitudes DHCP maliciosas pueden causar un desbordamiento de búfer
No todos los proyectos están recibiendo un tsunami de reportes de bugs generados por IA. Como se dijo arriba, MaraDNS no lo tuvo
Supongo que djbdns y tinydns tampoco; si lo hubieran tenido, lo habrían anunciado a lo grande
Nunca he entendido del todo por qué algunos proyectos se vuelven extremadamente populares y otros no
Casi parece que las herramientas “demasiado peligrosas para hacerse públicas” escanean todos los proyectos, pero solo contactan de manera selectiva a los que tienen problemas. Así no tienen que admitir que su herramienta no encontró nada
Nunca me ha gustado usar dnsmasq. Siempre me pareció que metía demasiadas cosas en una sola herramienta
Siempre he preferido configurar por separado un resolvedor con caché local, un servidor DHCP y la configuración de arranque TFTP/PXE
Por ejemplo, enviar consultas para
*.example.coma un servidor upstream específico, devolver NXDOMAIN para sitios de phishing, o agregar todas las IP resueltas para*.example.orga unipsetpara enrutamiento por políticasLa última función incluso funciona en FreeBSD aunque BSD no tenga
ipset. La lista*.example_xyz.compuede ser muy grande, y se dice que las versiones recientes de dnsmasq la manejan de forma eficiente10 de 10, sin arrepentimientos, totalmente recomendable
Por ejemplo, Opnsense usa solo la parte DHCP de dnsmasq y usa unbound para DNS, y eso se siente un poco “raro”
DHCP y DNS están conectados, y PXE necesita entradas de DHCP. Si quieres una configuración simple, de otro modo tendrías que ensamblar al menos 3 demonios con sintaxis de configuración distintas
Esta es una pregunta de principiante para gente con más experiencia en el área, pero me pregunto por qué el software de este espacio no se escribe más seguido sobre runtimes como Erlang, con recolección de basura y concurrencia
La pérdida de rendimiento era demasiado grande, tenía un runtime opaco del que era difícil saber qué tan estable era entonces, había pocos contribuidores y también una huella de dependencias grande que no venía instalada en la mayoría de los sistemas
Incluso cuando usé Erlang en sistemas de producción hacia 2015, si te salías un poco de su caso de uso original, todavía tenía asperezas. No es una crítica exclusiva de Erlang; muchos lenguajes y runtimes eran parecidos
Muchos de estos sistemas que van a seguir recibiendo golpes durante las próximas semanas o meses tienen antecedentes parecidos. El kernel de Linux, por ejemplo, probablemente solo tenía como alternativa potencial C++. OpenSSL, otro habitual en problemas de seguridad, empezó en 1998
Estoy totalmente de acuerdo con “no escriban proyectos nuevos con acceso a red en C”, pero si uno vuelve a 1998, es difícil decir qué otra opción era realmente práctica
Había lenguajes más seguros, pero sus comunidades eran mucho más pequeñas y también era más difícil garantizar estabilidad. Java ya existía, pero no sé exactamente en qué momento se volvió un candidato serio para servidores de red; yo diría que hasta finales de los 2000. Lo que vi de Java en 1999 todavía no daba para eso
Por ejemplo, en 2011 operé un servidor de red en Haskell para un uso relativamente poco importante, y colapsó bajo condiciones que ni siquiera eran tan extremas para una red de producción. En 2013 reutilicé la misma base de código sin cambios en el bucle principal de ejecución y mejoró como un 90%, así que creo que el problema era más de Haskell que mío
Aun así, no era algo que yo metería en producción real, pero al menos mostró que no fue mi código el que falló. Eso quiere decir que, aunque Haskell existía en los 2000, difícilmente era una opción realista para servidores de red en esa época
Ahora sí hay muchas más opciones que antes
structdirectamente sobre un paquete de red, así que resulta bastante fácilEn otros lenguajes muchas veces no es tan simple
Claro, también está el hecho de que suelen ser más lentos y más pesados