Summary
CVE-2026-82730 is an incorrect authorization vulnerability in ash_typescript, the TypeScript RPC/type-generation library for the Elixir Ash Framework. Attackers can retrieve attribute values that Ash field policies were explicitly configured to deny, because the RPC result-serialization path fails to strip an internal "forbidden field" marker before returning data to the caller. The issue carries a CVSS v4.0 base score of 8.2 (High) due to a high-confidentiality impact reachable over the network without authentication or user interaction.
Technical details
- Root cause: When Ash’s field policies deny access to an attribute, Ash replaces the value with an
%Ash.ForbiddenField{}struct that still internally retains the real value in anoriginal_valuefield. Thenormalize_primitive/1function inlib/ash_typescript/rpc/result_processor.exhad no dedicated clause for this struct type, so it fell through to a generic struct-handling branch that calledMap.from_struct/1and serialized all of the struct’s keys — includingoriginal_value— into the JSON RPC response. - Trigger conditions: An application must expose AshTypescript-generated RPC endpoints over HTTP and rely on Ash field policies to hide attribute values (including on embedded resources) rather than removing them from the response entirely.
- Attack vector: Network — any RPC caller permitted to invoke the affected endpoint, including unauthorized or low-privilege callers, can obtain field values they should not be able to see, since no additional privileges or user interaction are required.
- Impact: High confidentiality impact (disclosure of policy-protected attribute values); no direct impact on integrity or availability.
Affected software
- ash_typescript (ash-project) versions >= 0.11.0 and < 0.18.0
- Any deployment built from commits prior to the fix commit
aa7f9f1967b0bec806ac1156142267e805d70a55
Severity
- CVSS v4.0 Base Score: 8.2 (High)
- Vector:
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Mitigation and recommended actions
- Immediate: Upgrade
ash_typescriptto version 0.18.0 or later, which adds explicitnormalize_primitive/1clauses that returnnilforAsh.ForbiddenFieldandAsh.NotLoadedvalues instead of serializing them. - If immediate patching is not possible:
- Audit RPC endpoints generated by ash_typescript that expose resources (especially embedded resources) protected by Ash field policies, and restrict or disable access to those endpoints until patched.
- Review server logs/response payloads for evidence of
original_valueor other unexpected struct keys appearing in RPC responses, which would indicate the marker was leaking. - Where feasible, apply an output-filtering proxy or serializer to strip any unexpected struct fields (e.g.,
original_value) from RPC JSON responses as a temporary compensating control.

