CVE-2026-40563 Overview
CVE-2026-40563 is a code injection vulnerability in Apache Atlas, the open-source metadata management and data governance platform. The flaw resides in the Domain Specific Language (DSL) search endpoint, which accepts user-supplied query strings and passes them into Gremlin graph traversal logic. An authenticated attacker can craft queries that manipulate traversal logic using grammar-allowed characters to access data outside their authorization scope. The issue is tracked under CWE-94: Improper Control of Generation of Code.
Critical Impact
Authenticated attackers can alter Gremlin traversal logic through the DSL search endpoint to access unintended data, compromising confidentiality and integrity of metadata managed by Apache Atlas.
Affected Products
- Apache Atlas versions 0.8 through 2.4.0
- Apache Atlas 2.0 and later are only affected when deployed with the non-default configuration atlas.dsl.executor.traversal=false
- Apache Atlas versions prior to 2.0 are affected in default configurations
Discovery Timeline
- 2026-05-04 - CVE-2026-40563 published to NVD
- 2026-05-06 - Last updated in NVD database
Technical Details for CVE-2026-40563
Vulnerability Analysis
Apache Atlas exposes a DSL search endpoint that translates user-supplied query strings into Gremlin graph traversal operations against the underlying graph database. The endpoint fails to enforce sufficient boundaries between user-controlled query fragments and the traversal logic generated server-side. Attackers with valid credentials can submit query strings that, while remaining within the DSL grammar, alter the structure of the resulting Gremlin traversal. This allows the traversal to navigate to graph nodes and edges that the requesting user is not authorized to view. The vulnerability is network-reachable and requires only low-privilege authentication, making it accessible to any account with search capability.
Root Cause
The root cause is improper control of generated code, classified under CWE-94. Atlas constructs Gremlin traversals from DSL input without isolating user data from executable traversal grammar. Because the input is composed into the traversal rather than parameterized, characters permitted by the DSL grammar can change the meaning of the traversal itself. In Atlas 2.0 and later, the default executor mitigates this behavior, but environments that disable it via atlas.dsl.executor.traversal=false remain exposed.
Attack Vector
The attack vector is network-based and requires authenticated low-privilege access to the Atlas REST API. An attacker submits a crafted DSL query to the search endpoint that injects additional traversal steps. The modified Gremlin traversal returns metadata, lineage, classifications, or entity attributes outside the authenticated user's authorization scope. No user interaction is required beyond the attacker's own request. Exploitation does not require uploading files or modifying configuration. Because Atlas centralizes metadata across data lakes and Hadoop ecosystems, successful exploitation can expose information about sensitive datasets, schemas, and lineage relationships.
No public proof-of-concept code is currently available. See the Apache mailing list advisory and the Openwall OSS Security update for vendor details.
Detection Methods for CVE-2026-40563
Indicators of Compromise
- Unusual DSL query strings submitted to the Atlas search endpoint containing unexpected traversal operators, brackets, or chained predicates beyond typical user query patterns.
- Authenticated user accounts retrieving metadata for entities, classifications, or lineage outside their normal job function or business unit.
- Spikes in DSL search request volume from a single account or session, particularly with iteratively varied query syntax suggesting query probing.
Detection Strategies
- Enable verbose audit logging on the Apache Atlas REST API and capture full DSL query bodies submitted to /api/atlas/v2/search/dsl for offline review.
- Baseline normal DSL query structures per user role, then alert on queries that deviate in length, operator usage, or returned entity counts.
- Correlate Atlas access logs with downstream data platform access events to identify reconnaissance patterns followed by direct data access.
Monitoring Recommendations
- Forward Atlas application logs and HTTP access logs to a centralized SIEM and retain them for incident reconstruction.
- Monitor authentication telemetry for low-privilege accounts performing high-volume search activity that diverges from historical norms.
- Track configuration drift on the atlas.dsl.executor.traversal setting to detect environments that disable the safer default executor.
How to Mitigate CVE-2026-40563
Immediate Actions Required
- Upgrade Apache Atlas to version 2.5.0, which contains the official fix for CVE-2026-40563.
- Audit the atlas-application.properties configuration and confirm atlas.dsl.executor.traversal is not set to false on Atlas 2.0 through 2.4.0 deployments.
- Restrict network access to the Atlas REST API to trusted internal networks and authenticated service accounts only.
- Review recent Atlas audit logs for anomalous DSL query activity by low-privilege accounts.
Patch Information
Apache has released Apache Atlas 2.5.0 to remediate this vulnerability. The fix is documented in the Apache Atlas mailing list advisory and the Openwall OSS Security disclosure. Operators of versions 0.8 through 2.4.0 should plan upgrades. There is no vendor-supplied backport for earlier branches.
Workarounds
- For Atlas 2.0 through 2.4.0, ensure the default configuration is preserved by removing or commenting out atlas.dsl.executor.traversal=false so the safer default executor remains active.
- Apply role-based access control to limit which users can invoke the DSL search endpoint, reducing the population of accounts able to exploit the issue.
- Place a reverse proxy or web application firewall in front of Atlas to inspect and constrain DSL query payloads pending the upgrade to 2.5.0.
# Verify the DSL executor configuration is at the safer default
grep -E '^atlas\.dsl\.executor\.traversal' /opt/atlas/conf/atlas-application.properties
# If the line returns 'false', remove or set it to the default
sed -i 's/^atlas\.dsl\.executor\.traversal=false/#&/' /opt/atlas/conf/atlas-application.properties
# Restart Atlas to apply the change
systemctl restart atlas
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


