PT-2026-82435 · Rubygems · Resolve
CVE-2026-80213
·
Publicado
2026-08-27
·
Atualizado
2026-08-27
CVSS v3.1
4.0
Média
| Vetor | AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:L/A:N |
Nome do Software Vulnerável e Versões Afetadas
resolv gem versões anteriores a 0.7.2
Descrição
Existe um problema onde o
Resolv::DNS::MessageEncoder grava o comprimento de um rótulo DNS em um único octeto sem validação de intervalo. Quando um rótulo excede 255 octetos, o comprimento é armazenado módulo 256 enquanto os dados do rótulo permanecem inalterados, fazendo com que os bytes resultantes na rede representem um nome diferente do pretendido. Isso ocorre porque o put string utiliza put pack("C", d.length) e o put label não restringe os valores, permitindo que os comprimentos caiam em intervalos reservados (0x40-0xBF) ou no intervalo de ponteiros de compressão (0xC0-0xFF). Além disso, o Resolv::DNS::Name.create não valida o comprimento por rótulo ou o comprimento total do nome. Um invasor pode fornecer um nome de host manipulado para ignorar listas de permissão (allowlists) e verificações de saída (egress), pois sufixos validados podem se tornar preenchimentos que não são transmitidos. Isso pode levar a resolutores recursivos a armazenarem respostas sob um nome controlado pelo invasor e a logs de DNS a registrarem dados incorretos. Se o comprimento de um rótulo estiver no intervalo 0xC0-0xFF, analisadores conformes podem interpretá-lo como um ponteiro de compressão usando um byte subsequente controlado pelo invasor como deslocamento.Recomendações
Atualize o resolv gem para a versão 0.7.2 ou posterior.
Exploit
Correção
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Enumeração de Fraquezas
Identificadores relacionados
Produtos afetados
Resolve