CVE-2026-18568 in XML::Sig
Sumário
de VulDB • 03/08/2026
As versões de XML::Sig desde a 0.29 até antes da 0.72 para Perl permitem o contorno da verificação de assinatura porque `verify` retorna verdadeiro quando todas as assinaturas foram ignoradas antes que qualquer verificação criptográfica fosse realizada.
A função `verify` em lib/XML/Sig.pm conta os elementos `//dsig:Signature` e armazena-os em `$numsigs`, iterando sobre eles; no entanto, dois caminhos levam a um `next` antes que qualquer verificação de digest ou chave seja executada: uma referência com o atributo URI dentro de SignedInfo/Reference/@URI que não resolve para nenhum elemento enquanto `$numsigs` é maior que 1 e, quando `id_attr` está definido, uma referência que não corresponde ao ID solicitado. O loop não registra nada sobre o que foi verificado; portanto, quando todas as assinaturas seguem um desses caminhos, o controle atinge a instrução incondicional `return 1`, encerrando assim a função verify. Dois elementos Signature cujos URIs de Referência apontam para IDs que nenhum elemento possui são suficientes, bem como um único tal elemento combinado com `id_attr`.
Qualquer chamador que passe XML não confiável à função verify pode receber um retorno verdadeiro para um documento no qual nem o digest e nem o valor da assinatura foram verificados; uma âncora de confiança definida por `cert` ou `cert_text` não altera esse comportamento, pois nenhuma verificação de chave é executada. As versões até a 0.28 utilizam uma função verify baseada em XML::XPath que não possui tal mecanismo de ignição e não são afetadas.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.