Skip to main content

ash CVE-2026-82738

| EUVDEUVD-2026-68965 MEDIUM
Improper Input Validation (CWE-20)
2026-09-01 EEF
5.9
CVSS 4.0 · Vendor: EEF
View

Attack ChainAIDerived

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

  1. Recon
    Supply well-formed non-v7 UUID via write API
  2. Delivery
    Ash cast_input/2 accepts and stores 16-byte binary
  3. Exploit
    Malformed binary persisted to database
  4. Install
    Subsequent read invokes cast_stored/2
  5. C2
    cast_stored/2 delegates to strict cast_input/2
  6. Execute
    cast_input/2 returns :error
  7. Impact
    Record permanently unreadable

Vulnerability Assessment

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

Exploitation requires three concurrent conditions: (1) the target application runs ash versions 3.6.3 through 3.32.1 and exposes at least one Ash.Type.UUIDv7 attribute in a resource; (2) the attacker controls a value that reaches that attribute's write path - via an API endpoint, form submission, message queue, or any other data-ingestion mechanism - without the strict_uuid7 option being set on the attribute (strict_uuid7 is opt-in and off by default); and (3) the supplied value is a syntactically well-formed but non-version-7 UUID. Applications that generate UUIDs server-side and never accept them from external callers are not exploitable. The CVSS 4.0 AT:P (Attack Requirements: Present) metric correctly captures that a specific non-default scenario - a write-exposed UUIDv7 attribute without strict_uuid7 - is required. The AV:L designation in the original vector may reflect that the vulnerability is in an application-layer library rather than a network service; however, whether exploitation is local or remote depends on how the application itself is deployed.

Impact

The real-world risk is moderate and highly context-dependent. The CVSS 4.0 score of 5.9 with vector AV:L/AC:L/AT:P/PR:N/UI:N/VA:H reflects a high availability impact scoped to the vulnerable system, conditioned on specific attack requirements (AT:P). The availability impact is severe at the record level - a poisoned row is permanently unreadable without direct database intervention - but the blast radius is bounded to individual records rather than the full service. Exploitation requires a write path to a UUIDv7 attribute without the strict_uuid7 option enforced; real exposure therefore depends entirely on whether the application accepts externally-supplied UUID values. No EPSS score is available and the vulnerability is absent from the CISA KEV catalog, indicating no confirmed active or widespread exploitation. The attack is also notably stealthy: the write succeeds silently, and only the later read failure signals a problem, complicating detection and forensic attribution. Overall this is a genuine availability risk for affected deployments rather than a theoretical one, but its impact is narrow and the fix is straightforward.

Exploit ScenarioDerived

An attacker with write access to an Ash-powered API endpoint that accepts an externally-supplied UUID for a UUIDv7-typed attribute submits a syntactically valid but non-version-7 UUID (for example, a version-5 UUID such as 550e8400-e29b-51d4-a716-446655440000). Ash accepts and stores the value without error. On every subsequent read of that record, cast_stored/2 passes the stored 16-byte binary to the now-strict cast_input/2, which returns :error, silently rendering the record permanently inaccessible without direct database remediation. No public exploit code exists at time of analysis.

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

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

Alert me

AnalysisAIv1 – Sep 01, 2026

Persistent record-level denial of service in the ash Elixir resource framework (versions 3.6.3-3.32.1) lets any actor who can write a non-version-7 UUID into an Ash.Type.UUIDv7 attribute permanently break all subsequent reads of that database row. The root cause is a validation asymmetry introduced in v3.6.3: cast_input/2 was tightened to reject non-v7 16-byte binaries, but cast_stored/2 continued delegating to cast_input/2, so a stored non-v7 binary now returns :error on every read. No public exploit code has been identified and the vulnerability is not listed in the CISA KEV catalog; vendor-released patch v3.32.2 is available.

RemediationAI

Upgrade ash to version 3.32.2 or later, which resolves the issue by adding a dedicated cast_stored/2 clause (commit c453cdc0b8570e86ffef0d10e136247f52b3ea76) that decodes any 16-byte binary directly without delegating to the strict cast_input/2. Full advisory details are at https://github.com/ash-project/ash/security/advisories/GHSA-7xfw-9jwm-9c4c. As a compensating control before patching, enabling the strict_uuid7 option on all Ash.Type.UUIDv7 attributes blocks the poisoning write at the input stage; note that this will reject any caller currently supplying non-v7 UUIDs and must be tested for compatibility before deployment. Additionally, audit all application write paths that accept externally-supplied UUID values destined for UUIDv7-typed attributes and enforce UUID version validation at the API boundary to prevent malformed values from reaching Ash type casting.

Affected VersionsENISA

ash 751d8a4d11564efbe358c90c8347f3a00eb60782 <c453cdc0b8570e86ffef0d10e136247f52b3ea76
ash 3.6.3 <3.32.2

Affected Packages

