Camel CoAP unauthenticated RCE (CVE-2026-33453) [PoC]
CVE-2026-33453
CVE-2026-33453: Apache Camel CoAP component allows unauthenticated RCE via header injection (CVSS 10.0). Patch to Camel 4.18.1 or 4.19.0.
Exploitation confirmed - public proof-of-concept - CVE-2026-33453 is a critical unauthenticated remote code execution vulnerability in Apache Camel CoAP 4.14.0-4.14.5 and 4.18.0 that lets any attacker send a single UDP packet to gain interactive shell access. Patch to 4.18.1 or 4.19.0.
Overview
CVE-2026-33453 is a critical vulnerability in the Apache Camel camel-coap component that allows an attacker to inject arbitrary Camel message headers via incoming CoAP request URI query parameters. The component maps query parameters directly to Exchange message headers without using a HeaderFilterStrategy, which is a security control designed to filter out dangerous internal headers (those prefixed with Camel*).
An unauthenticated attacker can send a single UDP datagram to a Camel route consuming from coap://. The injected headers, such as CamelExecCommandExecutable and CamelExecCommandArgs, can override the executable and arguments configured on downstream producers like camel-exec. This results in arbitrary OS command execution on the server running the Camel application.
The attacker does not need to chain this with another vulnerability or authenticate. The response from the executed command is written back to the Exchange body and returned in the CoAP response payload, giving the attacker an interactive remote command shell.
Impact
- Severity: CVSS 10.0 (Critical)
- Attack Vector: Network (single UDP packet)
- Affected Versions: Apache Camel 4.14.0 through 4.14.5, 4.18.0
- Fixed Versions: Apache Camel 4.18.1 and 4.19.0
- Risk: An unauthenticated attacker gains remote code execution with the privileges of the Camel process.
This vulnerability is particularly dangerous because CoAP (RFC 7252) has no built-in authentication, and DTLS is disabled by default. The attack is also invisible to HTTP-layer security controls like WAFs and IDS.
Remediation
-
Upgrade your Apache Camel deployment to version 4.18.1 or 4.19.0 or later. These versions include the proper HeaderFilterStrategy implementation for the CoAP component.
-
If immediate upgrade is not possible, restrict network access to the CoAP port (default 5683/udp) to trusted sources only using a firewall or network ACL.
-
Review all Camel routes that consume from
coap://endpoints and ensure they do not forward messages to header-sensitive producers (camel-exec, camel-sql, camel-bean, camel-file, or template components) until the patch is applied.
Security Insight
This vulnerability illustrates a recurring pattern in integration frameworks: mapping untrusted network input directly into internal message headers without filtering. The Camel team missed implementing the HeaderFilterStrategy interface in the CoAP component, a security control that has been standard in other Camel transport components for years. This oversight is reminiscent of the 2020 Apache Camel header injection issues that similarly allowed command injection via camel-exec. The lesson is that every network-facing component in a message broker must enforce header sanitization at the transport boundary, not rely on downstream consumers to filter dangerous headers.
Further Reading
Never miss a critical vulnerability
Get real-time security alerts delivered to your preferred platform.
Public PoC References
Unverified third-party code
These repositories are publicly listed on GitHub and have not been audited by Yazoul Security. They may contain malware, backdoors, destructive payloads, or operational security risks (telemetry, exfiltration). Treat them as hostile binaries. Inspect source before execution. Run only in isolated, disposable lab environments (offline VM, no credentials, no production data).
Authorized use only. This information is provided for defensive research, detection engineering, and patch validation. Using exploit code against systems you do not own or do not have explicit written permission to test is illegal in most jurisdictions and violates Yazoul's terms of use.
| Repository | Stars |
|---|---|
| dinosn/CVE-2026-33453 Apache Camel 4.18.0 — CVE Security Assessment: 3 critical vulnerabilities with working PoC exploits (CVE-2026-33453, CVE-2026-40473, CVE-2026-40858) | ★ 0 |
Showing 1 of 1 known references. Source: nomi-sec/PoC-in-GitHub.
Related Advisories
The fix for CVE-2025-27636 added setLowerCase(true) to HttpHeaderFilterStrategy so that case-variant header names such as 'CAmelExecCommandExecutable' are filtered out alongside 'CamelExecCommandExecu...
JmsBinding.extractBodyFromJms() in camel-jms, and the equivalent JmsBinding class in camel-sjms, deserialized the payload of incoming JMS ObjectMessage values via javax.jms.ObjectMessage.getObject() w...
The Camel-Mail component is vulnerable to Camel message header injection. The custom header filter strategy used by the component (MailHeaderFilterStrategy) only filters the 'out' direction via setOut...
The camel-mina component's MinaConverter.toObjectInput(IoBuffer) type converter wraps an IoBuffer in a java.io.ObjectInputStream without applying any ObjectInputFilter or class-loading restrictions. W...
Related Across Yazoul
Other Apache Camel Vulnerabilities
The Camel-Mail component is vulnerable to Camel message header injection. The custom header filter strategy used by the component (MailHeaderFilterStrategy) only filters the 'out' direction via setOut...
The fix for CVE-2025-27636 added setLowerCase(true) to HttpHeaderFilterStrategy so that case-variant header names such as 'CAmelExecCommandExecutable' are filtered out alongside 'CamelExecCommandExecu...
The camel-mina component's MinaConverter.toObjectInput(IoBuffer) type converter wraps an IoBuffer in a java.io.ObjectInputStream without applying any ObjectInputFilter or class-loading restrictions. W...
JmsBinding.extractBodyFromJms() in camel-jms, and the equivalent JmsBinding class in camel-sjms, deserialized the payload of incoming JMS ObjectMessage values via javax.jms.ObjectMessage.getObject() w...