CVE-2024-47552
Apache Seata (incubating): Deserialization of untrusted Data in jraft mode in Apache Seata Server
Record summary
EIP currently links 1 curated repository PoC to CVE-2024-47552.
Description
Deserialization of Untrusted Data vulnerability in Apache Seata (incubating). This issue affects Apache Seata (incubating): from 2.0.0 before 2.2.0. Severity Justification: The Apache Seata security team assesses the severity of this vulnerability as "Low" due to stringent real-world mitigating factors. First, the vulnerability is strictly isolated to the Raft cluster mode, an optional and non-default feature introduced in v2.0.0, while most users rely on the unaffected traditional architecture. Second, Seata is an internal middleware; communication between TC and RM/TM occurs entirely within trusted internal networks. An attacker would require prior, unauthorized access to the Intranet to exploit this, making external exploitation highly improbable. Users are recommended to upgrade to version 2.2.0, which fixes the issue.
Exploitation context
Available material
- Curated repository PoCs
- 1
CISA SSVC decision
CISA Coordinator · SSVC 2.0.3 · Evaluated Mar 24, 2025 · Source: CVE List
Affected products and versions
2| Product | Source | Version range | Status |
|---|---|---|---|
Apache Seata (incubating)Browse Apache Software Foundation / Apache Seata (incubating)org.apache.seata:seata-serverDefault status: unaffected | CVE List | 2.0.0 to < 2.2.0 | affected |
org.apache.seata:seata-config-coreBrowse Maven / org.apache.seata:seata-config-core | GitHub Advisory | 2.0.0 to < 2.2.0 · Fixed in 2.2.0 | affected |
Proofs of concept
1Curated repository PoCs
GitHubCVE-2025-32897Curated repository PoCby exploitintelStars: 8Exploit14 files
Analysis
Technical assessment
The artifact contains a full exploit orchestrator (poc/poc.py) and a Java exploit (poc/ExploitCVE202532897.java) that demonstrate insecure deserialization in Apache Seata by directly calling vulnerable methods to achieve arbitrary class loading and JNDI injection, which are exploitation behaviors.
Backdoor review
No backdoor observed in reviewed code
The PoC demonstrates CVE-2025-32897 deserialization vulnerabilities in Apache Seata. All code (Java exploit, Python orchestrators) targets the stated vulnerability vectors (CustomDeserializer, RaftSnapshotSerializer, RaftSyncMessageSerializer) and performs only expected exploit behavior: arbitrary class loading, JNDI injection attempts, and unrestricted deserialization. No concealed backdoor, credential theft, persistence, or unrelated payload delivery was observed.
Classification basis and observed behavior
Classification basis
The primary artifact is classified as an exploit because it contains code that exercises the vulnerability to achieve a malicious effect (arbitrary class loading and JNDI injection) rather than merely detecting it. The Java class ExploitCVE202532897 directly calls vulnerable methods to load arbitrary classes and trigger JNDI lookups, and the Python orchestrator deploys and runs this exploit.
poc/ExploitCVE202532897.java:88-216poc/ExploitCVE202532897.java:238-357poc/poc.py:12-36poc/poc.py:165-203Requirements
- Requires a running Docker container with the vulnerable Apache Seata 2.2.0 instance.
poc/poc.py:51poc/poc.py:220-228 - Requires Docker CLI access to execute commands inside the container.
poc/poc.py:35poc/poc.py:96-99
Observed behavior
- Deploys a Java exploit into the vulnerable Docker container and compiles it.
poc/poc.py:165-192 - Starts a TCP callback listener to catch JNDI connection attempts from the exploit.
poc/poc.py:106-158poc/poc.py:261-265 - Executes the Java exploit inside the container, which directly calls vulnerable Seata methods (JacksonSerializer.deserialize, RaftSnapshotSerializer.decode) to trigger arbitrary class loading and JNDI injection.
poc/ExploitCVE202532897.java:88-216poc/ExploitCVE202532897.java:238-357poc/poc.py:195-203poc/poc.py:272-276 - Constructs a Java serialized HashMap payload entirely in Python and passes it to the vulnerable RaftSnapshotSerializer.decode() method inside the container.
poc/poc_vector2.py:65-141poc/poc_vector2.py:178-219
Behaviors behind the backdoor verdict
Observables
- Exploit Behavior
- Payload withheldMatches the described CVE-2025-32897 vulnerability vectors; no unrelated actions
poc/ExploitCVE202532897.java:88-216 - Exploit Behavior
- Payload withheldStandard PoC orchestration for containerized lab environment; no hidden commands
poc/poc.py:165-203 - Exploit Behavior
- Payload withheldDemonstrates unrestricted deserialization vector; payload is benign HashMap
poc/poc_vector2.py:65-141 - Exploit Behavior
- Payload withheldShows architectural bypass of PERMITS whitelist; no malicious payload execution
poc/poc_vector3.py:58-157
What the analysis did not establish
- The evidence packet reports complete_artifact_coverage as false, indicating that not all files from the artifact were included in the analysis.
- The exploit code is executed inside a Docker container via 'docker exec' and does not demonstrate a network-based attack against the SOFABolt protocol.
- Binary files (1 non-text media file, 6 unclassified files) were not analyzed; their content is unknown.
- The review is limited to the supplied text evidence and does not verify runtime behavior or network traffic.
This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.