Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Network-reachable persistence backend (AV:N), low complexity once write access exists (AC:L), requires write privilege to the store (PR:L), no user interaction, full RCE impact on JVM.
Primary rating from Vendor (vmware).
CVSS VectorVendor: vmware
Lifecycle Timeline
3DescriptionCVE.org
Spring Statemachine's Kryo-based persistence backends (JPA, MongoDB, Redis and ZooKeeper) deserialise persisted state-machine contexts without enforcing a class allowlist (CWE-502, deserialisation of untrusted data), which can lead to remote code execution inside the application JVM.
Affected versions: Spring Statemachine 4.0.0 through 4.0.1 Spring Statemachine 3.2.0 through 3.2.4
Articles & Coverage 1
AnalysisAI
Remote code execution in Spring Statemachine 3.2.0-3.2.4 and 4.0.0-4.0.1 allows authenticated attackers to execute arbitrary code inside the application JVM by injecting malicious serialized Java objects into the Kryo-based persistence backends (JPA, MongoDB, Redis, or ZooKeeper). The flaw stems from deserializing persisted state-machine contexts without enforcing a class allowlist, a classic CWE-502 pattern that has historically yielded reliable gadget-chain exploitation in Java applications. No public exploit identified at time of analysis, but the deserialization sink and Kryo gadget ecosystem make weaponization straightforward once an attacker can write to the persistence store.
Technical ContextAI
Spring Statemachine is a Spring Framework library used to build hierarchical and distributed state machines in Java applications, with optional persistence so a state-machine's runtime context can survive restarts or be shared across cluster nodes. The library supports four persistence backends - JPA (relational databases), MongoDB, Redis, and Apache ZooKeeper - each backed by the Kryo serialization framework to marshal the StateMachineContext object. CWE-502 (Deserialization of Untrusted Data) applies because Kryo deserializers are invoked on persisted blobs without registering an allowlist of permitted classes; when Kryo is configured in its default 'auto-instantiate any class' mode, an attacker who can write into the backing store can supply a payload that constructs gadget chains (similar to ysoserial chains for Java) leading to RCE in the JVM hosting the state machine.
RemediationAI
Patch status: patch available per vendor advisory at https://spring.io/security/cve-2026-41862 - consult the advisory for the exact fixed releases in the 3.2.x and 4.0.x lines and upgrade Spring Statemachine accordingly. As a compensating control until patching, configure a strict Kryo class allowlist (Kryo.setRegistrationRequired(true) plus explicit kryo.register(...) calls for every legitimate StateMachineContext type) so unknown classes fail to deserialize; this is the most surgical mitigation but requires enumerating every persisted type. Alternatively, switch the persistence layer to a non-Kryo serializer (e.g., a JSON-based StateMachineSerialisationService), accepting a migration cost for existing persisted contexts. As a deployment-level mitigation, restrict write access on the JPA/Mongo/Redis/ZooKeeper instance to only the application identity and audit for any unexpected writers, recognizing this does not protect against compromise of that identity.
Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m
Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti
Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent
Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug
JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up
Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up
The WLS Security component in Oracle WebLogic Server 10.3.6.0, 12.1.2.0, 12.1.3.0, and 12.2.1.0 allows remote attackers
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow
Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla
The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during
Same weakness CWE-502 – Deserialization of Untrusted Data
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-38596
GHSA-85qj-f5wg-rwp9