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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
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
Lifecycle Timeline
3DescriptionCVE.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.
AnalysisAI
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.
Technical ContextAI
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:*.
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.
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
Capture-replay authentication bypass in ZenHive mpp versions 0.6.1-0.6.3 allows unauthenticated network attackers to cla
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
Payment-replay protection in ZenHive mpp's Tempo hash-credential path is defeated by a TOCTOU race condition, allowing a
Same technique Denial Of Service
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-45160
GHSA-vp7w-82cm-hj3h