CVE-2026-46591: Apache Camel Neo4j Cypher Injection Vulnerability – HIGH Severity Patch
Apache Camel's Neo4j integration contains a query injection flaw that lets attackers manipulate database queries by crafting malicious property names in match operations. Although previous patches blocked injection through property values, the property names themselves are still inserted directly into Cypher queries without escaping. If your application routes untrusted data—such as JSON request bodies or headers—into the Neo4j producer's match configuration, an attacker can inject arbitrary Cypher syntax to read, modify, or delete any data in your Neo4j database. The vulnerability exists in Camel versions from 4.10.0 through 4.20.x, with patches available in 4.14.8 (LTS), 4.18.3, and 4.21.0+.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 8.2 HIGH · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N
- Weaknesses (CWE)
- CWE-943
- Affected products
- 1 configuration(s)
- Published / Modified
- 2026-07-06 / 2026-07-08
NVD description (verbatim)
Improper Neutralization of Special Elements in Data Query Logic vulnerability in Apache Camel Neo4J component. The camel-neo4j producer builds the Cypher WHERE clause for its match/retrieve and delete operations from the CamelNeo4jMatchProperties map. CVE-2025-66169 addressed Cypher injection through the property values by binding them as query parameters ($paramN), but the property names (the JSON keys of that map) were still concatenated into the query string verbatim in Neo4jProducer.retrieveNodes() and deleteNode(). A property name containing Cypher syntax therefore alters the structure of the executed query. Where a route maps untrusted input into the CamelNeo4jMatchProperties map - for example by passing a request body as the match map, or from a consumer that does not filter inbound Camel* headers - an attacker who controls the JSON key names can inject arbitrary Cypher and read, modify or delete any node or relationship in the Neo4j database. The CamelNeo4jMatchProperties header is itself Camel-prefixed and is filtered by the HTTP header-filter strategy, so a plain HTTP client cannot set it directly; the issue is reachable through routes that deliberately or inadvertently carry untrusted data into that header. This issue affects Apache Camel: from 4.10.0 before 4.14.8, from 4.15.0 before 4.18.3, from 4.19.0 before 4.21.0. Users are recommended to upgrade to version 4.21.0, which fixes the issue. If users are on the 4.14.x LTS releases stream, then they are suggested to upgrade to 4.14.8. If users are on the 4.18.x releases stream, then they are suggested to upgrade to 4.18.3. For deployments that cannot upgrade immediately, do not populate the CamelNeo4jMatchProperties map from untrusted input: validate or allow-list the property names (for example against ^[A-Za-z_][A-Za-z0-9_]*$) before the Neo4j producer, and ensure that any consumer feeding such a route filters inbound Camel* / camel* headers so the match header cannot be supplied by an external sender.
1 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
CVE-2026-46591 is an improper neutralization of special elements in query logic (CWE-943) affecting the Neo4j producer in Apache Camel. The vulnerability exists in the Neo4jProducer.retrieveNodes() and deleteNode() methods, which build Cypher WHERE clauses by concatenating property names from the CamelNeo4jMatchProperties map directly into the query string. CVE-2025-66169 previously addressed injection through property values by parameterizing them ($paramN notation), but property names (JSON object keys) bypass this protection and are concatenated verbatim. An attacker controlling these keys can break the query syntax boundary and inject arbitrary Cypher clauses. The CamelNeo4jMatchProperties header is Camel-prefixed, so standard HTTP clients cannot set it directly; however, routes that deserialize untrusted input (request bodies, non-filtered consumer headers) into that map create an exploitable path. Vulnerable versions: 4.10.0–4.14.7, 4.15.0–4.18.2, 4.19.0–4.20.x.
Business impact
Organizations using Apache Camel to integrate with Neo4j databases face a high-severity breach risk if they accept untrusted input in Neo4j match operations. A successful attack grants an unauthenticated remote adversary read and write access to the entire Neo4j graph, potentially exposing sensitive relationships, properties, and entities stored in the database. Attackers could extract intellectual property, customer data, or system topology information, or corrupt database integrity by modifying or deleting nodes and relationships. This is particularly critical for applications using Neo4j to store authorization graphs, identity data, or business-critical relationship metadata. The attack requires no authentication and can be exploited in-band during normal request processing, making it immediately actionable in production environments that have not patched.
Affected systems
Apache Camel versions 4.10.0 through 4.20.x are affected, specifically: versions 4.10.0 to 4.14.7 (4.14.x stream), 4.15.0 to 4.18.2 (4.18.x stream), and 4.19.0 to 4.20.x. The vulnerability only manifests in deployments that use the camel-neo4j component and route untrusted input into the CamelNeo4jMatchProperties map. This typically occurs in routes that deserialize JSON request bodies directly as the match map, or that accept inbound Camel* headers from consumers without filtering. Deployments using Camel for other purposes or with hardcoded Neo4j match criteria are not affected.
Exploitability
Exploitability is high. The attack surface is straightforward: an attacker who can control JSON property names or unfiltered Camel headers in a route feeding the Neo4j producer can inject Cypher syntax. Network access is required, but no authentication or special privileges are needed. The injected Cypher can be crafted to perform any operation the Neo4j database user account permits. Proof-of-concept payloads are trivial to construct (e.g., property names like '} OR 1=1 OR {'). The attack is not yet in the CISA KEV catalog, but the simplicity and impact make it a probable target if public exploitation code emerges. Detection may be challenging because malicious input arrives as normal JSON, and logs may not immediately reveal the Cypher injection unless queries are instrumented at the database level.
Remediation
Upgrade to Apache Camel 4.14.8 (if on 4.14.x LTS), 4.18.3 (if on 4.18.x), or 4.21.0+ (for latest features). For deployments unable to patch immediately, implement strict input validation on property names before the Neo4j producer: validate against a whitelist pattern such as ^[A-Za-z_][A-Za-z0-9_]*$ to ensure only valid Cypher identifiers are used. Additionally, ensure any Camel consumer feeding the Neo4j route strips or filters inbound Camel*/camel* headers so that external senders cannot inject the CamelNeo4jMatchProperties header. Consider using immutable or read-only Camel configuration objects to reduce the risk of inadvertent mutation from untrusted input.
Patch guidance
Patches are available in Camel 4.14.8, 4.18.3, and 4.21.0. The fix involves parameterizing or escaping property names in the Cypher query construction, similar to the earlier fix for property values. Verify patched versions against the official Apache Camel release notes and advisory. If you are on a supported LTS stream (4.14.x or 4.18.x), apply the corresponding patch release. For new deployments, use 4.21.0 or later. After patching, restart affected Camel applications and verify that Neo4j integration tests pass, as the fix may affect query structure in edge cases. No database migration or data remediation is required by the patch itself, but consider auditing recent Neo4j audit logs for suspicious query patterns if the deployment was publicly accessible before patching.
Detection guidance
Monitor Camel route logs for warnings or errors during Neo4j producer execution, particularly any messages indicating Cypher syntax errors or unexpected query structures. Enable Neo4j database query logging and audit trails; look for Cypher queries with unexpected WHERE clause structures, injected UNION/OR predicates, or attempts to access unauthorized nodes. Network-level detection is difficult because the exploit payload is embedded in normal JSON. Implement input validation at the application level: before routing data to the Neo4j producer, log and reject any JSON objects with property names that do not match expected patterns or that contain Cypher keywords (e.g., 'WHERE', 'MATCH', 'DELETE', 'OR', '}'). Search your codebase for routes that directly pass request.body or unauthenticated headers into CamelNeo4jMatchProperties to identify vulnerable patterns. Correlate spike in Neo4j query errors with inbound request volume to detect blind injection attempts.
Why prioritize this
This is a high-priority patch for any organization using Camel with Neo4j. The CVSS score of 8.2 reflects high integrity and confidentiality risk with no complexity barriers to exploitation. The vulnerability is network-reachable, requires no credentials, and provides direct database access. Although it is not yet in the KEV catalog, the combination of ease of exploitation, high impact (full database compromise), and likely public tooling when disclosed makes this a critical remediation target. Organizations should treat this as urgent if their Camel deployments accept untrusted input for Neo4j operations. Even organizations on older versions of Camel should backport or upgrade to address this before it becomes a common attack vector.
Risk score, explained
CVSS 3.1 score of 8.2 (HIGH) is driven by: (1) Network-based attack vector (AV:N) requiring only network access, no local access; (2) Low attack complexity (AC:L) because the exploit requires only crafted JSON property names, no advanced techniques; (3) No privileges required (PR:N) because untrusted external input can trigger the vulnerability; (4) No user interaction (UI:N) needed; (5) High integrity impact (I:H) because attackers can modify or delete any Neo4j node or relationship; (6) Low confidentiality impact (C:L) because direct data exfiltration is possible but the primary threat is manipulation. The scope is unchanged (S:U). The score does not account for KEV or active exploitation at publication, but the severity is justified by the directness and scope of database compromise.
Frequently asked questions
Can an external HTTP client directly exploit this, or do I need to be running Camel internally?
An external HTTP client cannot set the CamelNeo4jMatchProperties header directly because Camel's HTTP strategy filters headers with the Camel* prefix. However, the vulnerability is reachable if your route accepts untrusted input (such as a JSON request body or a consumer header that is not filtered) and passes it into that map without validation. For example, if your route deserializes a JSON POST body directly as the match criteria, an attacker's malicious JSON keys will be injected into the Cypher query.
Does upgrading Camel automatically fix this, or do I need to change my application code?
Upgrading to a patched version (4.14.8, 4.18.3, or 4.21.0+) fixes the underlying vulnerability by properly parameterizing or escaping property names in query construction. You do not need to rewrite your routes. However, as a defense-in-depth measure, you should still validate property names at the application level to reject untrusted keys before they reach the Neo4j producer, following the pattern ^[A-Za-z_][A-Za-z0-9_]*$.
We're on Camel 4.14.x LTS and plan to stay there for long-term support. What should we do?
Apply the 4.14.8 patch release, which backports the fix to the LTS stream. This ensures you receive the security update while maintaining your LTS support lifecycle. Check with Apache Camel's release schedule for availability and plan the upgrade as part of your routine patching cycle.
How do I know if my Camel routes are vulnerable?
Your routes are vulnerable if they meet both conditions: (1) they use the camel-neo4j component, and (2) they pass untrusted input (request bodies, external headers, or database queries) into the CamelNeo4jMatchProperties map without validating the property names. Search your route definitions for patterns like 'to("neo4j:...")' combined with dynamic match properties sourced from user input. If your Neo4j criteria are hardcoded or sourced only from internal configuration, you are not at risk.
This analysis is based on the CVE-2026-46591 public disclosure and Apache Camel vendor advisory data as of the publication date. The assessment assumes typical web-facing Camel deployments; your specific risk may differ depending on network architecture, input validation, and database permissions. Always verify patch availability and compatibility with your Camel version against the official Apache Camel website and release notes before applying updates. No exploit code or weaponized proof-of-concept is provided. For detailed remediation guidance, consult the Apache Camel security advisory and your vendor's security team. Source: NVD (public-domain), retrieved 2026-08-15. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2026-10698HIGHMOVEit Transfer Custom Reports SQL Injection
- CVE-2026-44840HIGHDgraph DQL Injection in checkUserPassword Query
- CVE-2026-47835HIGHSpring AI Vector Store Query Injection (CVSS 8.6)
- CVE-2026-53674HIGHBuddyPress 14.4.0 Regular Expression Injection in Mentions
- CVE-2026-41696MEDIUMSpring Data MongoDB @Query Regex Injection Vulnerability
- CVE-2026-41697MEDIUMSpring Data Relational Query By Example SQL Injection Vulnerability
- CVE-2026-49482MEDIUMClipBucket v5 SQL Wildcard Injection in Subtitle Editing
- CVE-2026-54019MEDIUMOpen WebUI Milvus Multitenancy ACL Bypass – CVSS 6.5