CVE-2026-82730: CWE-863 Incorrect Authorization in ash-project ash_typescript
Description
Incorrect Authorization vulnerability in ash-project ash_typescript allows an unauthorized RPC caller to read attribute values that Ash field policies denied. When a field policy denies an attribute, Ash substitutes %Ash.ForbiddenField{}, which retains the real value in original_value because embedded resources must remain writable, and hides it from Inspect rather than removing it. AshTypescript.Rpc.ResultProcessor strips these markers to nil on its template-driven paths, but normalize_primitive/1 in lib/ash_typescript/rpc/result_processor.ex had no such clause, so a marker fell through to the generic struct branch which calls Map.from_struct/1 and serializes every key, original_value included. The denied value is returned to the caller inside the marker that represents its own denial. The simplest trigger is an action returning an embedded resource as a map, which routes through normalize_resource_struct/2 with an empty template. normalize_value_for_json/1 is a public, unguarded entry point to the same path. This issue affects ash_typescript: from 0.11.0 before 0.18.0.
CVSS v4.0
Score 8.2high
Affected software
ash-project
ash_typescript
ash-project
ash_typescript
cpe:2.3:a:ash-project:ash_typescript:*:*:*:*:*:*:*:*Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
Weaknesses
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The vulnerability in ash_typescript occurs because when a field policy denies access to an attribute, Ash replaces it with a %Ash.ForbiddenField{} marker that retains the real attribute value in an internal field called original_value. While some result processing paths strip this marker to nil, the normalize_primitive/1 function in lib/ash_typescript/rpc/result_processor.ex lacks a clause to handle this marker properly. As a result, the marker is treated as a generic struct and serialized with Map.from_struct/1, exposing the original denied value to unauthorized RPC callers. This can be triggered by actions returning embedded resources as maps or by calling the public normalize_value_for_json/1 function. The affected versions are ash_typescript 0.11.0 through versions before 0.18.0.
Potential Impact
Unauthorized remote procedure call (RPC) clients can read attribute values that Ash field policies explicitly deny, potentially exposing sensitive data that should be hidden. This bypass of authorization controls compromises data confidentiality in affected versions of ash_typescript.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. No official fix or patch information is provided in the available data. Until a fix is available, avoid exposing embedded resources as maps via RPC or using unguarded entry points like normalize_value_for_json/1 that may trigger this vulnerability.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- EEF
- Date Reserved
- 2026-08-31T00:59:08.960Z
- Cvss Version
- 4.0
- State
- PUBLISHED
Threat ID: 6a963a79acd9273b491bc8c5
Added to database: 09/01/2026, 02:37:45 UTC
Last enriched: 09/07/2026, 14:51:28 UTC
Last updated: 10/14/2026, 06:48:21 UTC
Views: 79
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.