Can Apache Camel dynamic router flaws allow remote code execution?
A high-severity injection flaw in Apache Camel’s dynamic router lets attackers run arbitrary code via message headers or bodies.
Key points
- CVE-2026-83531 affects Apache Camel versions 4.4.0 through 4.18.4 and 4.19.0 through 4.22.0.
- Attackers can inject expression language code via the dynamic-router-control endpoint without authentication.
- Upgrading to 4.23.0, 4.22.1, or 4.18.5 resolves the issue for supported streams.
The short version
- The flaw allows unauthenticated remote code execution through the dynamic-router-control endpoint.
- Any expression language on the classpath, including the default simple language, can be exploited.
- Fixes are available in versions 4.23.0, 4.22.1, and 4.18.5; older streams are end-of-life.
The details
Apache Camel versions from 4.4.0 up to 4.18.4 and from 4.19.0 up to 4.22.0 contain a high-severity vulnerability rated 8.8 on the CVSS scale, according to the National Vulnerability Database. The flaw, tracked as CVE-2026-83531, stems from improper control of code generation and expression language injection. It specifically impacts the dynamic-router-control endpoint, which was introduced in version 4.4.0 to allow routing participants to manage subscriptions via control messages.
When processing subscribe or update requests, the component accepts subscription predicates and language names from incoming message bodies or headers. It then resolves the language from the Camel context and compiles the expression into a predicate without using an allow-list or requiring opt-in. This compiled predicate is added to the channel’s rule base and evaluated against every exchange routed through the corresponding dynamic-router endpoint for the duration of the subscription.
The context
As Honeypot Daily reported on 2026-10-10, Apache Camel Karavan previously faced a similar high-severity flaw allowing remote code execution via Git commits. In this new incident, any actor able to send a message on a transport that forwards to the control endpoint can supply an expression of their choosing. The expression is evaluated with the privileges of the Camel process.
Because the simple language is always present and was the default on the header path, removing optional expression languages from the classpath does not prevent exploitation. No other authentication or user interaction is required. Releases before 4.4.0 are unaffected because their control channel only accepted predicate expressions from the endpoint URI configured by the route author.
Next steps
Users are advised to upgrade to version 4.23.0 to fix the issue. Those on the 4.22.x stream should move to 4.22.1, while users on the 4.18.x stream should upgrade to 4.18.5. The 4.14.x stream and earlier reached end of life before resolution and will not receive a fix; deployments on these lines must migrate to a supported release. After upgrading, control messages carrying predicate expressions are rejected unless the allowPredicateFromMessage option is explicitly enabled on the dynamic-router-control endpoint.
This option should only be enabled when every sender of control messages is trusted. For deployments that cannot upgrade immediately, avoid forwarding messages from untrusted or shared transports to the dynamic-router-control endpoint. Where control messages must cross such transports, authenticate the sender and ensure predicates are set by the route rather than taken from incoming messages.
What defenders should look for
Teams usually monitor for unexpected outbound connections or process spawns originating from application servers running Apache Camel. Check whether any logs show the dynamic-router-control endpoint receiving messages with unusual header values or body content from untrusted sources. Look for sudden spikes in CPU or memory usage on Camel instances, which may indicate malicious expression evaluation.
Verify that no routes forward messages from public or shared transports directly to control endpoints without strict authentication. Inspect network traffic for messages containing encoded expression language strings sent to known Camel management ports. Ensure that alerting rules cover failed authentication attempts on internal messaging buses, as attackers often probe for open control channels before launching exploitation.
What to do and how to stay safe: Apache Camel
- Audit all routes forwarding messages to dynamic-router-control endpoints and remove any that accept input from untrusted transports.
- Strip CamelDynamicRouterPredicate and CamelDynamicRouterExpressionLanguage headers from incoming messages before they reach the endpoint.
- Clear the predicate and expressionLanguage fields of DynamicRouterControlMessage bodies to prevent injection via message content.
- Restrict network access to the transports feeding the control endpoint to only trusted internal systems and authenticated senders.
Step-by-step guide: How Virtual Patching Works: The Mechanics Behind Inline Protection
General security guidance from the Honeypot Daily newsroom. It is not confirmed advice from the organisations named in this story.
Frequently asked questions
Which Apache Camel versions are affected by CVE-2026-83531?
Versions 4.4.0 through 4.18.4 and 4.19.0 through 4.22.0 are affected.
Is there a fix for Apache Camel 4.14.x?
No, the 4.14.x stream reached end of life and will not receive a fix.
Can removing expression languages from the classpath mitigate this flaw?
No, because the simple language is always present and was the default.




