Skip to main content

alloy-dyn-abi CVE-2025-62370

HIGH
Uncaught Exception (CWE-248)
2025-10-15 security-advisories@github.com
7.5
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

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

  1. Access
    Reach service that hashes untrusted TypedData
  2. Exploit
    Submit malformed EIP-712 payload (empty linearized type)
  3. Execution
    Trigger uncaught panic in eip712_signing_hash()
  4. Impact
    Crash process causing denial-of-service

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Exception handling completeness
Exploitation Conditions

Exploitation requires the affected application to invoke alloy_dyn_abi::TypedData::eip712_signing_hash() (or the EIP-712 encode/resolve path) on attacker-influenced input where the primaryType resolves to an empty linearized type list - e.g., a primaryType that is a basic Solidity type or uses the enum-hack '.' syntax, so try_as_basic_solidity skips it leaving no linearized types. The practical limiting factor is reachability: the alloy-dyn-abi crate is a library, not a listening service, so AV:N only holds when a wallet, signing service, or RPC frontend deserializes untrusted EIP-712 TypedData and hashes it. Affected versions are < 0.8.26 and >= 1.0.0, < 1.4.1; no authentication, user interaction, or special runtime configuration is otherwise required, and there is no known workaround other than upgrading.

Impact

This is a genuine but bounded availability issue, not a top-tier emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, 7.5 HIGH) reflects a purely availability-impacting DoS - note C:N/I:N, so there is no confidentiality or integrity loss despite the input 'Information Disclosure' tag (which contradicts the vector and appears mislabeled). EPSS is low at 0.45% (37th percentile), consistent with there being no CISA KEV listing and no public exploit identified at time of analysis; all signals agree this is a low-likelihood, low-blast-radius issue rather than a mass-exploitation priority. The CWE-248 (uncaught exception/panic) root cause is confirmed by the vendor advisory and the one-line patch (an is_empty() guard before indexing). The real caveat is that 'AV:N / PR:N' only applies if the consuming application actually feeds attacker-controlled EIP-712 TypedData into eip712_signing_hash() over the network - the library itself is not a listening service, so true network reachability is application-dependent. Prioritize patching for services that hash untrusted typed-data (wallets, signing relays, RPC frontends); deprioritize for offline or trusted-input usage.

Exploit ScenarioDerived

An attacker sends a crafted EIP-712 TypedData payload (e.g., a primaryType that linearizes to an empty type list, such as a bare Solidity base type or empty custom type) to a network service that calls alloy_dyn_abi::TypedData::eip712_signing_hash() on untrusted input. The malformed input triggers an uncaught Rust panic, crashing the worker or process and denying service; repeated requests sustain the outage. No public exploit identified at time of analysis, though the patch's regression tests effectively document the triggering inputs.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 08, 2026

Denial of service in the Rust crate alloy-dyn-abi (part of the alloy-rs/core Ethereum library stack) allows an attacker who can supply malformed EIP-712 typed data to crash the calling process. Because the library panics inside eip712_signing_hash() instead of returning an error, any wallet, signing service, or RPC frontend that hashes attacker-influenced TypedData in versions before 0.8.26 or in the 1.x line before 1.4.1 can be repeatedly knocked offline; unauthenticated remote triggering is possible per the CVSS vector (AV:N/AC:L/PR:N/UI:N), though reachability depends on the application actually deserializing and hashing untrusted TypedData. Exploitation is bounded and not an emergency: EPSS is only 0.45% (37th percentile), there is no CISA KEV confirmation, and no public exploit code identified at time of analysis - the primary fix is simply upgrading.

RemediationAI

Vendor-released patch: upgrade alloy-dyn-abi to 0.8.26 if you are on the 0.8.x line, or to 1.4.1 for the 1.x line (the fix is the is_empty() guard in resolver.rs returning Error::missing_type). Run cargo update -p alloy-dyn-abi and verify the locked version; since the flaw lives in a library, patching the direct dependency also fixes downstream crates such as alloy. The vendor states there is no known workaround, so upgrading is the only complete fix; however, where immediate upgrades are impractical, add application-layer compensating controls: validate or reject incoming EIP-712 primaryType values that are bare Solidity primitives (bool, uint256, etc.) or contain the '.' enum-hack syntax before calling eip712_signing_hash(), and wrap hashing calls in a panic-catching boundary (e.g. std::panic::catch_unwind with panic=unwind) so a panic degrades to a returned error instead of killing the worker - the trade-off is added parsing complexity and a maintenance burden that duplicates upstream validation, plus catch_unwind does not work under panic=abort. External auto-restart supervision (systemd, Kubernetes liveness probes) only partially mitigates because repeated attacks can restart-loop the service, so combine it with rate limiting at the API edge and request-size/schema limits on TypedData payloads. Details are in GHSA-pgp9-98jm-wwq2, RUSTSEC-2025-0073, and commit 7823e9af8c20e9fcfb5360f5eafd891c457ebccf.

Affected Packages

cargo alloy-dyn-abi fix: 0.8.26, 1.4.1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in cargo

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

Technical ContextAI · show details

