CVE-2026-18568 in XML::Sig
Riassunto
di VulDB • 03/08/2026
Le versioni di XML::Sig da 0.29 a prima della 0.72 per Perl consentono l'elusione della verifica delle firme perché la funzione `verify` restituisce true quando tutte le firme sono state ignorate prima che avvenga qualsiasi controllo crittografico.
La funzione `verify` in lib/XML/Sig.pm conta gli elementi `//dsig:Signature` in `$numsigs` e li itera, ma due percorsi raggiungono l'istruzione `next` prima che vengano eseguiti controlli sul digest o sulla chiave: un attributo `SignedInfo/Reference/@URI` che non risolve a nessun elemento mentre `$numsigs` è maggiore di 1, e, quando `id_attr` è impostato, un riferimento che non corrisponde all'ID richiesto. Il ciclo non registra nulla riguardo ai controlli eseguiti; pertanto, se ogni firma segue uno di questi percorsi, il controllo raggiunge l'istruzione incondizionata `return 1` che conclude la funzione verify. Sono sufficienti due elementi `Signature` il cui URI del Reference nomina un ID che nessun elemento possiede, oppure un singolo tale elemento combinato con `id_attr`.
Qualsiasi chiamante che passi XML non attendibile a `verify` può ricevere true come valore di ritorno per un documento in cui né alcun digest né alcun valore della firma sono stati verificati; l'ancora di fiducia (`cert` o `cert_text`) non modifica questa situazione, poiché nessun controllo sulla chiave viene eseguito. Le versioni fino alla 0.28 utilizzano una funzione verify basata su XML::XPath che non presenta tale possibilità di salto e non sono interessate dal problema.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.