GHSA-vv77-66rf-pm86High▾ Twilightmpp vulnerable to Gas Draining with no limit
▾ Twilight zone — High severity, or a signal on a lesser flaw
impact 41.3 · likelihood 0 · exploitation 0
Need a working PoC? Pro members can cast a request and our team develops one — it lands right here.
When the server acts as the fee_payer, the mpp Elixir 0.4.0 does not validate gas_limit, max_fee_per_gas and max_priority_fee_per_gas before cosigning the client's fee-payer transaction. A malicious client embeds arbitrarily large max_fee_per_gas and max_priority_fee_per_gas values in the signed envelope. The server cosigns and broadcasts — paying those inflated gas costs from its own wallet based on the effective_gas_price calculated from the high max_fee_per_gas and max_priority_fee_per_gas set by the client.
Vulnerable function: cosign_fee_payer/3 in transaction.ex around lines 229–262.
The PoC is provided below. It is configured to reproduce the attack on Tempo Moderate testnet within a Docker environment. Download the PoC and run:
unzip mpp_elixir_PoC.zip
cd mpp_elixir
docker build -t mpp-elixir-gasdrain .
docker run --rm mpp-elixir-gasdrain
There are more details in mpp_elixir/README.md
By draining the server's wallet, an attacker causes direct financial loss to the organization. Furthermore, if the server's funds are drained completely, legitimate clients will have their requests fail, as the server can no longer fund future transactions, effectively creating a Denial of Service (DoS) attack.
mpp >= 0.2.0, < 0.6.0Upgrade to a patched release:
mpp 0.6.0Connected by shared product, vendor, weakness, or advisory.
GHSA-qpxh-ff8m-c62vMediummpp vulnerable to Gas Draining with access list
GHSA-vj8p-hp9x-gh47Highmpp vulnerable to Gas Draining with low gas limit
CVE-2026-87119High· 8.2Authentication Bypass by Capture-replay in ZenHive mpp allows an attacker holding a captured subscription activation credential to charge the payer repeatedly. The payer signs a Tempo KeyAuthorization over the chain id, key type, key id…
CVE-2026-89420High· 7.1Improper Validation of Specified Quantity in Input in ZenHive mpp allows a client holding an open payment channel to obtain paid resources without being charged. MPP.Session.Actions.accept_voucher/3 in lib/mpp/session/actions.ex treats …
CVE-2026-88255Medium· 6.3Improper Validation of Unsafe Equivalence in Input in ZenHive mpp allows an unauthenticated remote client to pass the Tempo duplicate-submission gate twice with one signed transaction. MPP.Methods.Tempo reserves the pre-broadcast dedup …
CVE-2026-89186Medium· 6.3Use of Cache Containing Sensitive Information in ZenHive mpp allows a shared HTTP cache to store a paid response and serve it to clients that never paid. MPP.Plug.verify_credential in lib/mpp/plug.ex sets payment-receipt and cache-contr…