{"id":"EEF-CVE-2026-82730","summary":"Authorization-redacted field values disclosed through AshTypescript result normalization","details":"## Summary\n\nIncorrect Authorization vulnerability in ash-project ash_typescript allows an unauthorized RPC caller to read attribute values that Ash field policies denied.\n\nWhen 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.\n\nThe 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.\n\nThis issue affects ash_typescript: from 0.11.0 before 0.18.0.\n\n## Configurations\n\nThe application exposes an AshTypescript RPC endpoint over HTTP and relies on Ash field policies to hide attributes on embedded resources that an action returns as a map.","aliases":["CVE-2026-82730","GHSA-6929-rjmh-4x62"],"modified":"2026-09-08T03:45:07.357477316Z","published":"2026-09-01T02:09:01.851Z","database_specific":{"cwe_ids":["CWE-863"],"capec_ids":["CAPEC-122"],"cpe_ids":["cpe:2.3:a:ash-project:ash_typescript:*:*:*:*:*:*:*:*"]},"references":[{"type":"ADVISORY","url":"https://github.com/ash-project/ash_typescript/security/advisories/GHSA-6929-rjmh-4x62"},{"type":"WEB","url":"https://cna.erlef.org/cves/CVE-2026-82730.html"},{"type":"FIX","url":"https://github.com/ash-project/ash_typescript/commit/aa7f9f1967b0bec806ac1156142267e805d70a55"},{"type":"PACKAGE","url":"https://hex.pm/packages/ash_typescript"}],"affected":[{"package":{"name":"ash_typescript","ecosystem":"Hex","purl":"pkg:hex/ash_typescript"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0.11.0"},{"fixed":"0.18.0"}]}],"versions":["0.11.0","0.11.1","0.11.2","0.11.3","0.11.4","0.11.5","0.11.6","0.12.0","0.12.1","0.13.0","0.13.1","0.13.2","0.14.0","0.14.1","0.14.2","0.14.3","0.14.4","0.15.0","0.15.1","0.15.2","0.15.3","0.16.0","0.17.0","0.17.1","0.17.2","0.17.3"],"database_specific":{"source":"https://cna.erlef.org/osv/EEF-CVE-2026-82730.json"}},{"ranges":[{"type":"GIT","repo":"https://github.com/ash-project/ash_typescript","events":[{"introduced":"9cade7661a01b6e4d940386f482f48d148dbb1e6"},{"fixed":"aa7f9f1967b0bec806ac1156142267e805d70a55"}]}],"versions":["v0.15.0","v0.15.3","v0.15.2","v0.15.1","v0.14.4","v0.14.3","v0.14.2","v0.14.1","v0.14.0","v0.13.2","v0.13.1","v0.13.0","v0.12.1","v0.12.0","v0.11.6","v0.11.5","v0.11.4","v0.11.3","v0.11.2","v0.11.1","v0.11.0"],"database_specific":{"source":"https://cna.erlef.org/osv/EEF-CVE-2026-82730.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V4","score":"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"}],"credits":[{"name":"Peter Ullrich","type":"FINDER"},{"name":"Peter Ullrich","type":"REPORTER"},{"name":"Torkild Gundersen Kjevik / Ash Project","type":"REMEDIATION_DEVELOPER"},{"name":"Jonatan Männchen / EEF","type":"COORDINATOR"}]}