Skip to main content

AshGraphql EUVDEUVD-2026-68285

| CVE-2026-81633 MEDIUM
Improper Input Validation (CWE-20)
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
    Identify GraphQL endpoint with Absinthe relay node support
  2. Delivery
    Enumerate or guess common Elixir resource/atom names from schema introspection or naming conventions
  3. Exploit
    Craft base64-encoded relay ID with non-registered but BEAM-interned type segment
  4. Execution
    Submit unauthenticated node(id: "...") GraphQL query
  5. Persist
    Map.fetch! raises unhandled KeyError before Absinthe rescue handlers run
  6. Impact
    Application returns 500 response potentially containing internal stacktrace

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
Exploitation Conditions

The target application must run AshGraphql versions 0.27.0 through 1.10.x with the Absinthe relay node(id:...) query exposed. The critical constraint is that the attacker-supplied type segment, after base64 decoding and splitting, must resolve to an existing Elixir atom in the BEAM VM - String.to_existing_atom will raise for strings that have never been interned, which partially gates exploitation. However, this constraint is easily overcome: any atom that appears in the application's schema definitions, resource module names, enum values, or other startup-time code is a valid candidate, and the description explicitly notes that common resource names are easy to guess. No authentication, session state, or specific application configuration beyond relay support being enabled is required. Exploitation is limited to the relay node query endpoint; other GraphQL queries are unaffected.

Impact

The assigned CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N) scores 6.9, confirming unauthenticated network exploitability with low confidentiality impact from stacktrace disclosure. However, the VA:N metric is inconsistent with both the 'Denial of Service' tag in the input and the description's explicit statement that the resolver crashes - the relay node query endpoint is at minimum rendered error-prone, suggesting VA:L is more accurate for the availability dimension; this discrepancy should be verified with the CNA. No EPSS score or CISA KEV listing is available, and no confirmed active exploitation exists. Attack complexity is genuinely low: crafting a relay ID with a plausible resource name type segment is trivial, and the description notes that common resource names are easy to guess. The one real constraint - the type atom must already exist in the BEAM VM - limits fully arbitrary strings but is easily satisfied by common Elixir module fragments or resource names interned during application startup. Real-world risk is bounded primarily by AshGraphql's niche deployment footprint in the Elixir/Ash ecosystem.

Exploit ScenarioDerived

An unauthenticated attacker probes a Phoenix/AshGraphql application's GraphQL endpoint for relay support by issuing a node(id:...) introspection or test query. They craft a base64-encoded relay ID whose type segment is a common Elixir resource name or module fragment known to exist as a BEAM atom (e.g., a value guessed from the schema or a common naming convention), but is not a registered relay node type. Sending this ID as a node(id:...) query triggers Map.fetch!/2 to raise a KeyError that escapes Absinthe's error handling, resulting in a 500-class response that may include an internal stacktrace revealing module paths and application internals.

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

Relay node query crash in AshGraphql (ash_graphql 0.27.0 through 1.10.x) allows an unauthenticated remote caller to abort the Absinthe node(id:...) resolver by supplying a base64-encoded relay ID whose type segment resolves to an existing BEAM VM atom that is not a registered relay resource type. Because the resolver calls Map.fetch!/2 before Absinthe's rescue handlers run, the resulting KeyError surfaces as an unhandled process exception rather than a structured GraphQL error, potentially leaking an internal stacktrace with module names and file paths. No public exploit code has been identified at time of analysis, though the fix commit is publicly visible on GitHub.

RemediationAI

Upgrade ash_graphql to version 1.11.0 or later, which replaces the unsafe Map.fetch!/2 call with Map.fetch/2 and properly returns a structured 'Invalid node id' GraphQL error for unknown relay types (patch commit: https://github.com/ash-project/ash_graphql/commit/c8863ed8e5c21f1bfb6125f1d24e78443dfc6351; advisory: https://github.com/ash-project/ash_graphql/security/advisories/GHSA-mrgv-g7gf-r96h). For teams unable to upgrade immediately, a compensating control is to add an Absinthe middleware layer or WAF rule that validates the decoded type segment of any relay node ID against a known allowlist of registered resource type names before forwarding to the resolver - this introduces maintenance overhead as resource types are added or renamed. Alternatively, disable the Absinthe relay node(id:...) query entirely if relay global IDs are not a required application feature; this is a disruptive change for relay-dependent clients but fully eliminates the attack surface.

Affected VersionsENISA

ash_graphql 365b3aedc6b36f020e6a2c7dce63fa569243bc4e <c8863ed8e5c21f1bfb6125f1d24e78443dfc6351
ash_graphql 0.27.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

AshGraphql is an Elixir library that bridges the Ash Framework with Absinthe-based GraphQL APIs. The relay global ID is processed in AshGraphql.Graphql.Resolver.resolve_node/2, which base64-decodes the client-supplied string, splits it on ':' to obtain a type segment, converts it via String.to_existing_atom, and then performs a Map.fetch!(type_to_domain_and_resource_map, type) lookup. In Elixir, Map.fetch!/2 raises a KeyError when the key is absent rather than returning an error tuple, and this exception propagates before Absinthe's resolver rescue clauses have a chance to convert it into a GraphQL error envelope. The root cause class is CWE-20 (Improper Input Validation): the decoded type is never validated against the set of registered relay types prior to the potentially-raising map lookup. The fix in commit c8863ed replaces Map.fetch! with the safe Map.fetch/2, pattern-matching {:error} to return an 'Invalid node id' GraphQL error. Affected CPE: cpe:2.3:a:ash-project:ash_graphql:*:*:*:*:*:*:*:* for versions 0.27.0 through 1.10.x.

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 6.5 MEDIUM

Unauthenticated network-reachable GraphQL endpoint; C:L for stacktrace disclosure, A:L for relay resolver crash degrading that query handler.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:L
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:L/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

Improper Input Validation vulnerability in ash-project ash_graphql allows an unauthenticated client to crash a relay node(id: ...) query with an unhandled KeyError.

AshGraphql.Graphql.Resolver.resolve_node/2 decodes the client-supplied global ID with decode_relay_id/1, which only base64-decodes the string and splits it on : without validating the type segment. The decoded type is passed straight to Map.fetch!(type_to_domain_and_resource_map, type). Because fetch! raises on a missing key, a relay ID whose type segment is a valid atom that is not a relay-exposed type aborts the resolver before its resolve/2 clauses and their rescue handlers run, so the error never becomes a GraphQL error and may expose a stacktrace. Common resource names are easy to guess. The fix uses Map.fetch/2 and returns an Invalid node id error for unknown types.

This issue affects ash_graphql: from 0.27.0 before 1.11.0.

Threat Intelligence Overview

EPSS Score
0.3%
Top 78% exploitable
Prevalence
Low
niche Elixir/Ash Framework library, limited enterprise deployment 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

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

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