Automated Threat Modeling

Brief Summary: CVE-2026-40994 Spring Web Services BSP Enforcement Bypass via Insecure Default Initialization

A short review of CVE-2026-40994, a high-severity insecure default in Spring Web Services. Wss4jSecurityInterceptor silently disables WS-I Basic Security Profile enforcement, so SOAP messages that violate BSP pass validation on affected deployments.

CVE Analysis

8 min read

ZeroPath CVE Analysis
ZeroPath CVE Analysis

2026-06-11

Brief Summary: CVE-2026-40994 Spring Web Services BSP Enforcement Bypass via Insecure Default Initialization
Experimental AI-Generated Content

This CVE analysis is an experimental publication that is completely AI-generated. The content may contain errors or inaccuracies and is subject to change as more information becomes available. We are continuously refining our process.

If you have feedback, questions, or notice any errors, please reach out to us.

[email protected]

Introduction

A silently disabled security control in one of the most widely deployed Java frameworks just exposed enterprise SOAP services to message integrity bypass. Spring Web Services' Wss4jSecurityInterceptor initialized its WS-I Basic Security Profile (BSP) compliance flag in a way that turned off BSP enforcement for inbound messages. That contradicts the secure default built into the underlying Apache WSS4J library and leaves services willing to accept non-compliant WS-Security messages over the network.

Spring powers applications at more than half of the Fortune 500, and SOAP-based web services remain a backbone of financial services, healthcare, and government integrations. That gives this insecure default, scored CVSS 8.2, a significant blast radius. The vulnerability was disclosed on June 10, 2026, as part of what Broadcom described as the largest Spring security update in the framework's 23-year history.

Technical Information

Root Cause: Insecure Default Initialization (CWE-1188)

The vulnerability is in the Wss4jSecurityInterceptor class in Spring Web Services. This component enforces WS-Security standards on SOAP messages and delegates the cryptographic processing to Apache WSS4J. During initialization, the interceptor configures a RequestData object that controls how WSS4J validates inbound messages.

The flaw itself is simple. Wss4jSecurityInterceptor initialized its BSP compliance flag so that inbound validation disabled WSS4J BSP enforcement on RequestData. That directly contradicts the secure default Apache WSS4J sets. In WSS4J 1.6.x and later, the wsiBSPCompliant flag in WSSConfig defaults to true, so BSP checks stay active unless someone explicitly turns them off. The Spring WS interceptor's initialization logic overrode that default, which stripped BSP validation from any application that used the interceptor without explicitly calling setBspCompliant(true).

The weakness falls under CWE-1188 ("Initialization of a Resource with an Insecure Default"), which describes cases where "the product initializes or sets a resource with a default that is intended to be changed by the product's installer, administrator, or maintainer, but the default is not secure." The CWE documentation notes that "developers often choose default values that leave the product as open and easy to use as possible out of the box," which is what happened here.

What BSP Enforcement Does

The WS-I Basic Security Profile (BSP) 1.1 specification is an industry standard for interoperability between different WS-Security stacks. It clarifies and narrows the scope of the various WS-Security standards. With BSP enforcement active, WSS4J checks that inbound messages follow strict rules on:

  • Security element ordering
  • Algorithm strength requirements
  • Signature and timestamp profiles
  • Token profile conformance

With BSP enforcement disabled, WSS4J skips these conformance checks entirely, and messages that violate BSP rules pass validation as if the rules did not exist.

Attack Flow

The CVSS vector AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N describes the exploitation profile:

CVSS ComponentValueImplication
Attack VectorNetworkExploitable remotely
Attack ComplexityLowNo specialized conditions required
Privileges RequiredNoneNo authentication needed
User InteractionNoneNo user action required
ScopeUnchangedImpact confined to the vulnerable component
ConfidentialityLowMinor information disclosure possible
IntegrityHighComplete integrity compromise of message validation
AvailabilityNoneNo direct availability impact

An attacker exploits this vulnerability in two steps:

  1. Identify a target service that uses Wss4jSecurityInterceptor for inbound WS-Security validation. These are SOAP endpoints, commonly found in enterprise and government environments.
  2. Craft SOAP messages that violate BSP rules. Because BSP enforcement is silently disabled by default, the service will accept these non-compliant messages.

Two preconditions must hold:

  • The application uses Wss4jSecurityInterceptor or equivalent wiring for inbound WS-Security validation.
  • BSP compliance has not been explicitly enabled with the setBspCompliant setter.

The interceptor applies the insecure default automatically, so most deployments that use it would be vulnerable without any misconfiguration by the operator. The application appears to work normally. There is no error, no warning, and no sign that an entire class of validation has been silently disabled.

Distinction from Other CVEs in the Same Release

CVE-2026-40994 differs from the other six CVEs patched in the same release. CVE-2026-40995 (disabled account bypass), CVE-2026-40996 (weak RSA algorithm), CVE-2026-40998 (XXE), and CVE-2026-40999 (SSRF) are distinct implementation flaws. CVE-2026-40994 is a configuration default flaw. It needs no logic error in how a specific message construct is processed, and instead silently disables an entire class of validation. That makes it harder to detect, because the application appears to work normally, and broader in impact, because every BSP-defined check is skipped.

The June 10, 2026 release addressed these CVEs:

CVEDescription
CVE-2026-40994BSP enforcement disabled by default (this CVE)
CVE-2026-40995X509AuthenticationProvider ignores disabled/locked/expired account state
CVE-2026-40996Weak RSA PKCS #1 v1.5 key transport algorithm not disabled
CVE-2026-40997Error messages leak specific authentication failure reason (user enumeration)
CVE-2026-40998Jaxp13XPathTemplate vulnerable to XXE attacks
CVE-2026-40999SSRF via WS-Addressing out-of-band replies
CVE-2026-41000Replay cache for UsernameToken nonce and timestamps misconfigured

Affected Systems and Versions

Four major version branches of Spring Web Services are affected:

Version BranchAffected RangeFixed Version (OSS)Fixed Version (Enterprise)
5.0.x5.0.0 through 5.0.15.0.25.0.1.1
4.1.x4.1.0 through 4.1.34.1.44.1.3.1
4.0.x4.0.0 through 4.0.18Not available (OSS EOL)Via Enterprise Support
3.1.x3.1.0 through 3.1.8Not available (OSS EOL)Via Enterprise Support

Any application that uses Wss4jSecurityInterceptor for inbound WS-Security validation is vulnerable unless BSP compliance has been explicitly enabled with the setBspCompliant(true) setter. The 4.0.x and 3.1.x branches no longer have active open-source support and have no public patches. Fixes for these branches are available only through VMware's Enterprise Support offering.

Spring Framework 6.2 and Spring Boot 3.5 reach end of life on June 30, 2026, just weeks after this disclosure. Organizations on those versions face compounding pressure to upgrade both their Spring versions and their support contracts to keep security coverage.

Vendor Security History

The Spring ecosystem has had a steady run of security advisories in 2026:

  • CVE-2026-41842 and CVE-2026-41849: Spring Framework Denial of Service vulnerabilities
  • CVE-2026-22732: Spring Security HTTP caching issues under certain conditions
  • CVE-2026-40976: Spring Boot default web security bypass

Insecure default configurations have been a recurring theme in Spring security advisories. CVE-2026-40994 is another case of a framework component shipping with a default that weakened security instead of enforcing it.

Broadcom's coordinated June 2026 release fixed seven security vulnerabilities in Spring Web Services at once, and was described as the largest Spring security update in the framework's 23-year history. The size of the release was reportedly driven by a 1,700% monthly increase in AI-discovered advisories affecting the Java and Spring ecosystem.

VulnCheck's analysis of routinely targeted vulnerabilities in 2026 documented cases where Spring-adjacent vulnerabilities that were not exploited at time of disclosure were later used in the wild. That is a reason to patch promptly even when no exploitation has been confirmed.

References

Detect & fix
what others miss

Works with
  • GitHub
  • GitLab
  • Bitbucket
  • Azure DevOps Services
  • Gerrit
  • CVS
  • Jira
  • Linear
  • Slack
  • Security Compass
Explore integrations
Security magnifying glass visualization