Skip to main content

ash_graphql CVE-2026-78693

| EUVDEUVD-2026-68288 MEDIUM
Error Message Information Leak (CWE-209)
2026-08-30 EEF
6.9
CVSS 4.0 · Vendor: EEF
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Send GraphQL request with invalid field input
  2. Delivery
    Trigger validation error on non-exposed Ash attribute
  3. Exploit
    Error handler drops :path for redaction
  4. Execution
    Map.put_new re-injects raw internal attribute name
  5. Impact
    Client 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAI

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

ash_graphql 6d2d8d995906d68cc245d209a9b3f9853405eb61 <78e90d369f09f44c534816de541e60841066a467
ash_graphql 1.9.0 <1.11.0

Affected Packages

euvd ash_graphql fix: 1.11.0

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

Vendor (EEF) PRIMARY 6.9 MEDIUM
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
vuln.today AI 5.3 MEDIUM

Network-reachable with no auth or user interaction required; impact is low confidentiality only - internal field name disclosure, no integrity or availability effect.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (EEF).

CVSS VectorVendor: EEF

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

EPSS Score
0.3%
Top 78% exploitable
Prevalence
Low
niche Elixir/Ash framework library, small ecosystem footprint
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +34
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy