Skip to main content

ash_typescript EUVDEUVD-2026-97336

| CVE-2026-105283 MEDIUM
Error Message Information Leak (CWE-209)
2026-10-12 EEF
6.3
CVSS 4.0 · Vendor: EEF
View

Attack ChainAIDerived

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

  1. Access
    Reach RPC endpoint unauthenticated
  2. Delivery
    Send malformed struct arg or primitive-returning action field selection
  3. Exploit
    Trigger error with no dedicated builder clause
  4. Execution
    Raw Elixir term inspected into error response
  5. Impact
    Read leaked internal terms from HTTP/channel response

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 the attacker to reach the ash_typescript RPC layer (HTTP or channel) and provoke an error for which the error builder has no dedicated clause - concretely, either (1) passing a struct-typed action argument with an invalid nested value, causing cast_map_to_struct/2 in input_formatter.ex to throw a raw Ash.Type cast error into the builder, or (2) performing field selection on a generic action that returns a primitive, causing format_field_type/1 to inspect the full Ash.Info.Manifest.Type struct into vars.returnType. No authentication is required (PR:N) and no user interaction (UI:N), but the CVSS 4.0 AT:P flag reflects a genuine limiting factor: the attacker must deliberately hit these specific unhandled pipeline-error paths rather than any generic error, since Ash exceptions take a separate, redacted path. Exploitation is further limited to applications actually exposing ash_typescript RPC actions, and disclosure is confined to internal Elixir terms - resource module names (vars.resource) are explicitly out of scope and not considered sensitive.

Impact

This is a medium-severity information disclosure flaw (CWE-209), and the available signals are internally consistent rather than conflicting. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N) confirms network-reachable, unauthenticated exploitation but with an Attack Requirement present (AT:P) - meaning the attacker must specifically provoke an error path the builder has no clause for, not trigger it trivially against any request. Impact is bounded: only VC:L (low confidentiality), with no integrity or availability impact and no scope change, so the realistic outcome is leakage of internal Elixir terms (cast errors, Ash.Info.Manifest.Type structs) in RPC error responses, not code execution or data modification. No EPSS score, no CISA KEV listing, and no public proof-of-concept are present in the provided data, so there is no public exploit identified at time of analysis. The description explicitly scopes OUT resource module names (vars.resource) as non-sensitive, which narrows the blast radius further. Net assessment: a legitimate issue worth patching for teams running affected versions, but not an urgent, mass-exploited priority - it is a disclosure-only, bounded-impact bug in a niche Elixir library, consistent with the 6.3 medium rating rather than an inflated high-CVSS/low-real-risk case.

Exploit ScenarioDerived

An unauthenticated attacker sends a crafted RPC request to an application built on ash_typescript - for example supplying a struct-typed action argument with an invalid nested value, or requesting field selection on a generic action that returns a primitive - to deliberately trigger an error path that AshTypescript.Rpc.ErrorBuilder.build_error_response/1 has no dedicated clause for. The builder then inspect/1's the raw error term (a cast error or the full Ash.Info.Manifest.Type struct) into details.error or vars.returnType without the redaction applied to Ash exceptions, leaking internal Elixir terms back in the HTTP or channel response. No public exploit code is identified at time of analysis, and the CVSS 4.0 AT:P requirement means the attacker must specifically provoke the unhandled case.

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

AnalysisAIv1 – Oct 12, 2026

Unauthenticated attackers can read internal Elixir terms from ash_typescript RPC error responses by deliberately provoking errors that the library's error builder has no dedicated clause for, affecting versions 0.1.0 through 0.19.0. Two RPC request paths trigger the leak: a struct-typed action argument carrying an invalid nested value that pushes a raw Ash.Type cast error into the builder, and field selection on a generic action returning a primitive that causes the full Ash.Info.Manifest.Type struct to be embedded into the response. The issue is a medium-severity CWE-209 information disclosure (CVSS 4.0 6.3; independent 3.1 assessment AV:N/AC:H/PR:N/UI:N/C:L), no public exploit code has been identified at time of analysis, and a vendor patch is available in ash_typescript 0.19.1.

RemediationAI

Upgrade to ash_typescript 0.19.1, the first release containing the vendor fix (Vendor-released patch: 0.19.1); the corresponding patches are the commits https://github.com/ash-project/ash_typescript/commit/4b3c65203ee78dc992d6d2e6559625c5460a01cd and https://github.com/ash-project/ash_typescript/commit/8e204ce34e24a158cf22a2dac4d53c44716c9e30, and the vendor advisory at https://github.com/ash-project/ash_typescript/security/advisories/GHSA-7gxc-w225-f7f3 documents the fix. Because the flaw leaks only through unhandled error-builder clauses, an interim compensating control is to wrap or replace the error builder so that details.error is sanitized or replaced with a generic string and an opaque errorId - the trade-off is that clients lose diagnostic detail and any client logic parsing that field will need updating. Applications that cannot patch immediately should also avoid exposing the two trigger shapes over RPC (struct-typed action arguments with nested values, and field selection on generic actions returning primitives), although that constrains legitimate API surface. Since exploitation is unauthenticated (PR:N), restricting the ash_typescript HTTP routes and Phoenix channels to trusted network segments or clients that carry their own application-level authentication is a useful defense-in-depth measure, at the cost of limiting external accessibility; note that CVSS 4.0 AT:P indicates the attacker must deliberately target these particular unhandled error paths, so generic error monitoring may not surface attempts.

Affected VersionsENISA

