Description
Incorrect Behavior Order: Validate Before Canonicalize vulnerability in ash-project ash lets an attacker store a case-insensitive string value that violates its length or match constraints.

Ash.Type.CiString.apply_constraints/2 (lib/ash/type/ci_string.ex) validated the max_length, min_length, and match constraints against the value as submitted, while the type case-folds the string (per its casing) for storage and comparison. Because validation ran before folding, an attacker can submit a value whose folded form breaks a constraint but whose original form passes: for example, against a match pattern requiring uppercase, an uppercase value that is stored lowercased persists a value the pattern rejects. The fix case-folds the value at the start of apply_constraints/2, so the constraints are checked against the form that is actually stored.

This issue affects ash: from 1.29.0-rc0 before 3.32.2.
Published: 2026-09-01
Score: 2.1 Low
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability allows an attacker to store a case‑insensitive string that violates defined length or match constraints because validation is performed before case folding. The type CiString compares values after folding, so a submitted value can appear valid during validation yet be stored in a form that violates the constraints. This flaw results in data integrity issues and potentially undermines business rules that rely on strict string formats, without providing direct remote code execution or denial of service.

Affected Systems

The issue affects the Ash Project's Ash library in all released versions from 1.29.0‑rc0 onward up to and including 3.32.1. Users of any earlier or later releases are not impacted. Ash is distributed as a single package, ash, and the vulnerability resides in its core type module Ash.Type.CiString.

Risk and Exploitability

With a CVSS score of 2.1, the vulnerability is considered low severity. EPSS data is not available, but the lack of a KEV listing further indicates low exploitation likelihood. The likely attack vector is through legitimate input channels where an attacker can supply a crafted string; the flaw requires only user interaction with the application’s input form or API. Since validation occurs before canonicalization, the attack does not require elevated privileges and can be performed by any user who can submit data, potentially leading to inconsistent data storage.

Generated by OpenCVE AI on September 1, 2026 at 04:22 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Ash to version 3.32.2 or later where the case‑folding logic occurs before constraint checks.
  • If an immediate upgrade is not possible, apply the patch from the referenced commit (d8320b0127c8ef453679d70e5dd23a9506951d21) to the apply_constraints function so that folding precedes validation.
  • As a temporary safeguard, avoid using the Ash.Type.CiString type for critical fields or enforce your own post‑canonicalization validation logic on stored values.

Generated by OpenCVE AI on September 1, 2026 at 04:22 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 01 Sep 2026 03:30:00 +0000

Type Values Removed Values Added
Description Incorrect Behavior Order: Validate Before Canonicalize vulnerability in ash-project ash lets an attacker store a case-insensitive string value that violates its length or match constraints. Ash.Type.CiString.apply_constraints/2 (lib/ash/type/ci_string.ex) validated the max_length, min_length, and match constraints against the value as submitted, while the type case-folds the string (per its casing) for storage and comparison. Because validation ran before folding, an attacker can submit a value whose folded form breaks a constraint but whose original form passes: for example, against a match pattern requiring uppercase, an uppercase value that is stored lowercased persists a value the pattern rejects. The fix case-folds the value at the start of apply_constraints/2, so the constraints are checked against the form that is actually stored. This issue affects ash: from 1.29.0-rc0 before 3.32.2.
Title Ash.Type.CiString validates length and match constraints before case folding, allowing constraint bypass
First Time appeared Ash-project
Ash-project ash
Weaknesses CWE-180
CPEs cpe:2.3:a:ash-project:ash:*:*:*:*:*:*:*:*
Vendors & Products Ash-project
Ash-project ash
References
Metrics cvssV4_0

{'score': 2.1, 'vector': 'CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: EEF

Published:

Updated: 2026-09-01T03:21:47.332Z

Reserved: 2026-08-31T00:59:10.001Z

Link: CVE-2026-82736

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-01T04:18:03.007

Modified: 2026-09-01T04:18:03.007

Link: CVE-2026-82736

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-01T04:30:03Z

Weaknesses
  • CWE-180

    Incorrect Behavior Order: Validate Before Canonicalize