Skip to main content

ash_ai CVE-2026-82579

| EUVDEUVD-2026-68307 MEDIUM
Loop with Unreachable Exit Condition (Infinite Loop) (CWE-835)
2026-08-31 EEF
6.0
CVSS 4.0 · Vendor: EEF
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Craft prompt-injection payload
  2. Delivery
    Submit payload through application input
  3. Exploit
    LLM processes injected instruction
  4. Install
    Model re-emits spent tool_call_id
  5. C2
    Tool calls filter to empty list
  6. Execute
    Loop recurses with identical messages
  7. Impact
    Unbounded API calls exhaust service availability

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Loop termination conditions
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The attacker must be able to supply content that reaches the LLM model's input context - typically through user-facing text fields in an ash_ai-backed application that passes user content into the prompt. The model must then be persuaded via injected instructions to re-emit a tool_call_id already recorded in conversation history (triggering unprocessed_tool_calls/2 to drop it), or to emit a call with an unrecognized tool name (triggering normalize_tool_calls/2 to drop it), such that the combined filter yields an empty list. Exploitation is significantly more damaging when the application configures max_iterations: :infinity, which removes the only natural termination bound; a finite max_iterations value caps wasted iterations but does not prevent each triggering request from consuming the full budget. Low-privilege application access is required (PR:L per CVSS 4.0); unauthenticated anonymous exploitation is not indicated by available data. Applications that do not pass untrusted external content into LLM prompts are not practically exploitable via the prompt-injection vector.

Impact

The CVSS 4.0 score of 6.0 (AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N) reflects a moderate real-world priority. Network accessibility (AV:N) and low privilege (PR:L) lower the exploitation bar, but AT:P - specific attack requirements - is the critical limiting factor: the attacker must successfully influence the LLM's output, typically via prompt injection in user-supplied data that the model processes. This is a meaningful but non-trivial barrier; applications that pass untrusted user content directly into LLM prompts are meaningfully exposed. Availability impact is high (VA:H) with no confidentiality or integrity exposure, making service disruption and unbounded LLM API cost accrual the primary business risks rather than data breach. The vulnerability is not listed in CISA KEV and no public exploit code was identified in the input data, consistent with a newly disclosed, niche-library issue. EPSS data was not provided; given the narrow deployment footprint and the prompt-injection prerequisite, real-world exploitation probability is estimated low. Risk is most acute in deployments configured with max_iterations: :infinity that accept untrusted user input into LLM prompts.

Exploit ScenarioDerived

An attacker submits a message to an ash_ai-backed application containing prompt-injection instructions; the injected content causes the LLM to re-emit a tool_call_id already present in the session history. When unprocessed_tool_calls/2 filters out the spent ID, the resulting empty tool-call list triggers the no-progress recursion path, locking the ToolLoop worker and generating continuous, billable LLM API requests until the process is killed or an external resource limit is reached.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAI

Infinite-loop denial-of-service in ash_ai's ToolLoop component (versions 0.6.0 through <1.0.0) allows an attacker who can influence LLM model output - most practically via prompt injection - to hang the agent loop indefinitely and drive unbounded, repeated model API requests. When the LLM returns tool_call_ids that are either invalid or already present in the session history, the post-filter call list empties, yet the loop recurses with a byte-identical message state, making no forward progress and wasting unbounded API budget. No public exploit code or active exploitation has been identified at time of analysis; however, the prompt-injection attack path is well within reach of applications that ingest untrusted user content.

RemediationAI

Upgrade ash_ai to version 1.0.0 or later - the first release outside the affected range per the advisory's 'from 0.6.0 before 1.0.0' scope - which incorporates the fix from commit 53325fdab90afab628c6a53232ef2a9001580bd9 (https://github.com/ash-project/ash_ai/commit/53325fdab90afab628c6a53232ef2a9001580bd9). The patch modifies AshAi.ToolLoop to treat an empty post-filter tool-call list as a terminal condition rather than recursing. Consult the vendor advisory at https://github.com/ash-project/ash_ai/security/advisories/GHSA-rcx7-x2w5-mmc2 for any supplemental guidance. For teams unable to upgrade immediately, avoid configuring max_iterations: :infinity - setting a finite integer cap (e.g., max_iterations: 10) bounds resource exhaustion to a fixed number of wasted API calls rather than an unbounded loop, though it does not prevent the loop from consuming the full iteration budget on each triggering request. Additionally, sanitizing or strictly scoping user-supplied content that flows into LLM prompts reduces the prompt-injection surface that enables reliable exploitation.

Affected VersionsENISA

ash_ai 0.6.0 <1.0.0
ash_ai bc2122f78fca6c11d8ec2b9ac53148ec17476460 <53325fdab90afab628c6a53232ef2a9001580bd9

Affected Packages

euvd ash_ai fix: 1.0.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

ash_ai is an Elixir library integrating large language model capabilities into applications built on the Ash Framework, implementing the iterative agent tool-use pattern: the LLM may request tool executions, results are appended to the message history, and the loop continues until the model returns a final response. AshAi.ToolLoop implements this in lib/ash_ai/tool_loop.ex across two parallel code paths. CWE-835 (Loop with Unreachable Exit Condition) manifests because after classifying a response as :tool_calls, the code called normalize_tool_calls/2 - which drops calls with unrecognized names - and unprocessed_tool_calls/2 - which drops calls whose tool_call_id already has a result in history. When both filters eliminated every call, the resulting empty list was not treated as terminal: no messages were appended, and the loop recursed with a logically identical conversation state, guaranteeing the same filtered-empty outcome forever. Under max_iterations: :infinity this never terminates; under a finite budget every iteration is wasted. The fix in commit 53325fdab90afab628c6a53232ef2a9001580bd9 promotes an empty post-filter list to a terminal guard condition. The CPE cpe:2.3:a:ash-project:ash_ai:*:*:*:*:*:*:*:* scopes impact to all ash_ai releases from 0.6.0 before 1.0.0.

Know when Ash Ai gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (EEF) PRIMARY 6.0 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 5.3 MEDIUM

Network vector with high complexity due to the prompt-injection prerequisite; low privileges required; no confidentiality or integrity impact; high availability impact from the unbounded loop.

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (EEF).

CVSS VectorVendor: EEF

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

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 :tool_calls, then filters the calls through normalize_tool_calls/2 and unprocessed_tool_calls/2. Both can empty the list: a call missing a valid name, or one reusing a tool_call_id 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 max_iterations: :infinity this never terminated; otherwise it exhausted the full budget. Prompt-injected content can make the model re-emit a spent tool_call_id. The fix treats an empty post-filter list as terminal.

This issue affects ash_ai: from 0.6.0 before 1.0.0.

Threat Intelligence Overview

EPSS Score
0.3%
Top 81% exploitable
Prevalence
Rare
niche Elixir AI-integration library for Ash Framework
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy