Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconReach mpp fee-payer endpoint over network
-
DeliverySubmit signed transferWithMemo with low gas_limit
-
ExploitServer co-signs and broadcasts transaction
-
InstallEVM execution runs out of gas and reverts
-
C2Sponsor fee-payer wallet charged for burned gas
-
ExecuteRepeat requests to drain wallet
-
ImpactSponsor unable to fund legitimate payments (DoS)
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V2 - Validation and Business Logic Input size validation
|
| Exploitation Conditions | The server must be deployed as a Tempo fee payer with fee_payer: true and using the MPP.Methods.Tempo payment method on mpp versions 0.2.0 through 0.5.x; the attacker submits a validly client-signed transferWithMemo (0x76 envelope) EVM transaction with gas_limit deliberately set just below the amount required for the call to complete, which the server co-signs and broadcasts via rpc_broadcast_sync (the optimistic wait_for_confirmation = false path is also affected because its eth_call simulation omits the gas parameter). No authentication is required (PR:N) and no user interaction is needed (UI:N). Exploitation is limited to sponsor deployments only - installations not acting as fee payer, not using the Tempo method, or already on 0.6.0+ are not affected - and the attacker must be able to compute and set a gas_limit precisely below the execution threshold for the intended call (the AT:P attack requirement). |
| Impact | The vendor CVSS 4.0 vector CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N scores 8.2 (High) and is internally consistent with the description: network-reachable (AV:N), unauthenticated (PR:N), no user interaction (UI:N), a present attack requirement (AT:P - the server must be running as a Tempo fee payer and the attacker must tune gas_limit just below the execution threshold), and impact confined to availability (VA:H) with no confidentiality or integrity effect. No EPSS score was provided, and KEV status is not listed, so there is no evidence of active exploitation - treat exploitation likelihood as unquantified rather than low. There is no public exploit identified at time of analysis. The real-world priority is moderate and highly conditional: it is only a concern for the specific subset of operators who run mpp as a gas sponsor, but for those operators the economic-DoS impact is direct and cheap for the attacker, making prompt patching worthwhile. The main uncertainty is the affected product's small deployment footprint, which limits aggregate risk despite the high per-instance severity. |
| Exploit ScenarioDerived | A server running mpp 0.2.0-0.5.x as a Tempo fee payer exposes its sponsored-payment endpoint to the network. An unauthenticated attacker crafts and signs a transferWithMemo (0x76) transaction with gas_limit set just below the amount needed to complete, submits it, and the server co-signs and broadcasts it; the transaction runs out of gas and reverts on-chain while the sponsor wallet is charged for the burned gas. Repeating this in a loop from one or more clients drains the fee-payer wallet at near-zero cost to the attacker until the server can no longer sponsor gas for legitimate users. No public exploit code is identified, but the attack requires only a standard signed EVM transaction with a deliberately low gas limit. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 17, 2026
Wallet-draining denial of service in ZenHive mpp (Elixir library) versions 0.2.0 through 0.5.x affects deployments configured as a Tempo fee payer (fee_payer: true), where the MPP.Methods.Tempo method co-signs and broadcasts a client-supplied EVM transaction without verifying the client's gas_limit is high enough to complete execution. An unauthenticated remote client can submit a signed transferWithMemo transaction with gas_limit set just below the required amount, causing an on-chain out-of-gas revert that still charges the sponsor's fee-payer wallet while the attacker pays nothing. There is no public exploit identified at time of analysis and this is not on CISA KEV, but repeated low-cost requests can exhaust the sponsor wallet and stop the server from funding gas for legitimate payment requests.
RemediationAI
Upgrade mpp to 0.6.0 or later (Vendor-released patch: 0.6.0); the fix is in commit d84e3e528db39654540c2035ea0fbdf7b950d3d1, which adds pre-broadcast simulation of the full co-signed sponsored transaction via eth_simulateV1 on both the synchronous and optimistic paths so a transaction that would revert on-chain is rejected before the sponsor commits any gas, with graceful degradation if the node lacks eth_simulateV1 (JSON-RPC -32601) and fail-closed behavior on other RPC errors; note this release also advanced the onchain_tempo dependency to ~> 0.3 for the sender-recovery and simulate-request primitives. Operators upgrading should confirm their Tempo RPC endpoint supports eth_simulateV1 to get the protection rather than the graceful-degradation fallback. If immediate patching is not possible, the effective compensating control is to disable the fee-payer role (set fee_payer: false) so the server stops sponsoring client-supplied transactions - this fully removes the attack surface but also removes the gas-abstraction feature legitimate clients rely on; alternatively, restrict access to the fee-payer endpoint to trusted/authenticated clients and rate-limit sponsorship requests to slow wallet drainage, keeping the sponsor wallet funded with only a small working balance so a drain attempt is capped and alertable. See the advisory at https://github.com/ZenHive/mpp/security/advisories/GHSA-vj8p-hp9x-gh47.
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 is an Elixir library implementing the Meta Payment Protocol (MPP) for sponsored/gas-abstracted payments on the Tempo EVM chain, where the server acts as fee payer and co-signs client-originated transactions (the 0x76 / transferWithMemo envelope) before broadcasting them via rpc_broadcast_sync. The root cause is CWE-1284 (Improper Validation of Specified Quantity in Input): the server accepts the client-specified gas_limit at face value and never checks it is sufficient to complete the intended EVM call before committing sponsor funds. In Ethereum/EVM semantics, gas consumed up to the point of an out-of-gas revert is still deducted from the transaction's fee payer, so an underspecified gas_limit burns real value from the sponsor while producing no useful state change. The optimistic path (wait_for_confirmation = false) is also exposed because its simulate_payment_call uses eth_call without a gas parameter, so the simulation cannot reproduce or catch the out-of-gas condition. Affected products per CPE are cpe:2.3:a:zenhive:mpp:*.
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:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Unauthenticated network request to a sponsor endpoint (PR:N, AV:N, AC:L) causes only availability loss via wallet drain (A:H); no data confidentiality or integrity impact, and scope stays within the vulnerable server.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
Improper Validation of Specified Quantity in Input in ZenHive mpp allows an unauthenticated remote client to drain the fee-payer wallet, resulting in denial of service for legitimate clients.
When the mpp Elixir library is configured as fee payer (fee_payer: true), the MPP.Methods.Tempo payment method co-signs and broadcasts a client-supplied EVM transaction without first validating that the client-supplied gas_limit is sufficient to complete the intended call. A malicious client can submit a signed transferWithMemo transaction with gas_limit deliberately set just below the amount required for successful execution. The server co-signs the transaction and broadcasts it via rpc_broadcast_sync. The transaction runs out of gas during EVM execution and reverts, but the fee-payer wallet is still charged for the burned gas while the client pays nothing and receives no resource. Repeated requests from one or more malicious clients drain the fee-payer wallet at near-zero cost to the attacker, ultimately preventing the server from sponsoring gas for legitimate payment requests.
The wait_for_confirmation = false (optimistic) path is also affected: it invokes simulate_payment_call via eth_call, but that simulation omits the gas parameter and therefore does not catch out-of-gas conditions.
This issue affects mpp: from 0.2.0 before 0.6.0.
Executive ViewAI
ZenHive mpp (Elixir library) versions 0.2.0 through 0.5.x contain an unauthenticated wallet-draining denial-of-service vulnerability in fee-payer configurations. Attackers can repeatedly submit low-gas transactions that fail on-chain while the sponsor wallet absorbs all fees, systematically depleting organizational funds at minimal cost to the attacker. Organizations running affected versions face direct financial losses and operational disruption until patched.
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
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
Replay of settled EVM blockchain transaction hashes against ZenHive mpp versions 0.3.0-0.6.2 allows unauthenticated remo
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
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-45160
GHSA-vp7w-82cm-hj3h
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB