Skip to main content

Ash Framework EUVDEUVD-2026-57544

| CVE-2026-67579 HIGH
SQL Injection (CWE-89)
2026-08-12 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
7.5
CVSS 4.0 · Vendor: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
Share

Severity by source

Vendor (6b3ad84c-e1a6-4bf7-a703-f496b71e49db) PRIMARY
7.5 HIGH
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
vuln.today AI
10.0 CRITICAL

Cursor is a network-accessible URL parameter requiring no authentication; SQL injection or in-process RCE constitutes a scope change beyond the vulnerable Ash component.

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

Primary rating from Vendor (6b3ad84c-e1a6-4bf7-a703-f496b71e49db).

CVSS VectorVendor: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db

CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Attack Vector
Local
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
X

Lifecycle Timeline

4
Patch available
Aug 12, 2026 - 21:17 EUVD
Source Code Evidence Fetched
Aug 12, 2026 - 20:48 vuln.today
Analysis Generated
Aug 12, 2026 - 20:48 vuln.today
CVE Published
Aug 12, 2026 - 20:17 cve.org
HIGH 7.5

DescriptionCVE.org

Deserialization of Untrusted Data vulnerability in ash-project ash allows an unauthenticated attacker to inject a filter expression through a forged keyset pagination cursor, resulting in SQL injection or code execution depending on the data layer.

Read actions with keyset pagination decode the client-supplied page[:after] or page[:before] cursor in decode_values/2 in lib/ash/page/keyset.ex using non_executable_binary_to_term/2 with [:safe]. That guard blocks new atoms, funs, and ports, but not a struct built from atoms already interned in a running Ash application, so a decoded %Ash.Query.Call{} expression survives and is spliced into the keyset filter as a comparison value in do_filters/4 and evaluated. Because the cursor bypasses the Ash.Expr macro, the runtime never applies the private?/public? gate that would otherwise reject it. On AshPostgres the injected fragment is inlined into the SQL query; on the ETS and Simple data layers it is evaluated in-process as an arbitrary function call.

This issue affects ash: from 1.17.0 before 3.31.3.

AnalysisAI

Unauthenticated SQL injection and remote code execution in Ash Framework (ash-project/ash) are achievable by any caller who can reach a keyset-paginated endpoint: the cursor deserializer accepts pre-interned Ash expression structs that bypass query filter guards, yielding SQL injection on AshPostgres deployments or in-process arbitrary code execution on ETS and Simple data layers. All ash versions 1.17.0 through 3.31.2 are exposed across both impact paths. …

Unlock full vulnerability intelligence

  • Risk assessment & exploitation conditions
  • Attack chain visualization
  • Remediation with exact patch versions
  • Threat intelligence from 22 sources
  • Personal watchlist & email alerts

Free forever · No credit card required

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata

Access
Identify exposed keyset pagination endpoint
Delivery
Craft and serialize forged %Ash.Query.Call{} struct
Exploit
Base64-encode, submit as page[after] cursor
Execution
[:safe] guard accepts pre-interned atom struct
Persist
Expression spliced into filter, bypasses auth gate
Impact
SQL injection or in-process code execution

Vulnerability AssessmentAI

Exploitation The targeted application must run ash versions 1.17.0 through 3.31.2 AND expose at least one read action configured with keyset pagination (page type: :keyset accepting page[after] or page[before] query parameters) - offset-paginated and non-paginated endpoints are entirely unaffected. … Additional conditions and limiting factors are described in the full assessment.
Risk Assessment The CNA-assigned CVSS 4.0 vector specifies AV:L (Local), which is inconsistent with the actual attack path - the pagination cursor arrives as a URL query parameter (page[after] or page[before]) accessible over the network to any HTTP caller, with no local access requirement. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in.
Exploit Scenario An attacker identifies an Ash-backed Phoenix API endpoint that exposes keyset pagination, then constructs a forged cursor by evaluating :erlang.term_to_binary(%Ash.Query.Call{name: :fragment, args: ["injected payload"], relationship_path: []}) and base64-encoding the result in any Elixir or Erlang shell. Submitting this value as page[after] causes the AshPostgres data layer to inline the fragment into the generated SQL query, enabling data exfiltration or schema manipulation; against an ETS or Simple data layer, the Call struct is evaluated in-process, executing the attacker's payload within the application runtime.
Remediation Upgrade to Ash version 3.31.3 or later, which resolves the issue by adding expression-type validation after deserialization in lib/ash/page/keyset.ex (commit 91874dd5435bc0ffebd8a254acfa573b39b74520; full advisory at https://github.com/ash-project/ash/security/advisories/GHSA-3gq3-9xm3-c8v3). … Detailed patch versions, workarounds, and compensating controls in full report.

Recommended ActionAI

Within 24 hours: inventory all Ash Framework deployments, identify versions and data layer types (PostgreSQL, ETS, Simple), and isolate critical systems from untrusted networks if feasible. …

Sign in for detailed remediation steps and compensating controls.

Threat intelligence, references, and detailed analysis are available after sign-in.

Share

EUVD-2026-57544 vulnerability details – vuln.today

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