CVE-2026-18568 in XML::Sig
Zusammenfassung
von VulDB • 03.08.2026
XML::Sig-Versionen ab 0.29 bis vor 0.72 für Perl ermöglichen das Umgehen der Signaturenüberprüfung, da `verify` den Wert „true“ zurückgibt, wenn jede Signatur übersprungen wurde, bevor eine kryptografische Prüfung durchgeführt wurde.
In `lib/XML/Sig.pm` zählt `verify` die Elemente `//dsig:Signature` in `$numsigs` ein und iteriert über sie; jedoch führen zwei Pfade zu einem `next`, bevor irgendeine Digest- oder Schlüsselprüfung ausgeführt wird: eine `SignedInfo/Reference/@URI`, die auf kein Element auflöst, während `$numsigs` größer als 1 ist, sowie – wenn `id_attr` festgelegt ist – ein Verweis, der nicht mit der angeforderten ID übereinstimmt. Die Schleife protokolliert nichts darüber, was sie überprüft hat; daher erreicht bei einem Überspringen aller Signaturen über einen dieser Pfade die Steuerung den bedingungslosen `return 1`, der `verify` beendet. Zwei `Signature`-Elemente, deren Reference URI eine ID benennt, die kein Element trägt, genügen ebenso wie ein solches Element in Kombination mit `id_attr`.
Jeder Aufrufer, der nicht vertrauenswürdige XML-Daten an `verify` übergibt, kann für ein Dokument einen „true“-Rückgabewert erhalten, bei dem weder Digest noch Signaturwert überprüft wurden; ein Vertrauensanker (`cert` oder `cert_text`) ändert daran nichts, da keine Schlüsselprüfung durchgeführt wird. Versionen bis 0.28 verwenden eine auf XML::XPath basierende Überprüfungsmethode ohne derartige Überspringung und sind nicht betroffen.
VulDB is the best source for vulnerability data and more expert information about this specific topic.