GitHub Advisoryadvisory · npm

GHSA-9p8x-f768-wp2g xml-crypto Vulnerable to XML Signature Verification Bypass via Multiple SignedInfo References

CRITICAL Published 2025-03-14 Modified 2025-03-16 Official page ↗
Aliases
CVE-2025-29774
Ecosystem
npm
Packages
xml-crypto
Severity
Critical
CVSS vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Weaknesses
CWE-347
Reviewed
2025-03-14

Affected packages

• npm xml-crypto: >= 4.0.0, < 6.0.1 → fixed in 6.0.1 • npm xml-crypto: >= 3.0.0, < 3.2.1 → fixed in 3.2.1 • npm xml-crypto: < 2.1.6 → fixed in 2.1.6

Description

Impact An attacker may be able to exploit this vulnerability to bypass authentication or authorization mechanisms in systems that rely on xml-crypto for verifying signed XML documents. The vulnerability allows an attacker to modify a valid signed XML message in a way that still passes signature verification checks. For example, it could be used to alter critical identity or access control attributes, enabling an attacker with a valid account to escalate privileges or impersonate another user. Patches All versions forgeddigestvalue realdigestvalue ``` Code to test Pass in the decrypted version of the document ```js decryptedDocument = ... // yours to implement // This check is per-Signature node, not per-document const signedInfoNodes = xpath.select(".//*[local-name(.)='SignedInfo']", signatureNode); if (signedInfoNodes.length === 0) { // Not necessarily a compromise, but invalid. Should contain exactly one SignedInfo node // Yours to implement } if (signedInfoNodes.length > 1) { // Compromise detected, yours to implement } ```

Related

Alias · CVE (1)

  • CVE-2025-29774 xml-crypto is an XML digital signature and encryption library for Node.js. vulnerability

Weakness · CWE (1)

  • CWE-347 Improper Verification of Cryptographic Signature weakness

References