Loop with Unreachable Exit Condition (Infinite Loop) vulnerability in ash-project ash_ai allows an attacker who can influence a model's output to hang the tool loop and drive unbounded, repeated model requests.
AshAi.ToolLoop classifies a model response of :toolcalls, then filters the calls through normalizetoolcalls/2 and unprocessedtoolcalls/2. Both can empty the list: a call missing a valid name, or one reusing a toolcallid that already has a result in history, is dropped. With an empty list the loop appended nothing and recursed with a byte-identical message list, so the conversation never advanced and the same request was re-sent every iteration. Under the supported maxiterations: :infinity this never terminated; otherwise it exhausted the full budget. Prompt-injected content can make the model re-emit a spent toolcallid. The fix treats an empty post-filter list as terminal.
This issue affects ash_ai: from 0.6.0 before 1.0.0.
{
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/82xxx/CVE-2026-82579.json",
"unresolved_ranges": [
{
"source": "AFFECTED_FIELD",
"extracted_events": [
{
"introduced": "bc2122f78fca6c11d8ec2b9ac53148ec17476460"
},
{
"fixed": "53325fdab90afab628c6a53232ef2a9001580bd9"
}
]
}
],
"cna_assigner": "EEF",
"cwe_ids": [
"CWE-835"
]
}