GitHub Advisoryadvisory · npm
GHSA-9p8x-f768-wp2g xml-crypto Vulnerable to XML Signature Verification Bypass via Multiple SignedInfo References
CRITICAL
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
- https://github.com/node-saml/xml-crypto/security/advisories/GHSA-9p8x-f768-wp2g web
- https://nvd.nist.gov/vuln/detail/CVE-2025-29774 advisory
- https://github.com/node-saml/xml-crypto/commit/28f92218ecbb8dcbd238afa4efbbd50302aa9aed web
- https://github.com/node-saml/xml-crypto/commit/886dc63a8b4bb5ae1db9f41c7854b171eb83aa98 web
- https://github.com/node-saml/xml-crypto/commit/8ac6118ee7978b46aa56b82cbcaa5fca58c93a07 web
- https://github.com/node-saml/xml-crypto package
- https://github.com/node-saml/xml-crypto/releases/tag/v2.1.6 web
- https://github.com/node-saml/xml-crypto/releases/tag/v3.2.1 web
- https://github.com/node-saml/xml-crypto/releases/tag/v6.0.1 web
- https://workos.com/blog/samlstorm web