Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to AshJsonApi or AshGraphql endpoint
-
DeliverySubmit mutation with oversized or malformed vectorized field
-
ExploitTrigger embedding provider HTTP failure
-
Executionash_ai inspect()s raw error struct into changeset message
-
PersistAshJsonApi/AshGraphql serializes changeset error into API response
-
ImpactRead Authorization header and API key from response body
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Error message sanitization
MITRE ATT&CK
1 technique across 1 tactic: Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires a low-privilege authenticated session against an application endpoint that uses AshAi.Changes.Vectorize on at least one resource attribute and exposes that resource via AshJsonApi or AshGraphql (confirmed by CVSS PR:L and the description's API rendering path). The attacker must be able to trigger an embedding provider call failure, which the description confirms is reachable via oversized or malformed content in a vectorized field - no further privileged access or special system configuration is needed beyond the presence of the vulnerable library version. Limiting factors: unauthenticated callers (PR:N) cannot exploit this; applications using ash_ai without AshJsonApi or AshGraphql that handle errors internally are not affected; deployments where the embedding provider's HTTP client does not populate the error struct with request metadata (including headers) would leak less sensitive data, though the provider response body would still be exposed. |
| Impact | The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H) accurately reflects the realistic threat: low-privilege authenticated network access is sufficient, complexity is low, and the confidentiality impact is high due to API key exposure. There is no integrity or availability impact. The absence of a CISA KEV listing and the lack of a known public exploit code lower the urgency somewhat, but the exploitability here is almost trivially low-effort - any authenticated caller who can write to a vectorized field can trigger the disclosure by crafting content that causes a provider error. The CVSS 4.0 score of 7.1 is consistent with this assessment. EPSS data was not provided in the input, so exploitation probability relative to the broader CVE population cannot be quantified; that gap should be filled before finalizing patch prioritization. For organizations running AshJsonApi or AshGraphql endpoints backed by ash_ai with third-party embedding providers, the risk of provider API key leakage is concrete and should be treated as urgent, since a leaked embedding API key can enable unauthorized model usage and associated cost liability entirely separate from the application itself. |
| Exploit ScenarioDerived | An authenticated user submits a resource mutation containing an oversized or deliberately malformed field value to an AshJsonApi or AshGraphql endpoint that uses AshAi.Changes.Vectorize. The embedding provider call fails and returns a structured error including the outbound HTTP request with its Authorization header. The API response returned to the user contains the raw inspected error, including the provider API key prefixed with 'Bearer'. No exploit code repository is known at time of analysis, but this trigger path requires no specialized tooling. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAI
Credential leakage in ash_ai (versions 0.1.0 through before 1.0.0) exposes embedding provider API keys and request internals to authenticated API callers via unsanitized error messages. In AshAi.Changes.Vectorize, a failed embedding provider call caused the raw Elixir error struct - which HTTP clients commonly populate with the outbound Authorization header, request URL, and provider response body - to be passed through inspect/1 directly into a user-facing changeset error. AshJsonApi and AshGraphql serialize these changeset errors into API responses, making the full credential material readable by any caller who can trigger a provider failure. No public exploit has been identified at time of analysis, but the trigger condition (oversized or malformed vectorized content) is trivially reachable by any authenticated user of an exposed endpoint.
RemediationAI
Upgrade ash_ai to version 1.0.0 or later, which is confirmed patched via commit 088a2562e16d65f36cec178070de683636479f58 (https://github.com/ash-project/ash_ai/commit/088a2562e16d65f36cec178070de683636479f58). The fix routes the raw error struct to Logger.error/1 for server-side visibility while returning only the generic string 'An error occurred while generating embeddings' to the caller. Exact patched release version is not independently confirmed beyond the upstream commit; verify the tagged release version in the ash_ai changelog before deploying. If an immediate upgrade is not possible, a compensating control is to add an API gateway or middleware layer that strips or redacts error message bodies from AshJsonApi and AshGraphql responses before they reach callers - this trades some debuggability for containment. Additionally, rotate any embedding provider API keys that were in use during the affected version's deployment window, as keys may have already been exposed in prior error responses.
Affected VersionsENISA
Affected Packages
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 that integrates AI capabilities - including vector embedding - into the Ash Framework's resource and change pipeline. The affected component, AshAi.Changes.Vectorize, is an Ash change module that calls a configured embedding provider (e.g., OpenAI, Cohere, or a custom HTTP client) to generate vector embeddings for resource attributes. When the provider call returns an error tuple, the prior code path called Ash.Changeset.add_error/2 with a message string built via Elixir's Kernel.inspect/1 on the raw error term. CWE-209 (Generation of Error Message Containing Sensitive Information) describes exactly this antipattern: structured error objects from HTTP clients routinely include the full outbound request - including Authorization headers - alongside the response body. Because Ash surfaces changeset errors of class :invalid through AshJsonApi and AshGraphql directly into serialized API responses, the unsanitized struct becomes externally visible. CPE cpe:2.3:a:ash-project:ash_ai:*:*:*:*:*:*:*:* covers all versions from 0.1.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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Network-reachable API endpoint requires low-privilege auth to trigger; sole impact is high-confidence credential disclosure with no integrity or availability effect.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
Generation of Error Message Containing Sensitive Information vulnerability in ash-project ash_ai discloses provider request state and credentials in a user-facing validation error.
In AshAi.Changes.Vectorize, when the embedding provider call fails the change added a changeset error whose message inspected the raw error term (An error occurred while generating embeddings: #{inspect(error)}). A plain-string add_error produces an Ash.Error.Changes.InvalidChanges in the :invalid class, which AshJsonApi and AshGraphql render back to the caller. The embedding client's error term is not sanitized, so it can carry the request URL, the provider response body, and, for HTTP clients that keep the request in the error struct, the outbound Authorization header with the provider API key. Failures are attacker-reachable via oversized or malformed vectorized content. The fix logs the raw error and returns a generic message.
This issue affects ash_ai: from 0.1.0 before 1.0.0.
Technical POC Analysis
CWE-209 (Generation of Error Message Containing Sensitive Information) in AshAi.Changes.Vectorize.change/3, error branch at lib/ashai/changes/vectorize.ex:49-52 pre-patch (the diff hunk begins at old…
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Remote code execution in ash_ai (versions 0.1.0 through pre-1.0.0) allows unauthenticated network attackers to execute a
DNS-rebinding protection in AshAi.Mcp.Server (ash_ai 0.8.0-0.x) is bypassable because the default origin check trusts th
Authorization bypass in AshAi (ash_ai) versions 0.6.0 through pre-1.0.0 allows any authenticated tool caller to update o
Infinite-loop denial-of-service in ash_ai's ToolLoop component (versions 0.6.0 through <1.0.0) allows an attacker who ca
Field policy bypass in ash_ai (versions 0.1.0 through < 1.0.3) allows authenticated, low-privilege actors to read per-ac
Unfiltered exception serialization in ash_ai 0.6.0-0.x leaks internal application details - database schema, raw SQL fra
EUVD-2026-68309
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB