Patch Forecast
Yellow warning
Plan into this sprint.

GHSA-vj8p-hp9x-gh47

mpp vulnerable to Gas Draining with low gas limit

Risk score
58/100
CVSS
8.8 v4.0
Published
25 Sep 2026

Open in the live forecast Today's forecast

What to know

What it is
When the server acts as the fee payer, mpp Elixir 0.4.0 (ZenHive/mpp) does not validate whether the gas_limit set by the client is enough before broadcasting. A malicious client can drain the server's gas without paying. A transferWithMemo call on Tempo Moderato testnet requires ~51,299 gas to complete successfully. B…
Affected
mpp (erlang) >= 0.2.0, < 0.6.0
Fix
Upgrade mpp to 0.6.0 or later.
Exploitation
No known exploitation

Story map

Story map: mppTHE FLAWSTHE FIXGHSA-vj8p-hp9x-gh47Mpp vulnerable to Gas Drainingwith low gas limitCVSS 8.8GHSA-vv77-66rf-pm86Mpp vulnerable to Gas Drainingwith no limitCVSS 8.8GHSA-qpxh-ff8m-c62vMpp vulnerable to Gas Drainingwith access listCVSS 6.9FixUpgrade mpp to 0.6.0 or later.Who is exposedmpp (erlang) >= 0.2.0, < 0.6.0YELLOW · PLAN IT INmppWhen the server acts as the feepayer, mpp Elixir 0.4.0(ZenHive/mpp) does not validatewhether the gas_limit set by theclient is enough beforebroadcasting. A malicious clientcan drain the server's gas…Where it standsNo known exploitation
Story map: the flaws, the fix, how it unfolded and what it connects to. Boxes link to the record or article.

At a glance

mpp: Yellow, plan it in. When the server acts as the fee payer, mpp Elixir 0.4.0 (ZenHive/mpp) does not validate whether the gas_limit set by the client is enough before broadcasting. A malicious client can drain the server's gas without paying. A transferWithMemo call on Tempo Moderato testnet requires ~51,299 gas to complete successfully. B…

The flaws

The fix

Fix: Upgrade mpp to 0.6.0 or later.

Who is exposed: mpp (erlang) >= 0.2.0, < 0.6.0

Where it stands

  • No known exploitation

Why it is Yellow

  • CVSS 8.8 high
  • Remotely exploitable without logging in

Affected packages

PackageEcosystemVulnerableFixed in
mpperlang>= 0.2.0, < 0.6.00.6.0

References

Original description

## Vulnerability When the server acts as the fee payer, `mpp` Elixir 0.4.0 (ZenHive/mpp) does not validate whether the `gas_limit` set by the client is enough before broadcasting. A malicious client can drain the server's gas without paying. A `transferWithMemo` call on Tempo Moderato testnet requires **~51,299 gas** to complete successfully. By setting `gas_limit = 51,298`: 1. The Tx gets cosigned and broadcast by the server. 2. The Tx runs out of gas during EVM execution. All state reverts. 3. The server's fee-payer wallet is charged for gas used. 4. The client pays nothing and receives no resource. ```bash # Run the PoC unzip mpp_elixir_low_gas_PoC.zip cd mpp_elixir_low_gas_PoC docker build -t mpp-elixir-low-gas . docker run --rm mpp-elixir-low-gas ``` **Zero-Cost DoS Attack:** Unlike gas draining with `access list` or `padding`, where the malicious client needs to complete a payment to drain the gas, this vulnerability allows malicious users to continuously drain the server's gas at virtually no financial cost (requiring only computing power). Therefore, an attacker can spawn *N* malicious clients to completely drain the funds from the server's wallet to perform a Denial of Service (DoS) attack. Once the server's wallet is empty, it has no more funds to pay the gas fees for upcoming requests from legitimate clients. ```bash # Run the DoS PoC unzip mpp_elixir_low_gas_dos_PoC.zip cd mpp_elixir_low_gas_dos_PoC docker build -t mpp-elixir-dos . docker run --rm mpp-elixir-dos ``` **Vulnerable code path:** `broadcast_and_verify/7` in `mpp/methods/tempo.ex` (ZenHive/mpp 0.4.0). When `wait_for_confirmation = true` (the default), it calls `rpc_broadcast_sync` directly without any gas-adequacy check or simulation. The alternative `wait_for_confirmation = false` path does call `simulate_payment_call` via `eth_call`, but that simulation omits the `gas` parameter and therefore does not catch out-of-gas conditions. ## Impact A malicious client can drain the server's wallet without any financial cost.

Last activity 25 Sep 2026. Patch Forecast updates every hour.