{"affected":[{"package":{"ecosystem":"Hex","name":"ash_typescript","purl":"pkg:hex/ash_typescript"},"ranges":[{"events":[{"introduced":"0.11.0"},{"fixed":"0.18.0"}],"type":"SEMVER"}],"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"]},{"ranges":[{"events":[{"introduced":"9cade7661a01b6e4d940386f482f48d148dbb1e6"},{"fixed":"aa7f9f1967b0bec806ac1156142267e805d70a55"}],"repo":"https://github.com/ash-project/ash_typescript","type":"GIT"}]}],"aliases":["GHSA-6929-rjmh-4x62","CVE-2026-82730"],"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"}],"database_specific":{"capec_ids":["CAPEC-122"],"cpe_ids":["cpe:2.3:a:ash-project:ash_typescript:*:*:*:*:*:*:*:*"],"cwe_ids":["CWE-863"]},"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## Configuration\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.","id":"EEF-CVE-2026-82730","modified":"2026-09-01T02:09:02.610617Z","published":"2026-09-01T02:09:01.851Z","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"}],"related":[],"schema_version":"1.7.3","severity":[{"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","type":"CVSS_V4"}],"summary":"Authorization-redacted field values disclosed through AshTypescript result normalization","upstream":[]}