ash_typescript 8e204ce34e24a158cf22a2dac4d53c44716c9e30 <4b3c65203ee78dc992d6d2e6559625c5460a01cd
ash_typescript 0.1.0 <0.19.1

Affected Packages

euvd ash_typescript fix: 0.19.1

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_typescript is the TypeScript RPC code-generation layer for the Elixir Ash framework, exposing Ash actions to client applications over HTTP or Phoenix channels. The root cause is CWE-209: AshTypescript.Rpc.ErrorBuilder.build_error_response/1 in lib/ash_typescript/rpc/error_builder.ex renders any pipeline error term that matches no specific clause with inspect/1 and places the resulting string into the client-facing details.error field. Although Ash exceptions are routed through a separate path in AshTypescript.Rpc.Errors that redacts unhandled cases behind an opaque errorId, the generic fallback in the error builder has no equivalent redaction, so whatever the Elixir term carries reaches the wire. Two concrete producers feed such raw terms: cast_map_to_struct/2 in lib/ash_typescript/rpc/input_formatter.ex throws the unredacted Ash.Type cast error into the builder when a struct-typed action argument holds an invalid nested value, and format_field_type/1 inspects the entire Ash.Info.Manifest.Type struct into vars.returnType when field selection targets a generic action that returns a primitive. The CVSS 4.0 AT:P flag captures the real precondition here - only these specific unhandled pipeline-error paths leak, generic errors do not - and resource module names held in vars.resource are explicitly treated as non-sensitive and out of scope, so disclosure is bounded to internal Elixir terms rather than broader application data.

Know when Elixir 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.3 MEDIUM
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
vuln.today AI 3.7 LOW

Network-reachable and unauthenticated (AV:N/PR:N), but AC:H because the attacker must craft input to hit specific unhandled error clauses; only low confidentiality impact (C:L), no integrity or availability effect.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/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
None
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Generation of Error Message Containing Sensitive Information vulnerability in ash-project ash_typescript allows an unauthenticated attacker to read internal Elixir terms from an RPC error response by provoking an error the error builder has no dedicated clause for.

AshTypescript.Rpc.ErrorBuilder.build_error_response/1 in lib/ash_typescript/rpc/error_builder.ex renders a pipeline error term that matches no specific clause with inspect/1 and places the result in details.error of the client-facing error. Ash exceptions take a separate path in AshTypescript.Rpc.Errors where unhandled cases are redacted behind an errorId, but these fallbacks have no redaction, so whatever the term carries reaches the HTTP or channel response. Two request paths hand it such terms: a struct-typed action argument with an invalid nested value, where cast_map_to_struct/2 in lib/ash_typescript/rpc/input_formatter.ex throws the raw Ash.Type cast error into the builder, and field selection on a generic action that returns a primitive, where format_field_type/1 inspects the full Ash.Info.Manifest.Type struct into vars.returnType. Resource module names in vars.resource are not treated as sensitive and are out of scope.

This issue affects ash_typescript: from 0.1.0 before 0.19.1.

Threat Intelligence Overview

EPSS Score
0.3%
Top 77% exploitable
Prevalence
Low
niche Elixir/Ash ecosystem library, limited enterprise footprint
Data Quality
5 sources
Confidence: Medium

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· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact· derived
Medium

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Elixir

View all
CVE-2026-54451 HIGH POC
8.2 Jul 15

Unbounded recursion in the Elixir `protobuf` Hex package (versions >= 0.8.0, < 0.16.1) lets unauthenticated remote attac

CVE-2026-91187 CRITICAL
9.3 Sep 24

Improper JWT signature verification in Dashbit's nimble_zta (0.1.2 up to but not including 0.1.3) lets an unauthenticate

CVE-2026-76949 CRITICAL
9.1 Sep 17

Session-swapping authentication bypass in the Elixir library AshAuthentication (versions 4.10.0 before 4.15.0 and 5.0.0-

CVE-2026-91039 CRITICAL
9.1 Sep 17

Authentication bypass in the Elixir library ash_authentication lets an attacker who operates one federated identity-prov

CVE-2026-88952 CRITICAL
9.1 Sep 17

Account takeover in AshAuthentication (Elixir/Ash) 4.14.0 through 4.14.x and 5.0.0-rc.10 through 5.0.0-rc.13 lets unauth

CVE-2026-77866 CRITICAL
9.0 Sep 15

Server-Side Request Forgery protection bypass in the Elixir safeurl library (versions 0.1.0 and later) allows unauthenti

CVE-2026-108529 HIGH
8.7 Oct 26

Unauthenticated remote CPU exhaustion in mtrudel Bandit's HTTP/2 server (versions before 1.14.0) is achievable by holdin

CVE-2026-110499 HIGH
8.7 Oct 26

Unbounded per-connection memory and CPU growth in the Elixir Bandit HTTP/2 server (0.3.6 up to 1.14.0) lets an unauthent

CVE-2026-111101 HIGH
8.7 Oct 26

Unauthenticated remote denial of service in the Elixir HTTP server Bandit (mtrudel/bandit) from 0.1.0 before 1.14.0 lets

CVE-2026-113436 HIGH
8.7 Oct 26

Unauthenticated remote attackers can consume disproportionate server CPU on Bandit (mtrudel/bandit, Elixir/Erlang) by se

CVE-2026-104635 HIGH
8.2 Oct 09

Memory-exhaustion denial of service in the elixir-protobuf library (protobuf) from 0.8.0 onward allows an unauthenticate

CVE-2026-94201 HIGH
8.2 Oct 05

Atom table exhaustion in the Ash framework (Elixir) allows an unauthenticated remote attacker to crash a BEAM node by su

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