CVE-2026-18568 in XML::Sig
Resumen
por VulDB • 2026-08-03
Las versiones de XML::Sig desde la 0.29 hasta antes de la 0.72 para Perl permiten eludir la verificación de firmas porque `verify` devuelve verdadero cuando se omiten todas las firmas antes de realizar cualquier comprobación criptográfica.
En lib/XML/Sig.pm, `verify` cuenta los elementos `//dsig:Signature` en `$numsigs` e itera sobre ellos; sin embargo, dos caminos llevan a un `next` antes de que se ejecute cualquier verificación del resumen (digest) o la clave: una referencia con atributo URI (`SignedInfo/Reference/@URI`) que no resuelve ningún elemento mientras `$numsigs` es mayor que 1 y, cuando está configurado `id_attr`, una referencia que no coincide con el ID solicitado. El bucle no registra nada sobre lo que se ha verificado; por tanto, si todas las firmas siguen uno de esos caminos, el control llega al incondicional `return 1` que finaliza la función verify. Basta con dos elementos Signature cuyo URI de Reference nombre un ID que ningún elemento posee, o bien un solo elemento así combinado con `id_attr`.
Cualquier llamador que pase XML no confiable a `verify` puede recibir un valor verdadero para un documento en el que no se ha verificado ni digest alguno ni valor de firma; esto no cambia la situación si se usa como ancla de confianza una `cert` o `cert_text`, ya que no se ejecuta ninguna comprobación de clave. Las versiones hasta la 0.28 utilizan una función verify basada en XML::XPath, que carece de dicha omisión y no están afectadas.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.