Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconIdentify target static-price EVM payment endpoint
-
DeliverySearch public block explorer for historical transfer matching token/recipient/amount
-
ExploitSubmit found transaction hash as payment credential
-
InstallMPP.Methods.EVM.verify/2 validates on-chain transfer parameters
-
C2Fresh challenge.id bypasses dedup check
-
ExecuteObtain paid resource without payment
-
ImpactRepeat indefinitely with same hash
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Replay attack prevention
|
| Exploitation Conditions | Exploitation requires that the target application uses MPP.Methods.EVM for payment verification and operates a static-price route - meaning the charge token, recipient address, and amount are fixed or predictable across requests. The attacker must locate a historical on-chain transfer to the service's wallet address matching those exact parameters; because all Ethereum transactions are publicly visible on block explorers, this requires no special access or interception capability. The application must NOT have configured the 'store' dedup option introduced in 0.6.3 (the option was absent in affected versions). Dynamic pricing - where the charge amount varies per session - significantly limits exploitation because historical transfers are less likely to match, though does not eliminate it if an attacker can influence or predict the price. Exploitation is fully unauthenticated and network-accessible. No user interaction is required. |
| Impact | The CVSS 4.0 score of 8.7 (AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N) accurately reflects the ease of exploitation: no authentication, no complexity, and full network accessibility. VI:H captures the financial integrity impact - attackers obtain paid resources without payment. No EPSS score is available in the provided data, and there is no CISA KEV listing, meaning active exploitation is unconfirmed. Despite the lack of confirmed exploitation, real-world risk is elevated because the attack surface is uniquely favorable: Ethereum transactions are permanently and publicly visible on block explorers, meaning an attacker does not need to intercept traffic or compromise any system to obtain a valid transaction hash. The attack is likely automatable against static-price routes. Dynamic pricing partially constrains but does not eliminate risk. No conflicting signals exist between the CVSS vector and the description; the network vector and lack of privilege requirements are consistent with how the EVM verify endpoint is called. |
| Exploit ScenarioDerived | An attacker queries a public block explorer such as Etherscan for historical ERC-20 or native ETH transfers to the target service's wallet address matching its advertised static price, obtaining a valid on-chain transaction hash at zero cost. The attacker submits that hash as the payment credential to the mpp-protected HTTP endpoint, which calls MPP.Methods.EVM.verify/2; the library confirms the on-chain transfer details match the charge parameters and issues a new challenge.id each request, bypassing deduplication. The attacker repeats this submission indefinitely, gaining unlimited access to paid resources using a single historical payment they did not originate. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 19, 2026
Replay of settled EVM blockchain transaction hashes against ZenHive mpp versions 0.3.0-0.6.2 allows unauthenticated remote attackers to obtain paid resources at no cost. MPP.Methods.EVM.verify/2 validates payment by matching a submitted transaction hash against on-chain token/recipient/amount fields but neither binds the proof to a specific challenge nor records prior use; because MPP.Plug regenerates challenge.id on every 402 response, any historical on-chain transfer visible on a public block explorer can satisfy an unlimited number of subsequent payment challenges on a static-price route. No public exploit code has been identified at time of analysis and no CISA KEV listing exists, though the attack prerequisites are trivially met given the public nature of blockchain transaction data.
RemediationAI
Upgrade mpp to version 0.6.3 or later, which introduces transaction-hash deduplication via a new optional but strongly recommended 'store' configuration key in MPP.Methods.EVM. The patch commit ecc038088b1cda09ad8a84acc6cc112addb4a68f (https://github.com/ZenHive/mpp/commit/ecc038088b1cda09ad8a84acc6cc112addb4a68f) adds check_hash_unused and commit_hash_used pipeline steps; configure 'store' to MPP.Tempo.ConCacheStore or any module implementing MPP.Tempo.Store (get/1, put/2) on all EVM payment routes. The store TTL must be at least 2× the challenge expires_in to prevent a hash from being evicted and replayed while its challenge window is still valid. A documented residual limitation remains even after patching: on first presentation, any unrelated on-chain transfer that happens to match the charge's token/recipient/amount parameters is accepted, because the hash carries no on-chain binding to a specific challenge; full per-challenge attribution requires the EIP-3009 authorization path (nonce = keccak256(challengeId ‖ realm)), tracked separately in the vendor roadmap. Until the EIP-3009 path is available, prefer dynamic pricing or per-session recipient addresses to reduce the probability of an unrelated transfer colliding with a charge. Full advisory: https://github.com/ZenHive/mpp/security/advisories/GHSA-vp5h-xh25-44wf.
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
mpp (cpe:2.3:a:zenhive:mpp) is an Elixir Hex library implementing HTTP 402 Payment Required monetization flows for Ethereum-compatible (EVM) networks. The vulnerable component, MPP.Methods.EVM (lib/mpp/methods/evm.ex), retrieves a transaction receipt by hash from an RPC endpoint and checks that the on-chain transfer matches the charge's token contract, recipient address, and amount for ERC-20 transfers, or recipient and ETH value for native transfers. CWE-294 (Authentication Bypass by Capture-replay) applies because the verification logic contains no nonce, timestamp binding, or single-use enforcement tied to a specific challenge: the MPP.Plug deduplication store keys on challenge.id, but a new challenge.id is generated for every 402 response, so a replayed transaction hash always arrives in a fresh dedup context. The fix introduces a configurable MPP.Tempo.Store-backed dedup layer that records each transaction hash as used after successful verification and rejects subsequent presentations of the same hash, with atomic check_and_mark support to close the check-then-commit race window.
Know when Mpp 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:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
Network-accessible with no authentication or user interaction required; integrity impact is high (financial bypass via replay), with no confidentiality or availability impact and no scope change.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
Authentication Bypass by Capture-replay in ZenHive mpp allows an unauthenticated remote client to obtain paid resources by resubmitting one settled on-chain transfer.
MPP.Methods.EVM.verify/2 accepts a transaction-hash credential and matches a transfer purely on token, to and amount (ERC-20) or to and value (native). It binds the proof neither to the challenge being verified nor to any record of prior use, and the generic MPP.Plug dedup store keys on challenge.id, which is regenerated for every 402 response. On a static-price route, a single historical transfer matching the charge therefore satisfies an unbounded number of later charges, including transfers an attacker can read off a public block explorer.
This issue affects mpp: from 0.3.0 before 0.6.3.
Executive ViewAI
ZenHive multi-party payment (MPP) protocol versions 0.3.0-0.6.2 contain a transaction replay vulnerability enabling unauthenticated attackers to obtain paid resources without payment by reusing legitimate blockchain transactions. This directly impacts revenue, service integrity, and customer trust for any organization operating affected MPP instances. Organizations using these versions face immediate financial risk and should prioritize patching.
Apply vendor patch.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Missing validation of the EIP-7702 aa_authorization_list field in ZenHive mpp's Tempo payment sponsorship module allows
Gas-cost inflation and unauthorized access key provisioning in ZenHive mpp (versions 0.2.0 through 0.15.x) allows any un
Concurrent sponsored-payment flooding in ZenHive mpp (versions 0.2.0 through 0.12.0) allows an unauthenticated remote cl
Economic resource exhaustion in the ZenHive mpp Elixir library (versions 0.2.0 through 0.5.x) lets an unauthenticated re
Fee-payer wallet draining in ZenHive mpp (Elixir) 0.2.0-0.5.x lets an unauthenticated remote client empty the sponsor's
Capture-replay authentication bypass in ZenHive mpp versions 0.6.1-0.6.3 allows unauthenticated network attackers to cla
Wallet-draining denial of service in ZenHive mpp (Elixir library) versions 0.2.0 through 0.5.x affects deployments confi
Replay of a captured Tempo subscription credential in ZenHive mpp 0.14.0 through 0.16.1 lets an attacker who already hol
ZenHive mpp versions 0.14.0 through 0.16.1 fail to charge clients that hold an open payment channel, allowing an authent
Duplicate-submission gate bypass in the Tempo payment method of ZenHive mpp (versions 0.2.0 through 0.16.1) lets an unau
ZenHive mpp (MPP.Plug payment middleware for Elixir/Phoenix) versions 0.1.0 through 0.16.1 can allow a shared HTTP cache
Payment-replay protection in ZenHive mpp's Tempo hash-credential path is defeated by a TOCTOU race condition, allowing a
EUVD-2026-62594
GHSA-vrg5-xm7q-qcjh
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB