Description
Improper Validation of Specified Type of Input vulnerability in ash-project ash lets an attacker confuse the stored type tag of an Ash.Type.Union value that uses storage: :map_with_tag, bypassing that member's validation and any tag-based authorization.

For a union with storage: :map_with_tag, each member is identified in storage by a configured tag and tag_value. Ash.Type.Union.dump_to_native/2 (lib/ash/type/union.ex) did not force the configured tag when writing the value, so a tag carried in the submitted value was persisted verbatim. An attacker can therefore store a value whose data belongs to one member but whose tag names a different member. On read the value is re-selected by its tag and treated as the incompatible member (a type confusion), bypassing the real member's constraints and any logic or policy that branches on the union tag. The fix drops any incoming tag and forces the configured tag value on dump.

This issue affects ash: from 2.14.18 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 flaw resides in Ash.Type.Union.dump_to_native/2 for values stored with :map_with_tag storage. During serialization the function fails to enforce the configured tag, persisting any tag supplied by the caller. An attacker can therefore encode a value that belongs to one union member while carrying the tag of another member. When the value is later read, the library reconstructs the union using the supplied tag, leading to type confusion and allowing the attacker to bypass the intended member’s constraints and any logic that branches on the union tag.

Affected Systems

This vulnerability is present in the ash-project’s ash library from version 2.14.18 up to, but not including, 3.32.2.

Risk and Exploitability

The CVSS score of 2.1 indicates a low severity for this issue, and the EPSS score is not available indicating no known exploitation data. The vulnerability is not listed in the CISA KEV catalog. An attacker would need permission to write union values, which could be achieved via an exposed API or a privileged user, making the attack vector likely local or remote with authenticated access. While the score suggests limited risk, the potential to bypass validation and authorization remains a concern if the union values are used for critical controls.

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

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the ash library to version 3.32.2 or later, which forces the correct tag during dumping.
  • If an immediate upgrade is not possible, strip any incoming tag in user input before calling dump_to_native so that only the configured tag is used.
  • Ensure that all API endpoints accepting union values are authenticated and authorise the caller before persisting data, and review custom union implementations for proper tag handling.

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

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

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

Type Values Removed Values Added
Description Improper Validation of Specified Type of Input vulnerability in ash-project ash lets an attacker confuse the stored type tag of an Ash.Type.Union value that uses storage: :map_with_tag, bypassing that member's validation and any tag-based authorization. For a union with storage: :map_with_tag, each member is identified in storage by a configured tag and tag_value. Ash.Type.Union.dump_to_native/2 (lib/ash/type/union.ex) did not force the configured tag when writing the value, so a tag carried in the submitted value was persisted verbatim. An attacker can therefore store a value whose data belongs to one member but whose tag names a different member. On read the value is re-selected by its tag and treated as the incompatible member (a type confusion), bypassing the real member's constraints and any logic or policy that branches on the union tag. The fix drops any incoming tag and forces the configured tag value on dump. This issue affects ash: from 2.14.18 before 3.32.2.
Title Ash.Type.Union with :map_with_tag does not force the tag on dump, enabling tag confusion
First Time appeared Ash-project
Ash-project ash
Weaknesses CWE-1287
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:33:03.442Z

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

Link: CVE-2026-82741

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

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

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

Link: CVE-2026-82741

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

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

Weaknesses
  • CWE-1287

    Improper Validation of Specified Type of Input