{"id":"CVE-2026-119613","kind":"vulnerability","aliases":["CVE-2026-119613"],"related":[],"title":"ash_ai: tool errors leak internal module names and data values","description":"Generation of Error Message Containing Sensitive Information vulnerability in ash-project ash_ai allows a caller of an AshAi tool to read internal error details, including module names and data values, by making a tool call fail.\n\nAshAi.ToToolError gained an implementation for Ash.Error.Unknown.UnknownError that returns the error's error field as is, and AshAi.Tool.Errors.format/1 sends that text to MCP clients (tool calls and resource reads in AshAi.Mcp.Server) and to the model in AshAi.ToolLoop. Ash stores the full Exception.format/2 output of a raised exception, or inspect/1 of a bare {:error, term} return, in that field. A tool result that cannot be JSON-encoded raises a Protocol.UndefinedError whose text includes the inspected value, which can be a whole record with fields the tool never returns. None of these errors were logged. The fix logs them under an error id and returns only that id to the caller.\n\nThis issue affects ash_ai: from 1.5.0 before 1.5.1.","summary":"When an AshAi tool call fails, ash_ai returns the raw internal error text to the caller, including module names and data values. A caller of an AshAi tool can read those internals just by triggering a failure.","severity":"medium","cvss":5.3,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["ash","ash-ai","elixir","mcp","package"],"not_affected_if":["no-ash-ai-tools-exposed","version-1.5.1-or-later"],"how_to_check":"- Check the `ash_ai` version in `mix.lock` or `mix.exs`; affected versions are from `1.5.0` before `1.5.1`.\n- Look for AshAi tools or the MCP server (`AshAi.Mcp.Server`) exposed to callers outside the trusted team.","fix":"- `ash_ai` `1.5.1` (the fix logs errors under an error id and returns only that id to the caller).","status":"open","published_at":"2026-11-09T13:17:06+00:00","first_seen_at":"2026-11-09T13:26:50+00:00","triaged_at":"2026-11-09T13:27:46+00:00","updated_at":"2026-11-09T13:27:46+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-09T13:27:46Z","model":"claude-haiku-5-5","output":{"fix":"- `ash_ai` `1.5.1` (the fix logs errors under an error id and returns only that id to the caller).","reach":"network","title":"ash_ai: tool errors leak internal module names and data values","impact":"low","summary":"When an AshAi tool call fails, ash_ai returns the raw internal error text to the caller, including module names and data values. A caller of an AshAi tool can read those internals just by triggering a failure.","audience":"developers","category":"package","nicknames":[],"who_cares":["elixir","ash","ash-ai","mcp"],"confidence":0.7,"fix_status":"available","needs_auth":"unknown","worst_case":"callers read internal module names and record data from errors","analyst_note":"Wait for NVD and the linked patch to confirm if auth is required to call tools.\n","how_to_check":"- Check the `ash_ai` version in `mix.lock` or `mix.exs`; affected versions are from `1.5.0` before `1.5.1`.\n- Look for AshAi tools or the MCP server (`AshAi.Mcp.Server`) exposed to callers outside the trusted team.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["version-1.5.1-or-later","no-ash-ai-tools-exposed"],"who_is_affected":"Applications that depend on ash_ai from 1.5.0 before 1.5.1 and expose AshAi tools or the MCP server to callers, including AI models that call those tools. Exposure depends on whether untrusted callers can trigger tool failures, which the sources do not detail further.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000773,"input_tokens":4843,"output_tokens":577,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-119613':14A,17A '-2026':13A,16A '/1':119C '/2':145C '1.5.0':220C '1.5.1':222C 'affect':216C 'ai':2A,21B,32B,76C,218C 'allow':77C 'ash':1A,18B,20B,31B,73C,75C,139C,217C 'ash-ai':19B 'ash-project':72C 'ash.error.unknown.unknownerror':106C 'ashai':27B,52B,82C 'ashai.mcp.server':132C 'ashai.tool.errors.format':118C 'ashai.tool.errors.format/1':117C 'ashai.toolloop':138C 'ashai.totoolerror':101C 'bare':155C 'call':29B,99C,127C 'caller':41B,49B,79C,213C 'cannot':166C 'client':125C 'contain':67C 'cve':12A,15A 'data':10A,46B,93C 'detail':88C 'elixir':22B 'encod':170C 'error':4A,37B,65C,87C,110C,112C,156C,195C,204C 'except':150C 'exception.format':144C 'exception.format/2':143C 'fail':30B,100C 'failur':62B 'field':113C,161C,187C 'fix':199C 'full':142C 'gain':102C 'generat':63C 'id':205C,210C 'implement':104C 'includ':42B,89C,176C 'inform':69C 'inspect':178C 'inspect/1':152C 'intern':6A,36B,57B,86C 'issu':215C 'json':169C 'json-encod':168C 'leak':5A 'log':197C,200C 'make':96C 'mcp':23B,124C 'messag':66C 'model':136C 'modul':7A,43B,90C 'name':8A,44B,91C 'never':190C 'none':192C 'output':146C 'packag':24B 'project':74C 'protocol.undefinederror':173C 'rais':149C,171C 'raw':35B 'read':55B,85C,130C 'record':185C 'resourc':129C 'result':164C 'return':33B,108C,158C,191C,207C 'send':120C 'sensit':68C 'store':140C 'term':157C 'text':38B,122C,175C 'tool':3A,28B,53B,83C,98C,126C,163C,189C 'trigger':60B 'valu':11A,47B,94C,179C 'vulner':70C 'whole':184C 'whose':174C","nicknames":[],"mitigations":[],"who_affected":"Applications that depend on ash_ai from 1.5.0 before 1.5.1 and expose AshAi tools or the MCP server to callers, including AI models that call those tools. Exposure depends on whether untrusted callers can trigger tool failures, which the sources do not detail further.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["ash","ashai","elixir","mcp","medium","package"],"campaign_type":null,"search_a":"'-119613':14A,17A '-2026':13A,16A 'ai':2A 'ash':1A 'cve':12A,15A 'data':10A 'error':4A 'intern':6A 'leak':5A 'modul':7A 'name':8A 'tool':3A 'valu':11A","search_b":"'ai':21B,32B 'ash':18B,20B,31B 'ash-ai':19B 'ashai':27B,52B 'call':29B 'caller':41B,49B 'data':46B 'elixir':22B 'error':37B 'fail':30B 'failur':62B 'includ':42B 'intern':36B,57B 'mcp':23B 'modul':43B 'name':44B 'packag':24B 'raw':35B 'read':55B 'return':33B 'text':38B 'tool':28B,53B 'trigger':60B 'valu':47B","search_c":"'/1':119C '/2':145C '1.5.0':220C '1.5.1':222C 'affect':216C 'ai':76C,218C 'allow':77C 'ash':73C,75C,139C,217C 'ash-project':72C 'ash.error.unknown.unknownerror':106C 'ashai':82C 'ashai.mcp.server':132C 'ashai.tool.errors.format':118C 'ashai.tool.errors.format/1':117C 'ashai.toolloop':138C 'ashai.totoolerror':101C 'bare':155C 'call':99C,127C 'caller':79C,213C 'cannot':166C 'client':125C 'contain':67C 'data':93C 'detail':88C 'encod':170C 'error':65C,87C,110C,112C,156C,195C,204C 'except':150C 'exception.format':144C 'exception.format/2':143C 'fail':100C 'field':113C,161C,187C 'fix':199C 'full':142C 'gain':102C 'generat':63C 'id':205C,210C 'implement':104C 'includ':89C,176C 'inform':69C 'inspect':178C 'inspect/1':152C 'intern':86C 'issu':215C 'json':169C 'json-encod':168C 'log':197C,200C 'make':96C 'mcp':124C 'messag':66C 'model':136C 'modul':90C 'name':91C 'never':190C 'none':192C 'output':146C 'project':74C 'protocol.undefinederror':173C 'rais':149C,171C 'read':85C,130C 'record':185C 'resourc':129C 'result':164C 'return':108C,158C,191C,207C 'send':120C 'sensit':68C 'store':140C 'term':157C 'text':122C,175C 'tool':83C,98C,126C,163C,189C 'valu':94C,179C 'vulner':70C 'whole':184C 'whose':174C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-07T22:12:30+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/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","cvss_by":"6b3ad84c-e1a6-4bf7-a703-f496b71e49db","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-119613","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-119613","severity":null,"published_at":"2026-11-09T13:17:06+00:00","modified_at":"2026-11-09T13:17:06+00:00","first_seen_at":"2026-11-09T13:26:50+00:00","fetched_at":"2026-11-09T13:26:50+00:00","note":null}],"documents":[{"id":107553,"url":"https://github.com/ash-project/ash_ai/commit/af7987769d78ed070c8a9f6e6ee542d91744eae6","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":107554,"url":"https://github.com/ash-project/ash_ai/commit/fbad04e9620ef70603f4e67e03f15092f58578f6","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":107555,"url":"https://github.com/ash-project/ash_ai/security/advisories/GHSA-vhmw-fwrr-r6c6","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-11-07T22:12:30+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}