ZeroHour

CVE-2026-89043

niche

SAML XML Signature Wrapping Bypass in passport-saml-encrypted (Node.js)

CVSS 4.0
9.1 critical
EPSS
Published
()
Modified
AI analysis

CVE-2026-89043 is an XML signature wrapping flaw (CWE-347) in the passport-saml-encrypted Node.js (npm) package: the code that verifies the XML signature and the code that extracts the SAML assertion perform independent XPath lookups with no cross-validation that they reference the same element. Because the signature check can pass against the original, genuinely signed assertion while the identity is read from an attacker-supplied element, an attacker holding any validly signed SAML message — for example, a response issued for their own legitimate login — can prepend a forged, unsigned assertion naming a victim and be accepted as that user. This yields unauthenticated impersonation of arbitrary users at any service provider relying on the package, with high confidentiality and integrity impact and no availability impact (CVSS 4.0 score 9.1, Critical); no stolen keys or passwords are required. All versions through and including 0.1.13 are affected, so any Node.js application using passport-saml-encrypted for SAML single sign-on is in scope. No public proof-of-concept is known and the flaw is not in CISA's Known Exploited Vulnerabilities catalog, so exploitation is not confirmed, though the low complexity of the attack once a signed message is obtained means it should not be ruled out.

What to do: Upgrade passport-saml-encrypted to a patched release beyond 0.1.13 as soon as one is available; until then, where configuration allows, require signed assertions and take the authenticated identity from the same XML element whose signature is validated. Check identity-provider and application authentication logs for unexplained SSO logins, since an attacker needs only any validly signed SAML message (for example, one issued for their own legitimate login) to impersonate an arbitrary user.

Affected
passport-saml-encrypted project (npm / Node.js) passport-saml-encrypted (npm package)all versions through and including 0.1.13
Estimated exposure
nicheunknown; plausibly on the order of only thousands of Node.js SSO deployments (estimate — no published install counts provided) — The advisory record contains no install, download, or internet-exposure counts; passport-saml-encrypted is a niche package in the passport-saml family used only by Node.js applications that integrate SAML authentication through it, so…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

passport-saml-encrypted through 0.1.13 contains an XML signature wrapping vulnerability where signature verification and assertion extraction use independent XPath lookups with no cross-validation. Attackers holding any validly signed SAML message can prepend a forged unsigned assertion that gets accepted as the verified identity while the genuine signature validates against the original assertion.

Weakness
CWE-347
Vector
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X

In the news

No ingested article mentions this CVE yet.