GHSA-9mgq-6r88-pghr
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach route mapping external headers
-
DeliverySet CamelDoclingOutputFilePath to '../' or absolute path
-
ExploitHeader passed verbatim to docling --output
-
ExecutionDocling writes converted file outside intended directory
-
ImpactArbitrary-directory file write persists
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, 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 the camel-docling component running in the default CLI mode (the docling-serve mode does not use this header), and a deployment where the CamelDoclingOutputFilePath header can be populated from values originating outside the deployment - specifically a Camel route that forwards externally-influenced data into that header, or a consumer that maps incoming message headers WITHOUT Camel's default header filtering. What LIMITS exploitation: Camel's default HeaderFilterStrategy, used by the JMS and Kafka consumers, strips Camel-namespace headers (including this one) from inbound messages, so default-filtered consumers are not exposed; the attacker also does not control the output file's exact byte content (only the converted form of a supplied document) and cannot confine or redirect naming beyond directory choice. Affected version streams are 4.15.0-before-4.18.5 and 4.19.0-before-4.22.2; the 4.15.x-4.17.x and 4.19.x-4.21.x lines are end-of-life and unpatched. Note that after upgrading, the new outputBaseDirectory endpoint option is unset by default and must be explicitly set to fully confine the header. |
| Impact | This is a medium-severity path-traversal/arbitrary-write issue whose real-world risk is genuinely moderate-to-low, not an emergency. The vendor CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L = 5.4) is internally consistent with the description: network-reachable, requires some privilege (PR:L, consistent with needing to influence a Camel header), no user interaction, unchanged scope, no confidentiality loss, and only partial integrity and availability impact because the attacker controls where a file lands but not its exact byte content. The priority signals reinforce the modest rating: there is no CISA KEV listing, no EPSS score was supplied, and the vuln.today Decision label is 'awaiting_data' - i.e., no act_now/emergency determination. No SSVC decision values were provided. No public exploit was identified at time of analysis; the references are vendor advisories, a JIRA ticket, and the fix pull requests, not exploit code. The most important caveat is that exploitation is conditional, not default: it requires a route that forwards externally-influenced values into the CamelDoclingOutputFilePath header, because Camel's default HeaderFilterStrategy (used by the JMS and Kafka consumers) strips Camel-namespace headers from inbound messages. So the PR:L/AV:N signals, while accurate for an attacker who can reach that header, overstate exposure for the common case where default header filtering is in place - this is best read as a defense-in-depth hardening fix for specific route designs rather than a broadly exploitable remote flaw. |
| Exploit ScenarioDerived | An application runs a Camel route that maps or copies incoming (e.g. HTTP or custom-transport) message headers into the exchange without Camel's default header filtering, allowing an external party's value to populate the CamelDoclingOutputFilePath header. The attacker sets that header to an absolute path or one containing '..' segments, and the DoclingProducer passes it verbatim to the docling '--output' flag, causing the converted document (Markdown/HTML/JSON/text named after the input) to be written into any directory the Camel process can write to. No public exploit code was identified at time of analysis, and the attacker influences only where the file is written and, indirectly, its converted content - not its exact bytes. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 23, 2026
Unauthenticated-output path traversal in the Apache Camel camel-docling component (4.15.0 before 4.18.5 and 4.19.0 before 4.22.2) lets an authenticated remote attacker who can place a value into the CamelDoclingOutputFilePath header force the docling CLI subprocess to write its converted Markdown, HTML, JSON or text output into any directory writable by the Camel process. The header value is handed verbatim to docling's --output flag with no normalization and no endpoint option to confine it, so absolute paths and '..' segments are accepted as given; the content written is limited to the conversion of the supplied document, and the attacker cannot control the exact bytes or the file name beyond choosing the directory. Exposure is narrowed by Camel's default HeaderFilterStrategy (JMS and Kafka consumers strip Camel-namespace headers) and by the fact that the docling-serve mode does not use this header at all. No public exploit code or active exploitation is known at time of analysis, but the release lines 4.15.x-4.17.x and 4.19.x-4.21.x are end-of-life and will never receive a fix.
RemediationAI
Vendor-released patch: Apache Camel 4.23.0, with backports to 4.22.2 for the 4.22.x stream and 4.18.5 for the 4.18.x stream (advisory: https://camel.apache.org/security/CVE-2026-95629.html, JIRA: https://issues.apache.org/jira/browse/CAMEL-24894). After upgrading, the header is normalized before it reaches docling and the new outputBaseDirectory endpoint option confines it: when set, a value resolving outside that directory, including an absolute path, is rejected with an IOException before docling starts. Because outputBaseDirectory is unset by default, it must be explicitly configured on every docling endpoint whose CamelDoclingOutputFilePath header can carry an externally influenced value - without it the header is only normalized and can still name any directory. Deployments on the end-of-life 4.15.x-4.17.x and 4.19.x-4.21.x lines will not receive a fix and must move to a supported release. If upgrading immediately is not possible, do not construct the CamelDoclingOutputFilePath header from values originating outside the deployment, strip that header from inbound messages before they reach a docling endpoint, and ensure that consumers mapping incoming message headers drop the Camel header namespace so that only the route itself chooses the output directory; note that these measures depend on correct route and consumer configuration rather than on an enforced boundary.
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
camel-docling's DoclingProducer builds an argument list for the external docling tool and launches it through java.lang.ProcessBuilder in CLI mode (the default). This is a CWE-22 path traversal / arbitrary-directory write: addOutputDirectoryArguments took the value of the CamelDoclingOutputFilePath exchange header and passed it straight to the --output flag without normalizing it, accepting absolute paths and paths containing '..' segments, and no endpoint option existed to confine the result to a directory. The gap is especially notable because the earlier hardening for CVE-2026-40047 added validation of the CamelDoclingCustomArguments header that explicitly refuses the --output and -o flags and tells callers to select the output directory via CamelDoclingOutputFilePath instead - so the one value that actually decides where docling writes bypassed all of the checks applied to custom arguments. Docling then writes the conversion result (Markdown, HTML, JSON or text), naming the file after the input file, and the producer afterwards deletes only its own temporary directory, leaving the written file in place. When the document content arrives in the message body, the producer stores it under a random temporary name, which the output file inherits. A related advisory, CVE-2026-78163, covers how a String message body was implicitly interpreted by prefix (http/https fetched remotely, leading '/' or a backslash read locally) and shows that the exchange body is never filtered by a HeaderFilterStrategy, unlike the Camel header namespace. Because the header sits in the Camel namespace, deployments relying on default header filtering do not reach the vulnerable path; routes that forward externally influenced values into the header, or consumers that map incoming headers without filtering, do.
Know when the next one hits your stack
- 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:L/UI:N/S:U/C:N/I:L/A:L
Reachable over network only where a route feeds external input into the Camel header (PR:L); no confidentiality impact, partial integrity/availability from attacker-chosen write location with uncontrolled file bytes.
Primary rating from Vendor (CNA).
CVSS VectorVendor
Lifecycle Timeline
2Description PRE-NVD
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
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
EUVD-2026-109671
NVD
CVE.org
EPSS
Exploit-DB