Apache Camel Docling
CVE-2026-95628
HIGH
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessInfluence externally-sourced value into route
-
DeliveryReach CamelDoclingCustomArguments header (filtering absent)
-
ExploitSupply absolute path to allowlisted flag
-
ExecutionvalidatePathSafety fails to reject absolute path
-
Impactdocling subprocess points at attacker-chosen directory
Vulnerability Assessment
| Exploitation Conditions | Exploitation requires camel-docling running in CLI mode (the default, and the only mode that passes custom arguments to docling) and an attacker able to control the contents of the CamelDoclingCustomArguments header - specifically supplying an absolute path (e.g. to the allowlisted --artifacts-path flag), in either the separate 'flag value' or attached 'flag=value' form, which the pre-fix validatePathSafety accepted because it only rejected ../ sequences and normalized paths retaining a .. element. The key limiting factor is reachability of that header: it belongs to the Camel header namespace, which default header filtering removes (the JMS and Kafka consumers strip it), so the flaw is only reachable where a route explicitly forwards externally-influenced values into the header or where a consumer maps incoming headers without that default filtering. Additional limits: PR:L means some privilege/position to influence the message is needed, impact is confined to directories the Camel process can already access, and the 4.15.x-4.17.x and 4.19.x-4.21.x lines are end-of-life and will not be fixed. |
| Impact | This is a medium-severity (CVSS 3.1 5.4, AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L) path-traversal flaw in the Apache Camel camel-docling component, assessed as an incomplete fix of CVE-2026-40047. The signals point to limited real-world urgency rather than an emergency. The vuln.today Decision label is 'awaiting_data', and there is no CISA KEV listing, so this is not confirmed as actively exploited. No EPSS score was supplied in the input, so exploitation probability cannot be quantified from the data. The references consist of the vendor advisory, a JIRA issue, and three GitHub pull requests - these are remediation artifacts, not exploit code, so no public exploit has been identified at time of analysis. The CVSS vector claims AV:N and PR:L, but the description materially constrains reachability: exploitation requires that an attacker-influenced value actually reach the CamelDoclingCustomArguments header, which lives in the Camel header namespace that default header filtering (as used by the JMS and Kafka consumers) strips from incoming messages. The network vector is therefore only realistic where a route deliberately forwards external input into that header or a consumer maps incoming headers without the default filter - a routing/configuration dependency the raw CVSS score does not capture. The impact is bounded: C:N/I:L/A:L reflects that an attacker can redirect the docling subprocess to a different directory (e.g. via the allowlisted --artifacts-path flag) that the Camel process can access, not full code execution or confidentiality loss. Net: a real defect worth patching on a normal cadence, but the combination of medium severity, required privileges, configuration-dependent reachability, awaiting_data priority, and absence of KEV/EPSS/PoC argues against treating it as a high-priority emergency. |
| Exploit ScenarioDerived | In a Camel deployment running camel-docling in the default CLI mode, a route forwards an externally-influenced value into the CamelDoclingCustomArguments header (or a consumer maps incoming headers without Camel's default header filtering). An attacker who can shape that value supplies an absolute path to an allowlisted path-valued flag such as --artifacts-path, and because validatePathSafety only rejected relative traversal and never absolute paths, the value passes unchanged and the docling process is pointed at an arbitrary directory the Camel process can access. No public exploit code was identified in the provided references. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 23, 2026
Path traversal (CWE-22) in the Apache Camel camel-docling component leaves an absolute-path bypass open after the CVE-2026-40047 fix, letting a party who controls the CamelDoclingCustomArguments header point the docling CLI subprocess at any directory the Camel process can already read. Affected are camel-docling 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 will not be fixed. Rated CVSS 3.1 5.4 medium (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L), exposure is limited to CLI mode (the default) where a route forwards externally influenced values into the Camel header namespace or a consumer maps incoming headers without Camel's default header filtering; no public exploit identified at time of analysis.
RemediationAI
Vendor-released patch: Apache Camel 4.23.0 fixes the issue; users on the 4.22.x stream should upgrade to 4.22.2 and users on the 4.18.x stream to 4.18.5 (fixes landed via pull requests https://github.com/apache/camel/pull/26738, https://github.com/apache/camel/pull/26743 and https://github.com/apache/camel/pull/26744, with the change tracked in CAMEL-24893). validatePathSafety now also rejects a path-like custom-argument value that is absolute, in both the separate-element and flag=value forms, while still accepting relative values without traversal segments. Deployments on the end-of-life 4.15.x-4.17.x and 4.19.x-4.21.x lines must move to a supported release since no fix will be issued for them. Where an upgrade cannot be applied immediately, the vendor advises not building the CamelDoclingCustomArguments header from values that originate outside the deployment, removing that header from messages arriving from outside before they reach a docling endpoint, and ensuring consumers that map incoming message headers drop the Camel header namespace so only the route itself chooses the custom arguments; note that this depends on route-level discipline and on consumers not bypassing default header filtering, and it does not address other docling issues such as CVE-2026-78163. Full advisory: https://camel.apache.org/security/CVE-2026-95628.html.
Affected ProductsAI
Apache Camel camel-docling (Maven coordinates org.apache.camel:camel-docling) versions 4.15.0 before 4.18.5 and 4.19.0 before 4.22.2. The 4.15.x through 4.17.x and 4.19.x through 4.21.x release lines reached end of life before this issue was resolved and will not receive a fix. No CPE identifiers were supplied in the input data, so identification should be based on the Maven coordinate and version range. Vendor advisory: https://camel.apache.org/security/CVE-2026-95628.html; the accompanying JIRA record is https://issues.apache.org/jira/browse/CAMEL-24893, and the preceding related flaw is documented at https://camel.apache.org/security/CVE-2026-40047.html.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
DoclingProducer assembles the command line of the external docling tool and appends the string list supplied in the CamelDoclingCustomArguments header. The CVE-2026-40047 fix restricted the accepted flags to an allowlist and added validatePathSafety to keep path-like values inside the intended working directory, but that helper only rejected values containing a ../ or ..\ traversal sequence and values whose normalized form still retained a .. element. An absolute path contains neither, so it passed validation unchanged, whether supplied as a separate list element after its flag or attached to the flag after an equals sign - for example as the directory given to the allowlisted --artifacts-path flag. This is inconsistent with how the component handles input file paths, where resolveWithinInputBaseDirectory() confirms a resolved path stays inside a configured base directory; custom-argument path values had no equivalent containment. This is a CWE-22 improper limitation of a pathname to a restricted directory. The key control is reachability: the header lives in the Camel header namespace, which Camel's default header filtering (HeaderFilterStrategy, applied by the JMS and Kafka consumers) strips from incoming messages, so the flaw only manifests where a route explicitly forwards externally influenced values into the header or where a consumer maps incoming headers without that default filtering. Impact is confined to directories the Camel process can already access, which is why confidentiality is scored None and integrity/availability are Low.
Know when Java 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
Reachable over the network through a route that forwards external input into a header, but requires privilege to influence the message (PR:L); impact is limited to redirecting the docling process, so C:N, I:L, A:L.
Description PRE-NVD
Articles & Coverage 2
Executive ViewAI
A path-traversal flaw in the Apache Camel camel-docling component (CVE-2026-95628) allows a user who can influence the CamelDoclingCustomArguments header to direct the docling CLI subprocess to read directories accessible to the Camel process. Applications built on the 4.15.x-4.17.x and 4.19.x-4.21.x release lines cannot be remediated via a vendor fix because those lines are end-of-life, creating a persistent exposure for teams still running them. Leadership should care because any route that forwards untrusted input into Camel headers could allow unintended data access and affect confidentiality of files readable by the service account.
No vendor-released patch identified at time of analysis for end-of-life lines; interim mitigations include enforcing Camel's default header filtering, stripping or allowlisting the CamelDoclingCustomArguments header at ingress, avoiding routes that forward untrusted input into Camel headers, running the Camel process under a least-privilege account, and migrating to camel-docling 4.18.5 or 4.22.2.
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
Attack Technique
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m
Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti
Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent
Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug
JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up
Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up
The WLS Security component in Oracle WebLogic Server 10.3.6.0, 12.1.2.0, 12.1.3.0, and 12.2.1.0 allows remote attackers
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow
Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla
The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during
CVE.org
GitHub PoC
Exploit-DB