Answer in brief
CVE-2026-82752 records a Medium severity (CVSS 5.9) vulnerability in Ash string length constraints count graphemes, so a combining-mark string of any size passes max_length. The current sources do not mark it as known exploited. The current feed maps ash-project/ash (generic), ash-project/ash (generic), ash-project/ash-project/ash (generic). Check affected ranges and fixed versions before updating.
Analysis pending evidence review
HOL Guard separates source facts from reviewed analysis. See the methodology.
CVSS is 5.9. The current sources do not mark it as known exploited. Treat this as a source-backed prioritization signal, not a statement about your environment.
Analysis status
Analysis pending evidence review
Factual feed record only; HOL analysis is not approved for indexing. Read the methodology.
The current feed maps ash-project/ash (generic), ash-project/ash (generic), ash-project/ash-project/ash (generic). Check affected ranges and fixed versions before updating.
| Package | Affected range | Fixed version |
|---|---|---|
| ash-project/ashgeneric | >=05848d5f4affe60fddd812222a18ada080c0813b <* | * |
| ash-project/ashgeneric | >=0.10.0 <3.33.0 | 3.33.0 |
| ash-project/ash-project/ashgeneric | >=05848d5f4affe60fddd812222a18ada080c0813b <* | * |
Published upstream
Sep 5, 2026
Evidence: source:cvelist:source_dates:source-dates:recordSource modified
Sep 8, 2026
Evidence: source:cvelist:source_dates:source-dates:recordFirst seen by HOL
Sep 5, 2026
Improper Validation of Specified Quantity in Input vulnerability in ash-project ash allows an attacker to store a value of arbitrary size in an attribute whose length constraint should bound it. Ash measures string length with Elixir's String.length/1, which counts Unicode graphemes, in the max_length and min_length constraints of Ash.Type.String (apply_constraints/2 in lib/ash/type/string.ex), in Ash.Resource.Validation.StringLength, and in the string_length expression function. A grapheme carries an unbounded number of combining marks, so a base character followed by a million combining acute accents is one grapheme and megabytes of data, and satisfies max_length: 2. Where the data layer imposes no independent limit (ETS, Mnesia, or a Postgres text column) the whole value is persisted, so an attacker can write an entire request body into an attribute declared with a small maximum and grow storage without bound. The counting unit also disagrees with the storage layer, which counts codepoints rather than graphemes, so a value accepted by the constraint can still be rejected or truncated by the column. A Postgres varchar(n) column bounds the value itself and is not exposed. This issue affects ash: from 0.10.0 before 3.33.0.
Quoted source text, attributed separately from HOL analysis.