Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Submit
ToolsExploitsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

FeedsContactPrivacy© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2026-85245 — Runnable Spring Boot proof-of-concept reproducing CVE-2026-85245, a camel-thrift cross-exchange data disclosure, with affected vs fixed comparison and mitigation notes. | Kitploit
Tools/GitHubGitHub/oscerd/cve-2026-85245
Defensive ToolsVulnerability AnalysisExploitationWeb Application ExploitationLearning & Education
GitHuboscerd/cve-2026-85245

CVE-2026-85245

Runnable Spring Boot proof-of-concept reproducing CVE-2026-85245, a camel-thrift cross-exchange data disclosure, with affected vs fixed comparison and mitigation notes.

View Repository
1 day agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

CVE-2026-85245 — camel-thrift: cross-exchange data disclosure (shared defaultInstance)

Runnable proof-of-concept reproducer for the Apache Camel vulnerability where the Thrift data format unmarshalled into the shared defaultInstance of the target type rather than into a fresh copy, and returned that shared object as the exchange body. Because the instance is shared process-wide, state written while unmarshalling one message stayed on the object and was visible to every later message that used the same type. Fields absent from a later payload retained the previous message's values, so content belonging to one sender could be read while processing another sender's message, and concurrent exchanges could observe each other's partially written state. In a deployment that serves more than one tenant or user through the same route, that is disclosure of one party's data to another.

Spring Boot only. There is no camel-quarkus-thrift extension, so this reproducer ships a single Camel Spring Boot module. (The flaw is in the component's ThriftDataFormat, which is runtime-independent.)

RuntimeDirectoryStack
Camel Spring Bootcamel-spring-boot/Spring Boot 3.5.13 + camel-thrift 4.22.0 (affected; fixed 4.22.1)

What it demonstrates

A route defines one ThriftDataFormat (backed by the generated Thrift type Work) and reuses it for every message, as routes normally do. Two tenants send a message through it:

  • tenant A: Work{num1=1, op=ADD, comment="TENANT-A-SECRET-…"} — the optional comment field carries sensitive data;
  • tenant B: Work{num1=3, op=SUBTRACT} — no comment field.

The route unmarshals tenant A's message, then tenant B's.

  • Affected: tenant B's unmarshalled object comes back carrying tenant A's comment — Thrift only assigns the fields present in the incoming bytes, and both messages were deserialized into (and returned as) the same shared instance, so B's missing field kept A's value. The two bodies are literally the same object.
  • Fixed: tenant B's comment is null — each exchange gets its own cleared copy.
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack     # affected: B sees A's secret; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -jar target/cve-2026-85245-thrift-cross-exchange-disclosure-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack     # fixed: B's comment is null; >>> Not exploited

Vulnerability Summary

PropertyValue
Componentcamel-thrift (ThriftDataFormat.unmarshal)
CWECWE-488 (Exposure of Data Element to Wrong Session)
SeverityMEDIUM
Attack vectorTwo messages of the same Thrift type through one route; a later message omitting a field inherits the earlier one's value
ImpactCross-exchange / cross-tenant data disclosure; concurrent exchanges can observe each other's partially written state
Affected VersionsFrom 4.0.0 before 4.18.5, from 4.19.0 before 4.22.1
Fixed Versions4.18.5, 4.22.1, 4.23.0
JIRACAMEL-24442
CreditClaude Security Scan Tool

Advisory: https://camel.apache.org/security/CVE-2026-85245.html

The generated Thrift types (Work, Operation) are the public test fixtures from Apache Camel's own camel-thrift tests.

The fix

ThriftDataFormat.unmarshal now deserializes into a per-exchange copy: TBase instance = defaultInstance.deepCopy(); instance.clear(); — then deserializes the bytes into instance and returns it. Each exchange gets its own cleared object, so no field carries between messages and no two exchanges share a body.

Mitigation if you cannot upgrade

Copy the unmarshalled body into a new instance immediately after the data format runs, and do not retain references to the returned object.

Disclaimer

This repository is published for educational and defensive purposes: to help Apache Camel users understand the vulnerability, verify whether they are affected, and confirm that upgrading resolves it. The "secret" is an inert, made-up marker string. Do not use this material against systems you do not own or operate.

Download Tool