Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend GraphQL request with invalid field input
-
DeliveryTrigger validation error on non-exposed Ash attribute
-
ExploitError handler drops :path for redaction
-
ExecutionMap.put_new re-injects raw internal attribute name
-
ImpactClient reads internal field name from GraphQL error path
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Error message sanitization
MITRE ATT&CK
1 technique across 1 tactic: Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires three concurrent conditions: the application must be running ash_graphql 1.9.0 through 1.10.x; the application must have explicitly configured an error_handler that either returns a fresh map without :path or explicitly deletes :path (i.e., a sanitizing handler - applications with no error_handler or handlers that preserve :path are unaffected by this specific bypass); and the Ash resource must have non-exposed or nested fields with no field_names mapping configured. No authentication is required (CVSS PR:N), and no special network position is needed beyond the ability to send GraphQL requests. The limiting factor is that only applications that actively attempted to redact error paths are affected - deployments without a sanitizing error_handler have no security expectation defeated by this CVE. |
| Impact | The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N, score 6.9) accurately reflects the attack profile: network-reachable, no authentication required, low confidentiality impact limited to the vulnerable system. The real-world risk is contextually elevated for applications that deliberately configured error redaction as a security boundary - for those, the bypass is a complete failure of a configured security control. For applications that never set up a sanitizing error_handler, internal field names were already exposed, so this CVE introduces no marginal risk. There is no KEV listing and no public exploit identified, and the impact is restricted to information disclosure (internal schema reconnaissance) rather than data exfiltration, code execution, or availability impact. EPSS data is not provided; given the niche ecosystem and limited impact class, real-world exploitation probability is likely low. |
| Exploit ScenarioDerived | An attacker sends a GraphQL mutation or query with intentionally invalid input targeting a field that maps to a non-exposed or nested Ash attribute. When validation fails, the application's sanitizing error_handler drops :path from the error map, but AshGraphql re-injects the raw internal attribute name via Map.put_new before returning the response. The attacker reads the path array in the GraphQL error response and discovers internal Ash resource attribute and argument names that the application's security policy intended to conceal, enabling further schema reconnaissance. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAI
Internal Ash attribute and argument names leak through GraphQL error responses in ash_graphql 1.9.0 through 1.10.x, bypassing application-configured error handlers intended to redact them. A logic flaw in AshGraphql.Errors causes a sanitizing error_handler's decision to suppress the :path field to be silently overridden, re-injecting raw internal field names via build_error_path/5. Unauthenticated remote clients can trigger validation failures on non-exposed or nested fields to enumerate internal schema structure that the application deliberately chose to hide. No public exploit or KEV listing exists at time of analysis.
RemediationAI
Upgrade ash_graphql to version 1.11.0 or later, which removes the Map.put_new calls that override handler-suppressed paths (patch commit 78e90d369f09f44c534816de541e60841066a467, advisory at https://github.com/ash-project/ash_graphql/security/advisories/GHSA-ppr2-g9h8-w7qp). If upgrading immediately is not possible, a workaround is to configure a field_names mapping for all exposed Ash resources so that build_error_path/5 maps internal attribute names to safe public aliases before the error_handler runs - this prevents raw internal names from appearing in the path even if it gets re-injected. Alternatively, the error_handler can be modified to explicitly set :path to a sanitized value rather than omitting it entirely, which sidesteps the Map.put_new bypass for the duration of the interim period. Note that neither workaround is as robust as the upgrade, as they both depend on complete coverage of all attributes and arguments.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
ash_graphql is an Elixir library (cpe:2.3:a:ash-project:ash_graphql) that integrates the Ash framework with Absinthe-based GraphQL APIs. The affected code in AshGraphql.Errors processes errors through a configurable error_handler pipeline before returning them to GraphQL clients. The CWE-209 root cause is a flawed merge step: after calling the handler, the code applied Map.put_new(handled, :path, path), which re-inserts :path whenever the handler returned a map without it - exactly the behavior of a sanitizing handler that drops or never sets :path. The path value originates from build_error_path/5, which falls back to raw internal Ash attribute and argument names when no field_names renaming map is configured. The fix (commit 78e90d369f) removes the Map.put_new calls entirely, honoring the handler's return verbatim so handlers that drop :path are respected.
Know when Ash Graphql gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
Network-reachable with no auth or user interaction required; impact is low confidentiality only - internal field name disclosure, no integrity or availability effect.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
Generation of Error Message Containing Sensitive Information vulnerability in ash-project ash_graphql allows a remote client to read internal field names that an application configured its error_handler to redact.
In AshGraphql.Errors, each error is passed to the configured error_handler and the returned map is merged with the pre-handler path via Map.put_new(handled, :path, path). Because put_new defers to the handler only when the handler itself set :path, a sanitizing handler that returns a fresh map or deletes :path has that decision reverted. The re-injected path comes from build_error_path/5, which falls back to raw internal Ash attribute and argument names when no field_names mapping is configured. A validation failure on a non-exposed or nested field therefore returns internal names in the GraphQL error path, defeating the application's redaction.
This issue affects ash_graphql: from 1.9.0 before 1.11.0.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
More in Ash Graphql
View allAshGraphql's Absinthe complexity calculator undercounts nested Relay connection and keyset pagination queries, allowing
Cross-tenant data disclosure in ash_graphql affects authenticated subscribers in multi-tenant deployments running versio
Relay node query crash in AshGraphql (ash_graphql 0.27.0 through 1.10.x) allows an unauthenticated remote caller to abor
GraphQL subscription payloads carrying unauthorized record data leak to authenticated subscribers in ash_graphql 1.4.0-1
Cross-session record leakage in ash_graphql's subscription batcher allows one subscriber's resolved GraphQL records to b
EUVD-2026-68288
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB