HIGH✓ PATCH🇬🇧 English

CVE-2026-18568

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

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

Biblioteka XML::Sig dla języka Perl w wersjach od 0.29 do poniżej 0.72 pozwala na ominięcie weryfikacji podpisu XML, ponieważ funkcja verify zwraca wartość true nawet gdy żaden podpis nie został faktycznie sprawdzony kryptograficznie. Podatność umożliwia atakującemu podsunięcie sfałszowanego dokumentu XML, który zostanie zaakceptowany jako poprawnie podpisany.

Pokaż oryginał (EN)

XML::Sig versions from 0.29 before 0.72 for Perl allow signature verification bypass because verify returns true when every signature was skipped before any cryptographic check. verify in lib/XML/Sig.pm counts the `//dsig:Signature` elements into `$numsigs` and iterates over them, but two paths reach `next` before any digest or key check runs: a `SignedInfo/Reference/@URI` that resolves to no element while `$numsigs` is greater than 1, and, when `id_attr` is set, a reference that does not match the requested ID. The loop records nothing about what it checked, so when every signature takes one of those paths control reaches the unconditional `return 1` that ends verify. Two `Signature` elements whose Reference URI names an ID that no element carries is enough, as is one such element combined with `id_attr`. Any caller that passes untrusted XML to verify can receive a true return for a document in which no digest and no signature value was checked; a `cert` or `cert_text` trust anchor does not change this, because no key check runs. Versions up to 0.28 use an XML::XPath based verify that has no such skip and are not affected.

🤖 Analiza AI
Jak działa

Funkcja verify w pliku lib/XML/Sig.pm zlicza elementy dsig:Signature i iteruje po nich, jednak dwie ścieżki kodu mogą spowodować pominięcie (next) każdego elementu jeszcze przed jakimkolwiek sprawdzeniem skrótu (digest) lub klucza: pierwsza — gdy URI referencji w SignedInfo/Reference/@URI nie wskazuje na żaden element, a liczba podpisów jest większa niż 1; druga — gdy ustawiony jest atrybut id_attr, a referencja nie pasuje do żądanego ID. Pętla nie rejestruje żadnych informacji o tym, co faktycznie sprawdziła, więc gdy wszystkie podpisy trafią na jedną z tych ścieżek, wykonanie kodu dociera do bezwarunkowego return 1 kończącego funkcję. Wystarczą dwa elementy Signature, których URI odnosi się do nieistniejącego ID, lub jeden taki element w połączeniu z ustawionym id_attr — skonfigurowana kotwica zaufania (cert lub cert_text) nie ma znaczenia, bo sprawdzenie klucza nigdy nie następuje.

Skutki

Atakujący może dostarczyć dowolnie spreparowany dokument XML, który przejdzie weryfikację podpisu bez jakiegokolwiek sprawdzenia kryptograficznego, co umożliwia podszywanie się pod zaufane podmioty, manipulację danymi oraz obejście mechanizmów uwierzytelniania i autoryzacji opartych na podpisach XML (np. SAML).

Mitygacja

Należy zaktualizować bibliotekę XML::Sig do wersji 0.72 lub nowszej. Patch dostępny jest w repozytorium projektu (commit ef22cfed1ac0f29b316d17eb79cf6480e03ae16a) oraz poprzez CPAN (dystrybucja XML-Sig-0.72).

Kogo dotyczy

XML::Sig dla Perl w wersjach od 0.29 do poniżej 0.72. Wersje do 0.28 (używające weryfikacji opartej na XML::XPath) nie są podatne.

Uwagi

W referencjach wskazano powiązane CVE-2025-40934. Podatność jest szczególnie istotna w systemach wykorzystujących XML::Sig do weryfikacji asercji SAML, gdzie sfałszowany dokument może skutkować nieautoryzowanym dostępem.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/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-9390CRITICAL9.1PL ✓ten sam produkt

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

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-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...