CERT divulga CVEs para 6 vulnerabilidades graves de segurança no dnsmasq
(lists.thekelleys.org.uk)- O CERT divulgou em 11 de maio de 2026 um conjunto de CVEs para 6 vulnerabilidades graves de segurança no dnsmasq
- As vulnerabilidades são todas bugs antigos e afetam quase todas as versões do dnsmasq, exceto algumas versões muito antigas
- Os CVEs foram divulgados previamente aos fornecedores, e cada fornecedor precisa distribuir em tempo hábil uma versão corrigida do pacote dnsmasq
- Foi criado o 2.92rel2, com os patches aplicados sobre a versão estável dnsmasq 2.92, e ele pode ser obtido no local de download habitual
- Em breve será criada a tag dnsmasq-2.93rc1, com meta de lançar a versão 2.93 em cerca de uma semana após os testes
Divulgação das vulnerabilidades e patches do dnsmasq
- O CERT divulgou em 11 de maio de 2026 um conjunto de CVEs para 6 vulnerabilidades graves de segurança no dnsmasq
- As vulnerabilidades são todas bugs antigos e se aplicam a quase todas as versões do dnsmasq, exceto algumas muito antigas
- Os CVEs foram divulgados previamente aos fornecedores, e cada fornecedor precisa distribuir em tempo hábil uma versão corrigida do pacote dnsmasq
- Os detalhes e os patches podem ser consultados em https://thekelleys.org.uk/dnsmasq/CVE/
- Foi criado o 2.92rel2, com os patches aplicados sobre a versão estável dnsmasq 2.92, e ele pode ser obtido no local de download habitual
- No mesmo momento, commits de correção também devem chegar à árvore de desenvolvimento; alguns usam os mesmos patches do backport e outros são reescritas mais abrangentes que tratam a causa raiz
Aumento de relatórios baseados em IA e plano para o 2.93
- Nos últimos meses, os relatórios de bugs aumentaram muito por causa da pesquisa de segurança baseada em IA, e tem sido necessário muito tempo para remover duplicatas e classificar os bugs
- Os bugs foram divididos entre itens que exigem divulgação prévia aos fornecedores e itens que é melhor corrigir imediatamente após a divulgação pública; essa distinção é inevitavelmente subjetiva
- Como vários “good guys” encontraram repetidamente os mesmos bugs, considera-se possível que os “bad guys” também os tenham encontrado, então embargos longos não parecem ter muita efetividade
- Coordenar embargos e fornecer backports exige muito tempo e esforço de todos os participantes
- A prioridade para a maioria dos bugs é corrigi-los nas próximas versões e deixar a nova versão do dnsmasq o mais livre de bugs possível
- O fato de muitos commits de correção de segurança terem sido enviados ao repositório git nas semanas anteriores ao anúncio também vai nessa direção
- Em breve deve ser criada a tag dnsmasq-2.93rc1, e o objetivo é lançar a versão estável 2.93 o mais rápido possível
- Testar a release candidate é importante, então quem puder deve testar o quanto antes
- Se tudo correr bem, a 2.93 pode sair em cerca de uma semana
- O “tsunami” de relatórios de bugs gerados por IA não dá sinais de parar, então é possível que o mesmo processo se repita em breve
- Há uma tensão entre refletir no 2.93 o máximo possível do fluxo atual de bugs e lançar a versão no prazo; a prioridade é um lançamento em tempo hábil
1 comentários
Comentários do Hacker News
Parece que estamos chegando a um ponto em que reescrever código feito em C para uma linguagem com segurança de memória está se tornando urgente
A maior parte das vulnerabilidades descobertas recentemente está diretamente ligada a linguagens sem segurança de memória, e parece muito difícil justificar não escrever servidores DNS/DHCP em Rust ou Go, se possível sem
unsafePesquisadores de segurança com IA pelo menos estão fazendo alguma coisa. Se reescrever tudo em Rust fosse tão fácil assim, deveria ter surgido um substituto robusto em Rust no dia seguinte a esse incidente
Isso não acontece porque esse tipo de trabalho dificilmente rende estrelas no GitHub
Fico em dúvida se “não sabemos o tamanho máximo, então tudo precisa ser dinâmico” faz mesmo sentido. Não seria o fim do mundo se o programa declarasse um tamanho máximo aceitável para a entrada e, ao ultrapassá-lo, retornasse erro ou usasse um buffer circular
Se o tamanho pode ser conhecido, dá para projetar em torno disso. A RAM é finita, então é estranho que todas as camadas acima dela sejam projetadas como se fossem infinitas
Migrar para Rust parece um enorme desperdício de tempo e não resolve o problema fundamental de não modelar os programas de acordo com a realidade de recursos finitos do sistema. E não é só um problema de memória. Casos como o Chrome colocando um modelo de 4GB no dispositivo do usuário são parecidos
https://xchglabs.com/blog/dnsmasq-five-cves.html
Eu estava curioso para saber se o OpenWRT já tinha lançado uma nova build, e a resposta é que ainda não, mas está em andamento
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
Disseram que o lançamento vem “coming soon”
O meu MaraDNS passou por auditorias bem extensas ao entrar na era das auditorias de segurança assistidas por IA
Desde 2023, não foi encontrado nenhum bug de segurança grave [1]
Tudo o que os auditores encontraram foram coisas como “o Deadwood leva mais tempo que o normal para liberar recursos ao receber um pacote incomum quando está no modo totalmente recursivo” [2], ou “um utilitário auxiliar incluído no MaraDNS nem compila desde 2022, mas tem um buffer overflow quando
$HOMEpassa de 50 caracteres” [3]Pessoalmente, fico muito satisfeito em ver que o MaraDNS é bastante seguro agora que está recebendo auditorias de segurança reais e 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
O Lua também não ficou sem correções de segurança
Eu também tenho algumas bibliotecas que escrevi e nas quais nenhum bug de segurança grave foi encontrado desde 1991. Claro, ninguém usa as minhas bibliotecas
Não é para diminuir a conquista, mas é importante contextualizar esse tipo de afirmação junto com o tamanho da base de usuários
Essa autopromoção quase não agrega valor à discussão sobre o dnsmasq
Quanto mais usado um software é, mais ele é revisado, e mais bugs e casos de borda são encontrados
Ainda bem que esse software não é usado em milhões de dispositivos que quase nunca recebem atualização
É bem grave
“Um invasor remoto que possa fazer consultas DNS ou responder a DNS pode causar uma grande gravação fora dos limites no heap”
Uma resposta DNS malformada pode “causar um loop infinito e fazer com que o dnsmasq deixe de responder a todas as consultas”
Solicitações DHCP maliciosas podem causar buffer overflow
O tsunami de relatórios de bug por IA não existe em todos os projetos. Como foi dito acima, não houve isso no MaraDNS
Acho que também não teria acontecido com o djbdns e o tinydns. Se tivesse acontecido, teria sido amplamente divulgado
Sempre tive dificuldade para entender por que alguns projetos se tornam extremamente populares e outros não
Também parece que as ferramentas “perigosas demais para divulgar” escaneiam todos os projetos, mas entram em contato seletivamente apenas com os que têm problemas. Assim não precisam admitir que suas ferramentas não encontraram nada
Nunca gostei de usar o dnsmasq. Sempre pareceu que colocava coisa demais em uma ferramenta só
Sempre preferi configurar separadamente o resolvedor local com cache, o servidor DHCP e a configuração de boot TFTP/PXE
Por exemplo, encaminhar consultas de
*.example.compara um servidor upstream específico, retornar NXDOMAIN para sites de phishing, ou adicionar todos os IPs resolvidos para*.example.orga umipsetpara roteamento por políticaO último recurso funciona no FreeBSD mesmo sem existir
ipsetno BSD. A lista*.example_xyz.compode ser muito grande, e dizem que o dnsmasq recente lida com isso de forma eficienteNota 10 de 10, sem arrependimentos, recomendável
Por exemplo, o Opnsense usa só a parte de DHCP do dnsmasq e usa o unbound para DNS, e isso parece meio “estranho”
DHCP e DNS são ligados entre si, e PXE precisa de entradas de DHCP. Se você quiser uma configuração simples, caso contrário vai precisar costurar pelo menos 3 daemons com sintaxes de configuração diferentes
Pergunta de iniciante para quem tem mais experiência nessa área: por que o software desse domínio não é mais escrito sobre runtimes com coleta de lixo e concorrência, como Erlang?
A perda de desempenho era grande demais, havia um runtime opaco cujo nível de estabilidade era difícil de avaliar na época, havia poucos contribuidores, e a pegada de dependências era grande para algo que não vinha instalado na maioria dos sistemas
Mesmo por volta de 2015, quando usei Erlang em sistemas de produção, ele ainda tinha arestas quando você saía um pouco do caso de uso para o qual foi originalmente pensado. Não é uma crítica exclusiva ao Erlang; muitas linguagens e runtimes eram parecidos
Muitos dos sistemas que vão continuar levando pancada nas próximas semanas ou meses têm uma origem parecida. No caso do kernel Linux, a única alternativa em potencial disponível na época era mais ou menos C++. O OpenSSL, um frequentador habitual de problemas de segurança, começou em 1998
Concordo muito fortemente com a frase “não escreva novos projetos com acesso à rede em C”, mas é difícil dizer qual outra opção teria sido realista se voltássemos para 1998
Existiam linguagens mais seguras, mas suas comunidades eram muito menores que a de C, e também era difícil garantir sua estabilidade. Java já existia, mas não sei exatamente quando ele se tornou um candidato sério para servidores de rede; eu colocaria isso ali pelo fim dos anos 2000. O Java que eu vi em 1999 ainda não era isso
Por exemplo, em 2011 eu operava um servidor de rede em Haskell para um uso relativamente pouco importante, e ele caía em condições que, numa rede de produção, nem seriam tão extremas. Quando reutilizei a mesma base de código em 2013 sem mudar o loop principal de execução, melhorou uns 90%, então considero que o problema era mais do lado do Haskell do que do meu código
Ainda assim, não era algo que eu colocaria em produção de verdade, mas ao menos mostrou que a falha não era do meu código. Isso também indica que, mesmo que Haskell existisse nos anos 2000, seria difícil considerá-lo uma opção realista para servidores de rede naquela época
Hoje temos muito mais opções do que antes
structdiretamente para pacotes de rede, o que é bastante fácilEm outras linguagens, muitas vezes isso não é tão simples
Claro, também existe a questão de ser mais lento e mais pesado