CRITICAL✓ PATCH🇬🇧 English

CVE-2026-9390

XPath injection w XML::Sig dla Perl — obejście weryfikacji podpisu XML

CVSS 9.1v3.1pub. 2026-08-03upd. 2026-08-05

Biblioteka XML::Sig w wersjach przed 0.71 dla Perl jest podatna na XPath injection podczas weryfikacji podpisów XML. Podatność umożliwia atakującemu bez uwierzytelnienia manipulowanie logiką weryfikacji podpisu, co może prowadzić do akceptacji spreparowanych dokumentów XML jako prawidłowo podpisanych.

Pokaż oryginał (EN)

XML::Sig versions before 0.71 for Perl allow XPath injection in ID lookup. verify() and _get_signed_xml() in lib/XML/Sig.pm build XPath expressions by concatenating the SignedInfo/Reference/@URI value read from the document being verified. The value is neither escaped nor checked against the NCName grammar that XML requires of an ID, so a URI containing a single quote closes the string literal in the generated expression and appends arbitrary XPath operators. A crafted URI can make the lookup match elements the reference does not name, or every element in the document, so which node is selected for digest verification is decided by the injected expression rather than by the reference.

🤖 Analiza AI
Jak działa

Funkcje verify() oraz _get_signed_xml() w pliku lib/XML/Sig.pm budują wyrażenia XPath poprzez bezpośrednie sklejanie (konkatenację) wartości atrybutu SignedInfo/Reference/@URI odczytanej z weryfikowanego dokumentu. Wartość ta nie jest ani eskejpowana, ani walidowana względem gramatyki NCName wymaganej przez standard XML dla identyfikatorów. W konsekwencji URI zawierający pojedynczy cudzysłów zamyka literał łańcuchowy w generowanym wyrażeniu XPath i pozwala na dołączenie dowolnych operatorów XPath. Spreparowany URI może spowodować, że zapytanie XPath dopasuje elementy nienazwane przez referencję — lub każdy element w dokumencie — przez co węzeł wybrany do weryfikacji skrótu jest określany przez wstrzykniętą logikę, a nie przez faktyczną referencję.

Skutki

Atakujący może doprowadzić do tego, że biblioteka zaakceptuje spreparowany dokument XML jako prawidłowo podpisany, omijając w ten sposób mechanizm weryfikacji integralności i autentyczności podpisu cyfrowego XML. Może to skutkować naruszeniem integralności danych oraz kompromitacją poufności, jeśli weryfikacja podpisu jest elementem kontroli dostępu lub uwierzytelniania.

Mitygacja

Należy zaktualizować bibliotekę XML::Sig do wersji 0.71 lub nowszej. Patche dostępne są w repozytorium projektu (commity 69ad2b421118fadd33d57f50b110b8d161e8fef5 oraz a85aad21aa767ac1c158bbfc19447683941ab376). Szczegóły zmian dostępne są w historii wydań na MetaCPAN.

Kogo dotyczy

XML::Sig dla Perl w wersjach przed 0.71

Uwagi

Poprawka została wprowadzona w wersji 0.71 biblioteki XML::Sig, co potwierdza changelog opublikowany na MetaCPAN oraz dwa oddzielne commity w repozytorium perl-net-saml2/perl-XML-Sig.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
  • Xml\ \

    APP
    Xml\
    sig_project
🟢
PATCH DOSTĘPNY
Aktualizacja od producenta gotowa. Wdrożenie w ramach standardowego cyklu.
CWE
Referencje

Powiązane podatności

CVE-2026-9487CRITICAL9.1PL ✓ten sam produkt

XML::Sig dla Perl – signature wrapping przez zduplikowane ID

CVE-2025-40934CRITICAL9.3PL ✓ten sam produkt

XML-Sig dla Perl: pominięcie podpisu skutkuje błędną walidacją

CVE-2026-18568HIGH7.5PL ✓ten sam produkt

XML::Sig dla Perl — pominięcie weryfikacji podpisu XML (signature bypass)

CVE-2012-1102HIGH7.5ten sam produkt

It was discovered that the XML::Atom Perl module before version 0.39 did not disable external entities when pa...