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-88901 — Runnable Spring Boot proof-of-concept reproducing CVE-2026-88901, an XXE (CWE-611) flaw in Apache Camel camel-smooks, with affected and patched control runs. | Kitploit
Tools/GitHubGitHub/oscerd/cve-2026-88901
Defensive ToolsVulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityLearning & Education
GitHuboscerd/cve-2026-88901

CVE-2026-88901

Runnable Spring Boot proof-of-concept reproducing CVE-2026-88901, an XXE (CWE-611) flaw in Apache Camel camel-smooks, with affected and patched control runs.

View Repository
11 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-88901 — camel-smooks: XML External Entity (XXE) processing

Runnable proof-of-concept reproducer for the Apache Camel vulnerability where the Smooks data format (.unmarshal().smooks(...)) and the Smooks component (smooks:) parsed the incoming XML body with the reader Smooks resolves by default (the Woodstox SAX parser), which resolves external general and parameter entities and loads external DTDs — and camel-smooks applied none of the parser hardening the other Camel XML components apply. A DOCTYPE with an external subset, or an external general entity, declared in the XML document is therefore resolved and expanded while the body is unmarshalled, and the resolved content is bound into the result. An external sender whose XML reaches a camel-smooks data format or endpoint could read files readable by the Camel process, or make the process issue requests to internal hosts (CWE-611). No non-default option is required — resolving external entities was the default behaviour.

Spring Boot only. This reproducer ships a single Camel Spring Boot module. camel-smooks has no camel-quarkus-smooks extension, so there is no Quarkus counterpart to reproduce. The Spring Boot module demonstrates the affected and the fixed behaviour.

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

What it demonstrates

The driver mirrors the fix's own regression test (SmooksDataFormatXmlSecurityTest). A benign marker file is written to a temp directory, and an XML <customer> document is unmarshalled through the real SmooksDataFormat with the stock smooks-config.xml (binding the document into a Customer bean). The document's firstName is an external entity pointing at the marker file:

<!DOCTYPE customer [<!ENTITY xxe SYSTEM "file:///…/secret.txt">]>
<customer><firstName>&xxe;</firstName>…</customer>
  • Affected: the entity is resolved, so the marker file's content is bound into Customer.firstName — the file leaked into the unmarshalled bean.
  • Fixed: the body is pre-parsed with a hardened DocumentBuilder (external entities and external DTD loading disabled), so the entity is not resolved and the marker never appears.
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack     # affected: firstName = the marker file content; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -jar target/cve-2026-88901-smooks-xxe-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack     # fixed: firstName null, marker not leaked; >>> Not exploited

Vulnerability Summary

PropertyValue
Componentcamel-smooks (Smooks data format and component)
CWECWE-611 (Improper Restriction of XML External Entity Reference)
SeverityHIGH
Attack vectorAn external sender supplies the XML message body unmarshalled by a camel-smooks data format or endpoint using the default XML reader
ImpactRead local files readable by the Camel process; SSRF to internal hosts the document names
Affected VersionsFrom 4.7.0 before 4.18.5, from 4.19.0 before 4.22.1
Fixed Versions4.18.5, 4.22.1, 4.23.0
JIRACAMEL-24677
Reported byh1ei1

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

The fix

camel-smooks now pre-parses untrusted XML with a javax.xml.parsers.DocumentBuilder configured with FEATURE_SECURE_PROCESSING and with external general entities, external parameter entities and external DTD loading disabled, and hands Smooks the resulting DOM — matching the secure configuration used by XmlConverter and the other Camel XML components. The hardening applies only when the Smooks configuration parses XML with its default reader (so EDI, CSV, JSON and custom-reader configurations, and the marshalling direction, are unchanged). A new allowExternalEntities option, disabled by default, restores the previous behaviour for trusted legacy configurations.

Mitigation if you cannot upgrade

Do not apply camel-smooks to XML received from untrusted senders.

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" file is created by the reproducer itself in a temp directory and contains only a benign marker string; it is deleted after the check. Do not use this material against systems you do not own or operate.

Download Tool