CVE-2026-92121: Apache WSS4J: WS-SecurityPolicy signature checks skipped in the streaming code after an STR-Transform reference
In the WSS4J streaming (StAX) code, a signature reference using the WS-Security STR-Transform leaves an internal "inside signed content" flag permanently set. The WS-SecurityPolicy enforcer uses that flag to decide whether an element needs checking, so it stops evaluating SignedParts and SignedElements for the rest of the message. A policy requiring the SOAP Body to be signed is then satisfied even when the Body carries no signature, removing the protection against XML Signature Wrapping. Signature verification itself is unaffected. The DOM code is not affected. Users are recommended to upgrade to versions 4.0.2 or 3.0.6 or 2.4.4 which fix this issue.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
Apache WSS4Jto a version that resolves this vulnerability.Fixed in 4.0.2 - Upgrade
Upgrade
Apache WSS4Jto a version that resolves this vulnerability.Fixed in 3.0.6 - Upgrade
Upgrade
Apache WSS4Jto a version that resolves this vulnerability.Fixed in 2.4.4
Event History
Frequently Asked Questions
Which WSS4J deployments are affected?
Only the streaming (StAX) processing code is affected. The DOM code is not affected.
What must an attacker include to bypass SOAP Body signature-policy enforcement?
The message must contain a signature reference using the WS-Security STR-Transform. This can leave the streaming policy enforcer treating subsequent content as signed, allowing a policy requiring a signed SOAP Body to be satisfied even when the Body is not signed.
Does this flaw break XML signature verification itself?
No. Signature verification itself is unaffected; the issue is that the WS-SecurityPolicy enforcement of SignedParts and SignedElements can be skipped for the remainder of the message.
Which versions contain the fix?
Upgrade to Apache WSS4J version 4.0.2, 3.0.6, or 2.4.4.