Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend untrusted XML with external-entity DOCTYPE to Camel route
-
DeliveryRoute presents body as stream-based Source to XQuery
-
ExploitSaxon default Configuration resolves external entity/DTD
-
ExecutionRead local files or issue SSRF requests
-
ImpactExfiltrate file contents to attacker
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A02:2025 - Security Misconfiguration
ASVS 5.0
V13 - Configuration XML external entity prevention
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that an XQuery expression or the xquery component/language evaluate a message body that is already a javax.xml.transform.Source AND that the Source is stream-based (so Saxon must parse it itself). This arises when a route calls convertBodyTo(Source.class), or when an earlier component/processor sets the body to a stream-based Source, before XQuery evaluation. The attacker must get untrusted XML containing a DOCTYPE with an external subset or an external entity onto that path. What LIMITS exploitation: bodies of type String, byte[], or InputStream are NOT vulnerable because Camel's XML type converters build a hardened, external-entity-safe Source for them; a route that does not convert to or set a Source body is not exposed; and only Apache Camel 4.0.0-4.18.4 and 4.19.0-4.22.1 are affected. No non-default Saxon option is required - the vulnerable default Configuration is used whenever the route does not supply its own. |
| Impact | This is a CWE-611 XML External Entity flaw in Apache Camel's camel-saxon XQuery support, scored CVSS 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N) with confidentiality-only impact. The network, no-privilege, no-interaction vector reflects that an external sender's XML can reach the vulnerable parser, but the signals must be read together: the vuln.today priority is 'this_week' (not act_now/emergency), no EPSS score and no CISA KEV entry were provided, and no public exploit is listed - so there is no evidence of active or widespread exploitation, and this is a prioritized-but-not-emergency patching item rather than a drop-everything event. Critically, the CVSS PR:N/UI:N vector overstates real-world reachability: exploitation does not fire against a default standalone deployment but only when a route evaluates XQuery over a message body that is ALREADY a stream-based javax.xml.transform.Source (e.g. after convertBodyTo(Source.class) or when an upstream processor set a Source body). String, byte[] and InputStream bodies are NOT affected because Camel's XmlConverter hardens those paths - this materially narrows the attack surface to specific route designs, a nuance the raw score does not capture. Where that route condition holds, impact is genuine (arbitrary local file read limited to files readable by the Camel process, plus SSRF to attacker-named hosts). |
| Exploit ScenarioDerived | An external party submits XML to an Apache Camel route that converts the message body to a javax.xml.transform.Source and evaluates it with the XQuery language or xquery endpoint. The XML carries a DOCTYPE with an external entity (e.g. SYSTEM "file:///etc/passwd" or a http:// URL); Saxon's default, unhardened Configuration resolves and expands it, leaking the file's contents into the evaluated document or forcing the process to connect to an attacker-chosen host. No public exploit is identified at time of analysis, though the fix PR (apache/camel#26344) includes a regression test with a working XXE canary payload demonstrating the issue. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 26, 2026
XML external entity (XXE) processing in Apache Camel's camel-saxon XQuery support lets remote unauthenticated attackers read files readable by the Camel process and make the process issue requests to attacker-named hosts when untrusted XML is evaluated as a stream-based javax.xml.transform.Source. The flaw affects Apache Camel 4.0.0 through 4.18.4 and 4.19.0 through 4.22.1; String, byte[] and InputStream bodies are not exposed because Camel's XML converters are already hardened. Vendor patches are available in 4.23.0, with branch fixes in 4.22.2 and 4.18.5, and no public exploit has been identified at time of analysis.
RemediationAI
Upgrade to Apache Camel 4.23.0, which contains the vendor fix; deployments on the 4.22.x stream should upgrade to 4.22.2 and deployments on the 4.18.x stream to 4.18.5. The 4.14.x and earlier streams and the 4.15.x through 4.17.x and 4.19.x through 4.21.x release lines are end-of-life and will not receive a fix, so move those deployments to a supported release. If an immediate upgrade is not possible, do not evaluate XQuery over a message body that is already a javax.xml.transform.Source when that body carries XML from an untrusted sender, or set the configuration option of the xquery endpoint or language to a Saxon Configuration whose parse options refuse a DOCTYPE declaration and disable external entities and external DTD loading; note that this rejects documents containing a DOCTYPE, while bodies without one are unaffected. Vendor advisory: https://camel.apache.org/security/CVE-2026-90885.html; patch PRs: https://github.com/apache/camel/pull/26344, https://github.com/apache/camel/pull/26728, https://github.com/apache/camel/pull/26730.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is CWE-611 (Improper Restriction of XML External Entity Reference). XQueryBuilder in camel-saxon builds a default Saxon Configuration whose ParseOptions set only a whitespace-stripping rule, leaving XML parser defaults in place, so a DOCTYPE declaration is accepted and external entities are resolved. Message bodies of type String or byte[], and any body read as an InputStream, are converted to a javax.xml.transform.Source by Camel's own XML type converters, which disable external entity resolution; a body that is already a Source is handed to Saxon unchanged, and a stream-based Source is then parsed by Saxon with the permissive Configuration. This is reachable when a route calls convertBodyTo(Source.class), or when an earlier component or processor sets a stream-based Source body, before an xquery expression or xquery endpoint evaluates it. CPE data identifies apache_software_foundation:apache_camel as the affected product. The upstream fix in PR 26344 sets disallow-doctype-decl to true and disables external general entities, external parameter entities and external DTD loading in the default Configuration, matching the secure defaults already used by Camel's XmlConverter and camel-xslt-saxon.
Know when Apache Camel gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
For an affected route the attacker only sends XML (AV:N/AC:L/PR:N/UI:N); the route-design precondition is not an attacker-side complexity factor; impact is local-file disclosure (C:H) with no integrity or availability effect.
Primary rating from Vendor (apache).
CVSS VectorVendor: apache
DescriptionCVE.org
Improper Restriction of XML External Entity Reference vulnerability in Apache Camel Saxon component.
This issue affects Apache Camel: from 4.0.0 before 4.18.5, from 4.19.0 before 4.22.2.
XQueryBuilder in camel-saxon, which evaluates expressions for the xquery language and the xquery component, built its default Saxon Configuration with parse options that set only a whitespace stripping rule, leaving the XML parser at its defaults, under which a DOCTYPE declaration is accepted and external entities are resolved. A message body of type String or byte[], or any body read as an InputStream, is first turned into a javax.xml.transform.Source by Camel's own XML type converters, which configure the parser against external entities, so those bodies were not affected. A body that was already a Source, however, was handed to Saxon unchanged, and when that Source still had to be parsed, as a stream-based Source does, Saxon parsed it with that Configuration, bypassing the protection applied to the other body types. Such a body arises, for example, after a route converts the message with convertBodyTo(Source.class), or when a component or processor earlier in the route sets the body to a stream-based Source. A DOCTYPE with an external subset, or an external entity, declared in that body was therefore resolved and expanded into the document the expression was evaluated against. An external sender whose XML reaches an XQuery expression or an xquery endpoint in that form could read files readable by the Camel process and cause the process to issue requests to hosts the document names. No non-default option is required, since the default Configuration is used whenever the route does not supply one of its own.
Users are recommended to upgrade to version 4.23.0, which fixes the issue. If users are on the 4.22.x releases stream, then they are suggested to upgrade to 4.22.2. If users are on the 4.18.x releases stream, then they are suggested to upgrade to 4.18.5. The 4.14.x releases stream and earlier, as well as the 4.15.x to 4.17.x and 4.19.x to 4.21.x release lines, reached end of life before this issue was resolved and will not receive a fix, so deployments on them must move to a supported release. For deployments that cannot upgrade immediately, do not evaluate XQuery over a message body that is already a javax.xml.transform.Source when that body carries XML from an untrusted sender, or set the configuration option of the xquery endpoint or language to a Saxon Configuration whose parse options refuse a DOCTYPE declaration and disable external entities and external DTD loading, which is what the fixed releases now apply by default.
Executive ViewAI
Apache Camel's camel-saxon XQuery component contains an XXE vulnerability that can allow unauthenticated attackers to read sensitive files accessible to the Camel process and exfiltrate them via outbound requests. This affects a core integration framework used for enterprise messaging and data transformation, meaning any production environment running vulnerable versions could leak configuration secrets, credentials, or business data. Leadership should prioritize remediation because the flaw is remotely exploitable and could undermine trust in integration-layer security.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
XML External Entity (XXE) attacks exploit XML parsers that process Document Type Definitions (DTDs) without proper restrictions.
More in Apache Camel
View allRemote code execution in Apache Camel's camel-coap component (versions 4.14.0-4.14.5, 4.18.0 before 4.18.1, and 4.19.0)
Unsafe Java deserialization in Apache Camel's camel-infinispan component allows arbitrary code execution when the ProtoS
Unauthenticated remote code execution affects the camel-hazelcast component of Apache Camel 4.0.0 through 4.18.4 and 4.1
Header-injection in the Apache Camel camel-atmosphere-websocket producer lets an external sender hijack WebSocket messag
Header-filter bypass in the Apache Camel Undertow component (4.11.0-4.14.8, 4.15.0-4.18.3, and 4.19.0-4.21.x) lets remot
Remote code execution in Apache Camel 3.18.0-4.14.5 and 4.15.0-4.18.1 stems from CXF and Knative HeaderFilterStrategy im
Message header injection in Apache Camel's camel-mail component (3.0.0 before 4.14.6 and 4.15.0 before 4.18.1) lets an a
Remote code execution via unsafe Java deserialization affects the camel-pqc component of Apache Camel 4.18.0-4.18.2 and
Unsafe Java deserialization in Apache Camel's camel-consul component (ConsulRegistry / ConsulRegistryUtils.deserialize)
Unauthenticated deserialization of attacker-controlled messages in Apache Camel's camel-jgroups consumer can lead to rem
Expression language injection in the Apache Camel dynamic-router-control endpoint allows a party who can place a message
Deserialization of untrusted data in the Apache Camel Spring Redis component (camel-spring-redis) allows an authenticate
EUVD-2026-109959
GHSA-xv62-j8hg-7h33
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB