GHSA-mm84-qvjh-hcj7
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
AV:N via HTTP; PR:N for unauthenticated HTTP ingress; S:C because Kafka is a separate security scope; I:H for arbitrary cross-topic message injection.
Primary rating from Vendor (CNA).
CVSS VectorVendor
Lifecycle Timeline
3Blast Radius
ecosystem impact- 214 maven packages depend on org.apache.camel:camel-kafka (14 direct, 200 indirect)
Ecosystem-wide dependent count for version 4.0.0.
Description PRE-NVD
Articles & Coverage 4
AnalysisAI
Header injection in Apache Camel's camel-kafka component allows HTTP clients to redirect Kafka messages to arbitrary topics in routes that bridge an HTTP consumer into a Kafka producer. The kafka.OVERRIDE_TOPIC, kafka.OVERRIDE_TIMESTAMP, and kafka.PARTITION_KEY Exchange header constants used non-CamelKafka-prefixed names, causing them to bypass HttpHeaderFilterStrategy - which blocks only the Camel/camel namespace - while remaining readable by KafkaProducer.evaluateTopic() as authoritative control directives. No public exploit code has been identified and no CISA KEV listing exists at time of analysis, but when the HTTP ingress is unauthenticated the attack requires only a standard HTTP client and a known Kafka topic name.
Technical ContextAI
Apache Camel (org.apache.camel:camel-kafka) is the Kafka integration component of the widely-used Apache Camel enterprise integration framework, implementing patterns from the Gregor Hohpe EIP catalogue. The root cause spans CWE-20 (Improper Input Validation) and CWE-74 (Injection): KafkaConstants defined control header values using a plain kafka.* naming convention (e.g., OVERRIDE_TOPIC = 'kafka.OVERRIDE_TOPIC') rather than the CamelKafka* convention used by all other Camel components. Camel employs two header filter strategies with distinct namespace allow-lists: KafkaHeaderFilterStrategy filters the kafka.* namespace at the Kafka-to-Exchange serialization boundary only (reading Kafka record headers into the Exchange and writing Exchange headers into Kafka records), while HttpHeaderFilterStrategy - applied by HTTP consumer components such as platform-http, camel-servlet, and camel-jetty - blocks only the Camel and camel namespaces. In a multi-component route, HTTP consumer headers flow into the Camel Exchange before KafkaHeaderFilterStrategy is applied, meaning kafka.* headers set by an HTTP client pass through HttpHeaderFilterStrategy unfiltered and are then consumed by KafkaProducer.evaluateTopic() as legitimate routing directives. The fix (GitHub PR #23602, commits f8914a219 on main, d4c6fd85 on 4.18.x, 93cd4c4e on 4.14.x) renames all 12 affected header constants to the CamelKafka* convention so HttpHeaderFilterStrategy blocks them like any other Camel control header. Affected versions: 4.0.0-4.14.7, 4.15.0-4.18.2, and 4.19.0-4.20.x of org.apache.camel:camel-kafka.
RemediationAI
Upgrade to Apache Camel 4.14.8 (LTS stream), 4.18.3 (LTS stream), or 4.21.0 - all released in July 2026 per the Apache Camel project blog and confirmed by the official security advisory at https://camel.apache.org/security/CVE-2026-49098.html. After upgrading, any Camel routes or Simple expressions that reference kafka.* header names by their raw string value (e.g., ${headers[kafka.TOPIC]}, ${headers[kafka.OVERRIDE_TOPIC]}) must be updated to use the new CamelKafka* names (e.g., CamelKafkaTopic, CamelKafkaOverrideTopic); this is a breaking change for string-based header references, though Java code referencing KafkaConstants field names (KafkaConstants.OVERRIDE_TOPIC) compiles without modification. For deployments that cannot upgrade immediately, insert a removeHeaders('kafka.*') DSL step at the very start of any route before the kafka: producer endpoint to strip all kafka.* headers arriving from HTTP ingress - note this will also strip any legitimate kafka.* headers intentionally propagated within the route, so scope it narrowly and set the target topic from a trusted source (endpoint URI or property placeholder) rather than a header. Additionally, placing authentication on the HTTP consumer endpoint eliminates the no-credentials attack path. Full technical details and backport commit references are available in JIRA CAMEL-23584.
Bypass/Injection vulnerability in Apache Camel components under particular conditions.10.0 through <= 4.10.1, from 4.8.0
The XSLT component in Apache Camel before 2.11.4 and 2.12.x before 2.12.3 allows remote attackers to read arbitrary file
Apache Camel's Jackson and JacksonXML unmarshalling operation are vulnerable to Remote Code Execution attacks. Rated cri
The XSLT component in Apache Camel 2.11.x before 2.11.4, 2.12.x before 2.12.3, and possibly earlier versions allows remo
Cross-realm token acceptance bypass in Apache Camel Keycloak security policy. The KeycloakSecurityPolicy fails to proper
Deserialization of Untrusted Data vulnerability in Apache Camel LevelDB component. The Camel-LevelDB DefaultLevelDBSeria
Unsafe Java deserialization in the Apache Camel camel-mina component (versions 3.0.0 through 4.14.5, 4.15.0 through 4.18
Apache Camel's File is vulnerable to directory traversal. Rated high severity (CVSS 7.5), this vulnerability is remotely
The camel-castor component in Apache Camel 2.x before 2.19.4 and 2.20.x before 2.20.1 is vulnerable to Java object de-se
The camel-xstream component in Apache Camel before 2.15.5 and 2.16.x before 2.16.1 allow remote attackers to execute arb
The camel-hessian component in Apache Camel 2.x before 2.19.4 and 2.20.x before 2.20.1 is vulnerable to Java object de-s
Apache Camel before 2.9.7, 2.10.0 before 2.10.7, 2.11.0 before 2.11.2, and 2.12.0 allows remote attackers to execute arb
Same weakness CWE-20 – Improper Input Validation
View allSame technique Information Disclosure
View allVendor StatusVendor
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-41844