{"id":"CVE-2026-82733","aliases":["EEF-CVE-2026-82733","EUVD-2026-68928","GHSA-ghhw-qh7p-55xr"],"status":"published","title":"Route handler return value echoed into AshTypescript error response","description":"Generation of Error Message Containing Sensitive Information vulnerability in ash-project ash_typescript allows an unauthenticated attacker to read internal application data from an HTTP 500 response body.\n\nWhen a typed-controller route handler returns anything other than a %Plug.Conn{}, dispatch/3 in lib/ash_typescript/typed_controller/request_handler.ex passes the value to unexpected_return/2, which interpolates inspect(value, limit: 50) directly into the response message. The limit option bounds elements per collection rather than the term as a whole, so a handler falling through with a term such as {:error, %User{}} or a changeset serialises its full field set, including hashed passwords, tokens, and tenant identifiers, into the JSON error returned to the caller.\n\nThis contradicts the module's own posture elsewhere: the rescue clause gates Exception.message/1 behind AshTypescript.typed_controller_show_raised_errors?/0 and otherwise returns a generic message, while this path is ungated and always echoes.\n\nThis issue affects ash_typescript: from 0.15.0 before 0.18.0.","severity":{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.00547,"percentile":0.46337,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-209"],"published":"2026-09-01T02:09:22Z","modified":"2026-10-28T02:30:38Z","fixes":[{"ecosystem":"Hex","package":"ash_typescript","fixed_in":["0.18.0"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Hex","package":"ash_typescript","ranges":[{"type":"SEMVER","events":[{"introduced":"0.15.0"},{"fixed":"0.18.0"}]}],"versions":["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"]}],"products":[{"vendor":"ash-project","product":"ash_typescript"}],"references":[{"url":"https://github.com/ash-project/ash_typescript/security/advisories/GHSA-ghhw-qh7p-55xr","tags":["related","vendor-advisory","exploit","advisory"]},{"url":"https://cna.erlef.org/cves/CVE-2026-82733.html","tags":["related","web"]},{"url":"https://osv.dev/vulnerability/EEF-CVE-2026-82733","tags":["related","web"]},{"url":"https://github.com/ash-project/ash_typescript/commit/dec80e29543f96e43eeece8501376562f17ac638","tags":["patch","fix"]},{"url":"https://github.com","tags":["web"]},{"url":"https://repo.hex.pm","tags":["web"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/82xxx/CVE-2026-82733.json","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-82733","tags":["advisory"]},{"url":"https://github.com/ash-project/ash_typescript","tags":["package"]},{"url":"https://hex.pm/packages/ash_typescript","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-82733","title":"Route handler return value echoed into AshTypescript error response","description":"Generation of Error Message Containing Sensitive Information vulnerability in ash-project ash_typescript allows an unauthenticated attacker to read internal application data from an HTTP 500 response body.\n\nWhen a typed-controller route handler returns anything other than a %Plug.Conn{}, dispatch/3 in lib/ash_typescript/typed_controller/request_handler.ex passes the value to unexpected_return/2, which interpolates inspect(value, limit: 50) directly into the response message. The limit option bounds elements per collection rather than the term as a whole, so a handler falling through with a term such as {:error, %User{}} or a changeset serialises its full field set, including hashed passwords, tokens, and tenant identifiers, into the JSON error returned to the caller.\n\nThis contradicts the module's own posture elsewhere: the rescue clause gates Exception.message/1 behind AshTypescript.typed_controller_show_raised_errors?/0 and otherwise returns a generic message, while this path is ungated and always echoes.\n\nThis issue affects ash_typescript: from 0.15.0 before 0.18.0.","status":"published","published":"2026-09-01T02:09:22.784Z","modified":"2026-09-01T15:12:07.507Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N","level":"medium","assessor":"cna"}],"cwes":["CWE-209"],"updated_at":"2026-11-02T13:40:46.161838Z"}],"euvd":[{"id":"EUVD-2026-68928","description":"Generation of Error Message Containing Sensitive Information vulnerability in ash-project ash_typescript allows an unauthenticated attacker to read internal application data from an HTTP 500 response body.\n\nWhen a typed-controller route handler returns anything other than a %Plug.Conn{}, dispatch/3 in lib/ash_typescript/typed_controller/request_handler.ex passes the value to unexpected_return/2, which interpolates inspect(value, limit: 50) directly into the response message. The limit option bounds elements per collection rather than the term as a whole, so a handler falling through with a term such as {:error, %User{}} or a changeset serialises its full field set, including hashed passwords, tokens, and tenant identifiers, into the JSON error returned to the caller.\n\nThis contradicts the module's own posture elsewhere: the rescue clause gates Exception.message/1 behind AshTypescript.typed_controller_show_raised_errors?/0 and otherwise returns a generic message, while this path is ungated and always echoes.\n\nThis issue affects ash_typescript: from 0.15.0 before 0.18.0.","status":"published","published":"2026-09-01T02:09:22Z","modified":"2026-09-01T15:12:07Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N","level":"medium"}],"updated_at":"2026-11-02T18:01:17.79788Z"}],"nvd":[{"id":"CVE-2026-82733","description":"Generation of Error Message Containing Sensitive Information vulnerability in ash-project ash_typescript allows an unauthenticated attacker to read internal application data from an HTTP 500 response body.\n\nWhen a typed-controller route handler returns anything other than a %Plug.Conn{}, dispatch/3 in lib/ash_typescript/typed_controller/request_handler.ex passes the value to unexpected_return/2, which interpolates inspect(value, limit: 50) directly into the response message. The limit option bounds elements per collection rather than the term as a whole, so a handler falling through with a term such as {:error, %User{}} or a changeset serialises its full field set, including hashed passwords, tokens, and tenant identifiers, into the JSON error returned to the caller.\n\nThis contradicts the module's own posture elsewhere: the rescue clause gates Exception.message/1 behind AshTypescript.typed_controller_show_raised_errors?/0 and otherwise returns a generic message, while this path is ungated and always echoes.\n\nThis issue affects ash_typescript: from 0.15.0 before 0.18.0.","status":"published","published":"2026-09-01T03:16:53.373Z","modified":"2026-09-01T21:15:00.147Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"medium","assessor":"secondary"}],"cwes":["CWE-209"],"updated_at":"2026-11-02T14:12:42.691315Z"}],"osv":[{"id":"CVE-2026-82733","title":"Route handler return value echoed into AshTypescript error response","description":"Generation of Error Message Containing Sensitive Information vulnerability in ash-project ash_typescript allows an unauthenticated attacker to read internal application data from an HTTP 500 response body.\n\nWhen a typed-controller route handler returns anything other than a %Plug.Conn{}, dispatch/3 in lib/ash_typescript/typed_controller/request_handler.ex passes the value to unexpected_return/2, which interpolates inspect(value, limit: 50) directly into the response message. The limit option bounds elements per collection rather than the term as a whole, so a handler falling through with a term such as {:error, %User{}} or a changeset serialises its full field set, including hashed passwords, tokens, and tenant identifiers, into the JSON error returned to the caller.\n\nThis contradicts the module's own posture elsewhere: the rescue clause gates Exception.message/1 behind AshTypescript.typed_controller_show_raised_errors?/0 and otherwise returns a generic message, while this path is ungated and always echoes.\n\nThis issue affects ash_typescript: from 0.15.0 before 0.18.0.","status":"published","published":"2026-09-01T02:09:22.784Z","modified":"2026-10-28T02:30:38.150330559Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N","level":"medium"}],"cwes":["CWE-209"],"updated_at":"2026-11-02T15:45:18.482949Z"},{"id":"EEF-CVE-2026-82733","title":"Route handler return value echoed into AshTypescript error response","description":"## Summary\n\nGeneration of Error Message Containing Sensitive Information vulnerability in ash-project ash_typescript allows an unauthenticated attacker to read internal application data from an HTTP 500 response body.\n\nWhen a typed-controller route handler returns anything other than a `%Plug.Conn{}`, `dispatch/3` in `lib/ash_typescript/typed_controller/request_handler.ex` passes the value to `unexpected_return/2`, which interpolates `inspect(value, limit: 50)` directly into the response message. The `limit` option bounds elements per collection rather than the term as a whole, so a handler falling through with a term such as `{:error, %User{}}` or a changeset serialises its full field set, including hashed passwords, tokens, and tenant identifiers, into the JSON error returned to the caller.\n\nThis contradicts the module's own posture elsewhere: the `rescue` clause gates `Exception.message/1` behind `AshTypescript.typed_controller_show_raised_errors?/0` and otherwise returns a generic message, while this path is ungated and always echoes.\n\nThis issue affects ash_typescript: from 0.15.0 before 0.18.0.\n\n## Configurations\n\nThe application exposes an AshTypescript typed controller over HTTP with a route handler that can return a non-`Plug.Conn` term carrying sensitive data.","status":"published","published":"2026-09-01T02:09:22.784Z","modified":"2026-09-08T03:45:10.149873053Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N","level":"medium"}],"cwes":["CWE-209"],"updated_at":"2026-11-02T15:46:33.520522Z"}]}}