alloy-dyn-abi is the dynamic ABI / EIP-712 implementation underpinning the alloy Rust Ethereum ecosystem. EIP-712 defines a canonical way to hash and sign typed structured data; the crate parses a JSON TypedData document (types, primaryType, domain, message) and computes the signing hash via eip712_signing_hash(). Internally a Resolver linearizes the referenced struct types, and the bug follows from CWE-248 (uncaught exception): when primaryType is a basic Solidity type (e.g. bool, uint256) or uses the enum-hack '.' syntax such as 'T.' or 'T.U', the try_as_basic_solidity path skips resolution and leaves the linearized type list empty. The code then indexed the first element of that empty list without checking, producing an uncaught panic rather than a returned Err. The upstream commit 7823e9af8c20e9fcfb5360f5eafd891c457ebccf fixes this in crates/dyn-abi/src/eip712/resolver.rs by adding an is_empty() guard that returns Error::missing_type(name), and adds unit tests covering valid, invalid-but-parsing, and unparseable primary types. Note the supplied tag of "Information Disclosure" is not supported by the CVSS vector, which reflects a pure availability impact (C:N/I:N/A:H); treat the CWE-248 uncaught-panic root cause as the accurate classification.

Know when Rust 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 (github) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

Malformed, unauthenticated input to the hashing path triggers a panic with no privileges or interaction (PR:N/UI:N/AC:L); impact is availability-only (A:H, C:N/I:N) when untrusted TypedData reaches the API.

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

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

DescriptionCVE.org

Alloy Core libraries at the root of the Rust Ethereum ecosystem. Prior to 0.8.26 and 1.4.1, an uncaught panic triggered by malformed input to alloy_dyn_abi::TypedData could lead to a denial-of-service (DoS) via eip712_signing_hash(). Software with high availability requirements such as network services may be particularly impacted. If in use, external auto-restarting mechanisms can partially mitigate the availability issues unless repeated attacks are possible. The vulnerability was patched by adding a check to ensure the element is not empty before accessing its first element; an error is returned if it is empty. The fix is included in version v1.4.1 and backported to v0.8.26.

Executive ViewAI

Why It Matters

The alloy-dyn-abi library, a component of the alloy-rs/core Ethereum development stack, contains a high-severity denial-of-service vulnerability that can crash applications processing malformed EIP-712 typed data. This affects wallets, signing services, and RPC frontends that handle untrusted TypedData, potentially causing repeated outages if exploited by unauthenticated remote attackers. However, exploitation is currently bounded with no public exploit identified at time of analysis and a vendor patch is available, making immediate upgrade the primary mitigation.

Business Impact: Medium
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 63% exploitable
Prevalence
Low
foundational but niche Rust Ethereum/blockchain library, no general enterprise footprint
Data Quality
4 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 HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Medium

Priority Score

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

More in Rust

View all
CVE-2024-3566 CRITICAL POC
9.8 Apr 10

Command injection via Windows CreateProcess argument parsing affects multiple language runtimes and tooling (Node.js, PH

CVE-2021-31162 CRITICAL POC
9.8 Apr 14

In the standard library in Rust before 1.52.0, a double free can occur in the Vec::from_iter function if freeing the ele

CVE-2021-28879 CRITICAL POC
9.8 Apr 11

In the standard library in Rust before 1.52.0, the Zip implementation can report an incorrect size due to an integer ove

CVE-2026-58491 CRITICAL POC
9.3 Sep 21

Stored cross-site scripting and open redirect in Warpgate's SSO endpoints (versions prior to 0.25.5) allow an unauthenti

CVE-2021-29922 CRITICAL POC
9.1 Aug 07

library/std/src/net/parser.rs in Rust before 1.53.0 does not properly consider extraneous zero characters at the beginni

CVE-2026-77620 HIGH POC
8.7 Sep 22

Denial of service in the Vector observability pipeline's `logstash` source (versions 0.15.0 through 0.56.x) allows a rem

CVE-2019-12083 HIGH POC
8.1 May 13

The Rust Programming Language Standard Library 1.34.x before 1.34.2 contains a stabilized method which, if overridden, c

CVE-2021-28878 HIGH POC
7.5 Apr 11

In the standard library in Rust before 1.52.0, the Zip implementation calls __iterator_get_unchecked() more than once fo

CVE-2021-28875 HIGH POC
7.5 Apr 11

In the standard library in Rust before 1.50.0, read_to_end() does not validate the return value from Read in an unsafe c

CVE-2019-16760 HIGH POC
7.5 Sep 30

Cargo prior to Rust 1.26.0 may download the wrong dependency if your package.toml file uses the `package` configuration

CVE-2024-24576 CRITICAL POC
10.0 Apr 09

Rust is a programming language. Rated critical severity (CVSS 10.0), this vulnerability is remotely exploitable, no auth

CVE-2018-1000810 CRITICAL
9.8 Oct 08

The Rust Programming Language Standard Library version 1.29.0, 1.28.0, 1.27.2, 1.27.1, 127.0, 126.2, 126.1, 126.0 contai

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