euvd ash fix: 3.32.2

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 is an Elixir resource framework (cpe:2.3:a:ash-project:ash) that marshals attribute values through three callbacks: cast_input/2 (external input), dump_to_native/2 (write to storage), and cast_stored/2 (read from storage). Ash.Type.UUIDv7 stores UUID strings as compact 16-byte binaries. Prior to v3.6.3, cast_input/2 accepted any well-formed UUID regardless of version, making the cast_stored/2 → cast_input/2 delegation safe. The v3.6.3 input-validation tightening added a pattern-match clause that returns :error for any 16-byte binary that is not a version-7 (or optionally version-4) UUID; this clause was never mirrored in cast_stored/2. Consequently, a non-v7 UUID written before or during the vulnerable window is stored as a 16-byte binary, then on every subsequent read cast_stored/2 passes it to the now-strict cast_input/2, which returns :error - permanently poisoning the row. CWE-20 (Improper Input Validation) is the root cause class: input and storage-read validation paths were allowed to diverge. The fix (commit c453cdc0b8570e86ffef0d10e136247f52b3ea76) adds a dedicated cast_stored/2 clause - def cast_stored(<<_::128>> = value, _) - that decodes any 16-byte binary directly via Ash.UUIDv7.encode/1, bypassing cast_input/2 entirely.

Know when Ash 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 5.9 MEDIUM
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 6.5 MEDIUM

Network vector because Ash apps commonly expose write APIs; PR:L because write access to a UUIDv7 attribute is required; pure availability impact with no confidentiality or integrity effect.

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

Primary rating from Vendor (EEF).

CVSS VectorVendor: EEF

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

DescriptionCVE.org

Improper Input Validation vulnerability in ash-project ash allows an attacker to persistently deny reads of a record by storing a non-version-7 UUID in an Ash.Type.UUIDv7 attribute.

Ash.Type.UUIDv7.cast_input/2 accepts any well-formed UUID string, including non-version-7 UUIDs, and stores it as a 16-byte binary. On read, cast_stored/2 (lib/ash/type/uuid_v7.ex) routes the stored binary back through cast_input/2, which since an input-validation tightening in v3.6.3 matches only version-7 (and optionally version-4) 16-byte binaries and otherwise expects a 36-character string. A stored non-v7 16-byte binary matches neither clause and returns :error, so every later read of that record fails. An attacker able to set such an attribute poisons the row permanently. The fix decodes any 16-byte stored binary directly in cast_stored/2.

This issue affects ash: from 3.6.3 before 3.32.2.

Threat Intelligence Overview

EPSS Score
0.1%
Top 97% exploitable
Prevalence
Low
niche Elixir resource framework, small enterprise footprint
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

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.1%
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
Small
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

More in Ash

View all
CVE-2026-55736 MEDIUM POC
5.9 Jun 23

Private argument injection in the Ash Elixir framework (versions 3.0.0 through 3.29.2) allows end users to set action ar

CVE-2021-45688 CRITICAL
9.8 Dec 27

An issue was discovered in the ash crate before 0.33.1 for Rust. Rated critical severity (CVSS 9.8), this vulnerability

CVE-2026-94201 HIGH
8.2 Oct 05

Atom table exhaustion in the Ash framework (Elixir) allows an unauthenticated remote attacker to crash a BEAM node by su

CVE-2026-96581 HIGH
7.6 Oct 26

Cross-tenant record takeover in the Ash framework (Elixir) for versions 1.22.0 up to 3.37.2: when a resource uses attrib

CVE-2026-86338 MEDIUM
6.0 Sep 16

An authorization bypass in the Ash framework (Elixir) lets authenticated, lower-privileged actors recover values they ar

CVE-2026-101028 MEDIUM
6.0 Oct 09

Information disclosure in the Ash framework for Elixir (versions 2.6.0 up to but not including 3.34.6) lets an authentic

CVE-2026-114214 MEDIUM
6.0 Oct 25

An incorrect authorization flaw in the Elixir Ash framework (versions 3.24.0 up to but not including 3.37.1) lets an aut

CVE-2026-82737 MEDIUM
5.9 Sep 01

Integer overflow in Ash Framework's vector encoding corrupts stored vectors in any Elixir application using Ash versions

CVE-2026-82735 MEDIUM
5.9 Sep 01

CPU exhaustion in Ash Framework's string type constraint handler allows denial of service against Elixir applications th

CVE-2026-69659 MEDIUM
5.9 Aug 09

Memory exhaustion via decompression bomb in Ash Framework's keyset pagination can terminate Erlang nodes running version

CVE-2026-82752 MEDIUM
5.9 Sep 05

Unbounded string storage in Ash Framework versions 0.10.0 through 3.32.x allows unauthenticated attackers to bypass max_

CVE-2026-82742 MEDIUM
5.9 Sep 01

Memory exhaustion in Ash Framework's runtime filter engine allows an attacker controlling filter inputs to crash an Elix

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