Skip to main content

ash_graphql EUVDEUVD-2026-68284

| CVE-2026-81643 LOW
Incorrect Authorization (CWE-863)
2026-08-30 EEF
2.3
CVSS 4.0 · Vendor: EEF
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as subscriber
  2. Delivery
    Open GraphQL subscription on target resource
  3. Exploit
    Trigger two rapid events for unauthorized records within batch window
  4. Execution
    Batch interval elapses without first-event filter applied to batch tail
  5. Impact
    Unauthorized record payload delivered over WebSocket

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Three conditions must hold simultaneously: (1) The attacker is an authenticated user with a valid GraphQL subscription open on ash_graphql (PR:L - unauthenticated exploitation is not possible); (2) at least two subscription notification events for records the attacker is not authorized to access must arrive within the same batch interval, which defaults to one second (AT:P - the specific timing prerequisite that prevents trivial single-event exploitation); (3) ash_graphql 1.4.0-1.10.x must be deployed with GraphQL subscriptions enabled and the Batcher running (batching is the default path). Limiting factors: read-only confidentiality impact only (no write or availability exposure); restricted to subscription-capable deployments, not standard GraphQL queries or mutations; timing dependency limits reliable exploitation to scenarios with high event rates or attacker-controlled event triggers.

Impact

The CVSS 4.0 score of 2.3 (AV:N/AC:L/AT:P/PR:L/UI:N/VC:L) correctly reflects a tightly constrained exploitability profile: the attacker must hold a valid authenticated subscriber session (PR:L), and two notifications for unauthorized records must coincide within the same batch window (AT:P - a specific timing prerequisite). Impact is bounded to low-level confidentiality disclosure of subscription field data only; integrity and availability are unaffected. No CISA KEV listing and no public exploit code exist, consistent with a low EPSS expectation for a niche Elixir library. The 'Authentication Bypass' tag in the input metadata is factually wrong - authentication is required per PR:L, and the root cause is authorization logic, not authentication. Real-world prioritization is low-to-medium: the product footprint is limited to Elixir applications using GraphQL subscriptions, exploitation requires both an authenticated subscription and a timing coincidence, and mass automated exploitation is implausible despite the network attack vector.

Exploit ScenarioDerived

An authenticated user holds an open GraphQL subscription for a resource type they are not authorized to view. When two or more records of that type are created or updated within a one-second window - for example, a bulk-create operation or rapid sequential writes - the batcher coalesces both events, filters the first via should_send?/1, but delivers the unauthorized data from the second notification directly to the subscriber's WebSocket. The patch regression test in the commit diff confirms this sequence is reliably reproducible; no separate public proof-of-concept has been identified.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAI

GraphQL subscription payloads carrying unauthorized record data leak to authenticated subscribers in ash_graphql 1.4.0-1.10.x due to a missing authorization filter in the batch-processing codepath of AshGraphql.Subscription.Batcher. When two or more subscription notifications arrive within the default one-second batching window, only the first is passed through the should_send?/1 authorization gate; all subsequent notifications in the same batch bypass that check entirely and are published to the subscriber's WebSocket connection. No public exploit has been identified at time of analysis, and a vendor-released patch is available in version 1.11.0.

RemediationAI

Upgrade to ash_graphql 1.11.0 or later, which applies should_send?/1 across the entire notification batch in AshGraphql.Subscription.Batcher, as delivered in patch commit e8e67f39add2ce0771e6db5f086afe68ba212c57. The vendor advisory at https://github.com/ash-project/ash_graphql/security/advisories/GHSA-j684-hch4-q888 confirms 1.11.0 as the remediated release. For deployments that cannot immediately upgrade, a targeted workaround is to set send_immediately_threshold: 0 when starting the Batcher supervisor, which forces every notification to be dispatched immediately rather than batched, eliminating the vulnerable codepath entirely; the trade-off is increased pubsub publish overhead under high event volumes. Disabling GraphQL subscriptions application-wide is a more disruptive but fully effective compensating control if subscriptions are not business-critical.

Affected VersionsENISA

ash_graphql 1.4.0 <1.11.0
ash_graphql 3cb2c9870d050c7c4bba6c211aaed97d732f7e81 <e8e67f39add2ce0771e6db5f086afe68ba212c57

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 (CPE: cpe:2.3:a:ash-project:ash_graphql) is an Elixir library providing GraphQL bindings for the Ash Framework, including real-time GraphQL subscriptions over WebSocket. The defect is in AshGraphql.Subscription.Batcher.do_send/5, which coalesces subscription events arriving within a configurable batch interval (default: 1 second) before dispatching them. CWE-863 (Incorrect Authorization) applies precisely: the authorization suppression function should_send?/1 - which drops results carrying error codes :forbidden or :not_found, or results with no error code - is correctly applied to the first notification in a batch, but the loop over remaining notifications (read from the process dictionary and re-processed through the pipeline) emits directly to pubsub.publish_subscription/2 guarded only by a not is_nil(record) check. That nil guard cannot catch error-carrying unauthorized results, so they are delivered as-is. The fix, introduced in commit e8e67f39, pipes the full batch through Enum.filter(&should_send?/1) before publishing.

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 2.3 LOW
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 3.1 LOW

Timing condition requiring two events in the same batch window raises AC:H; authenticated subscriber mandatory raises PR:L; only limited subscription field data disclosed so C:L.

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:P/PR:L/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
Present
Privileges Required
Low
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

Incorrect Authorization vulnerability in ash-project ash_graphql delivers GraphQL subscription payloads for records a subscriber is not authorized to see.

In AshGraphql.Subscription.Batcher, do_send/5 resolves the first notification of a batch and filters it with should_send?/1, which drops results whose errors are coded forbidden or not_found or carry no code, precisely so that unauthorized results are not disclosed. The remaining notifications in the batch are read from the process dictionary, re-run through the pipeline, and appended to the outgoing results without that filter. They reach pubsub.publish_subscription/2, and the not is_nil(record) guard drops only nil records, not error-carrying results. Any two qualifying notifications arriving within the default one-second batch interval suffice, and batching is the default path. The fix applies should_send?/1 to the whole batch.

This issue affects ash_graphql: from 1.4.0 before 1.11.0.

Threat Intelligence Overview

EPSS Score
0.2%
Top 84% exploitable
Prevalence
Low
niche Elixir/Ash Framework library, limited enterprise 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 LOW
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

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

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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