CVE-2025-29775
published 2025-03-14CVE-2025-29775: xml-crypto is an XML digital signature and encryption library for Node.js. An attacker may be able to exploit a vulnerability in versions prior to 6.0.1…
PriorityP265critical9.3CVSS 4.0
AVNACLATNPRNUINVCHVIHVAHSCNSINSANEXCRXIRXARXMAVXMACXMATXMPRXMUIXMVCXMVIXMVAXMSCXMSIXMSAXSXAUXRXVXREXUX
EPSS
9.38%
94.8th percentile
xml-crypto is an XML digital signature and encryption library for Node.js. An attacker may be able to exploit a vulnerability in versions prior to 6.0.1, 3.2.1, and 2.1.6 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 to escalate privileges or impersonate another user. Users of versions 6.0.0 and prior should upgrade to version 6.0.1 to receive a fix. Those who are still using v2.x or v3.x should upgrade to patched versions 2.1.6 or 3.2.1, respectively.
Affected
6 ranges
| Vendor | Product | Version range | Fixed in |
|---|---|---|---|
| node-saml | xml-crypto | < 2.1.6 | 2.1.6 |
| node-saml | xml-crypto | — | — |
| node-saml | xml-crypto | — | — |
| node-saml | xml-crypto | >= 0 < 2.1.6 | 2.1.6 |
| node-saml | xml-crypto | >= 3.0.0 < 3.2.1 | 3.2.1 |
| node-saml | xml-crypto | >= 4.0.0 < 6.0.1 | 6.0.1 |
Detection & IOCsextracted from sources · hover to see the quote
snort
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"ET WEB_SPECIFIC_APPS xml-crypto / Node.js SAML Authentication Bypass Forged DigestValue Comment (CVE-2025-29775)"; flow:established,to_server; http.method; content:"POST"; http.request_body; content:"SAMLResponse|3d|"; fast_pattern; base64_decode:offset 0, relative; base64_data; content:"|3c|saml2p|3a|Response"; content:"|3c|DigestValue|3e 3c 21 2d 2d|"; pcre:"/^[A-Za-z0-9\x2b\x2f]+\x3d*\x2d\x2d\x3e[A-Za-z0-9\x2b\x2f]+\x3d*\x3c\x2fds\x3aDigestValue\x3e/R"; reference:url,workos.com/blog/samlstorm; reference:cve,2025-29775; classtype:web-application-attack; sid:2060960; rev:2; metadata:affected_product Node_js, attack_target Server, tls_state TLSDecrypt, created_at 2025_03_19, cve CVE_2025_29775, deployment Perimeter, deployment Internal, deployment SSLDecrypt, confidence Medium, signature_severity Major, tag Exploit, updated_at 2025_03_25, reviewed_at 2025_08_26, mitre_tactic_id TA0001, mitre_tactic_name Initial_Access, mitre_technique_id T1190, mitre_technique_name Exploit_Public_Facing_Application; target:dest_ip;)
bytes
|3c|DigestValue|3e 3c 21 2d 2d|
- →Look for HTTP POST requests containing a base64-encoded SAMLResponse body where, after decoding, the XML DigestValue element is immediately followed by an XML comment opener (<!--). This is the core injection pattern for the signature bypass.
- →After the XML comment opener inside DigestValue, the PCRE pattern matches base64 characters followed by --> and then more base64 characters before the closing </ds:DigestValue> tag. Use this regex to confirm exploitation: /^[A-Za-z0-9\x2b\x2f]+\x3d*\x2d\x2d\x3e[A-Za-z0-9\x2b\x2f]+\x3d*\x3c\x2fds\x3aDigestValue\x3e/
- →The attack targets SAML authentication flows. Monitor for SAMLResponse POST requests to server-side endpoints, particularly in environments using xml-crypto for XML signature verification (e.g., SAML SSO integrations).
- →The attack can be used to alter critical identity or access control attributes — monitor for unexpected privilege escalation or user impersonation events following SAML authentication in xml-crypto-dependent applications.
- ·The Snort/Suricata rule (sid:2060960) requires TLS decryption to be effective, as SAML traffic is typically sent over HTTPS. Deploy only in environments with TLS inspection (SSLDecrypt) enabled.
- ·Red Hat has assessed that no mitigation meeting their criteria is currently available for affected packages such as openshift-serverless-1/kn-backstage-plugins-eventmesh-rhel8; patching to fixed versions (6.0.1, 3.2.1, or 2.1.6) is the primary remediation.
CVSS provenance
nvdv4.09.3CRITICALCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/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
vendor_redhat9.3CRITICAL
Stop checking back — get the weekly exploitation signal.
Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.
OSV
xml-crypto Vulnerable to XML Signature Verification Bypass via DigestValue Comment
osv·2025-03-14
CVE-2025-29775 [CRITICAL] xml-crypto Vulnerable to XML Signature Verification Bypass via DigestValue Comment
xml-crypto Vulnerable to XML Signature Verification Bypass via DigestValue Comment
# 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 to escalate privileges or impersonate another user.
# Patches
All versions
c7RuVDYo83z2su5uk0Nla8DXcXvKYKgf7tZklJxL/LZ=
```
### Code to test
Pass in the decrypted version of the document
```js
decryptedDocument = ... // yours to implement
const digestValues = xpath.select(
"//*[loca
GHSA
xml-crypto Vulnerable to XML Signature Verification Bypass via DigestValue Comment
ghsa·2025-03-14
CVE-2025-29775 [CRITICAL] CWE-347 xml-crypto Vulnerable to XML Signature Verification Bypass via DigestValue Comment
xml-crypto Vulnerable to XML Signature Verification Bypass via DigestValue Comment
# 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 to escalate privileges or impersonate another user.
# Patches
All versions
c7RuVDYo83z2su5uk0Nla8DXcXvKYKgf7tZklJxL/LZ=
```
### Code to test
Pass in the decrypted version of the document
```js
decryptedDocument = ... // yours to implement
const digestValues = xpath.select(
"//*[loca
Red Hat
xml-crypto: xml-crypto Vulnerable to XML Signature Verification Bypass via DigestValue Comment
vendor_redhat·2025-03-14·CVSS 9.3
CVE-2025-29775 [CRITICAL] CWE-347 xml-crypto: xml-crypto Vulnerable to XML Signature Verification Bypass via DigestValue Comment
xml-crypto: xml-crypto Vulnerable to XML Signature Verification Bypass via DigestValue Comment
xml-crypto is an XML digital signature and encryption library for Node.js. An attacker may be able to exploit a vulnerability in versions prior to 6.0.1, 3.2.1, and 2.1.6 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 to escalate privileges or impersonate another user. Users of versions 6.0.0 and prior should upgrade to version 6.0.1 to receive a fix. Those who are still using v2.x or
Suricata
ET WEB_SPECIFIC_APPS xml-crypto / Node.js SAML Authentication Bypass Forged DigestValue Comment (CVE-2025-29775)
suricata·2025-03-19·CVSS 9.3
CVE-2025-29775 [CRITICAL] ET WEB_SPECIFIC_APPS xml-crypto / Node.js SAML Authentication Bypass Forged DigestValue Comment (CVE-2025-29775)
ET WEB_SPECIFIC_APPS xml-crypto / Node.js SAML Authentication Bypass Forged DigestValue Comment (CVE-2025-29775)
Rule: alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"ET WEB_SPECIFIC_APPS xml-crypto / Node.js SAML Authentication Bypass Forged DigestValue Comment (CVE-2025-29775)"; flow:established,to_server; http.method; content:"POST"; http.request_body; content:"SAMLResponse|3d|"; fast_pattern; base64_decode:offset 0, relative; base64_data; content:"|3c|saml2p|3a|Response"; content:"|3c|DigestValue|3e 3c 21 2d 2d|"; pcre:"/^[A-Za-z0-9\x2b\x2f]+\x3d*\x2d\x2d\x3e[A-Za-z0-9\x2b\x2f]+\x3d*\x3c\x2fds\x3aDigestValue\x3e/R"; reference:url,workos.com/blog/samlstorm; reference:cve,2025-29775; classtype:web-application-attack; sid:2060960; rev:2; metadata:affected_product Node_js, attack_targ
No public exploits indexed.
No writeups or analysis indexed.
https://github.com/node-saml/xml-crypto/commit/28f92218ecbb8dcbd238afa4efbbd50302aa9aedhttps://github.com/node-saml/xml-crypto/commit/886dc63a8b4bb5ae1db9f41c7854b171eb83aa98https://github.com/node-saml/xml-crypto/commit/8ac6118ee7978b46aa56b82cbcaa5fca58c93a07https://github.com/node-saml/xml-crypto/releases/tag/v2.1.6https://github.com/node-saml/xml-crypto/releases/tag/v3.2.1https://github.com/node-saml/xml-crypto/releases/tag/v6.0.1https://github.com/node-saml/xml-crypto/security/advisories/GHSA-x3m8-899r-f7c3https://workos.com/blog/samlstorm
2025-03-14
Published