Your RSA-2048 keys break in 2030. Find every one of them before attackers do.
💧 Hex
Not in CISA KEV

mpp vulnerable to Gas Draining with access listGHSA-qpxh-ff8m-c62v

Fix: ZenHive/mpp@5d6338e

GHSA-qpxh-ff8m-c62v is a CWE-1284 vulnerability in mpp. A fix is available for mpp — see the affected versions and patch details below.

Also known asCVE-2026-59694EEF-CVE-2026-59694
Published
Updated
Affected
1 pkg
Patched
1 / 1
Exploits
None indexed
Exploitation data as of Oct 21, 2026 · OSV.dev, NVD, FIRST.org (EPSS)

Exploitation Status

Proof-of-concept exploit code exists

  • CISA’s SSVC triage found public proof-of-concept exploit code for this CVE, though no confirmed active exploitation.

Exploitation and automatability from CISA’s SSVC triage for GHSA-qpxh-ff8m-c62v.

EPSS Exploitation Probability

via FIRST.org ↗
0.5%probability of exploitation in next 30 days
Lower Risk0.00%
Lower risk than most CVEs44th percentile — riskier than 44% of all scored CVEsHighest risk
0.00%0.34%0.68%1.02%0.3%0.5%0.5%0.5%Aug 26Oct 26Oct 26

Probability of exploitation in the next 30 days, from FIRST.org EPSS.

Real-World Exposure

1 pkg affected
💧mpp

Real-time download stats are indexed for npm and PyPI packages. This vulnerability affects Hex packages — download data is not available via public APIs for these ecosystems.

Description

Details

When the server acts as the fee_payer, mpp Elixir 0.4.0 copies the client-supplied EIP-2930 access list verbatim into the cosigned fee-payer transaction. In cosign_fee_payer, the server re-signs the raw base_fields (index 5 of the 0x76 AASigned envelope) without inspecting the access list field, which is part of the signed payload.

Access list gas is charged intrinsically — before any opcode executes — regardless of whether the listed addresses are ever touched.

An attacker submits a valid transferWithMemo alongside fabricated address-only access list entries. The server validates calldata and amount but never inspects access_list length. It cosigns and broadcasts a transaction that costs the fee-payer wallet N × 2,400 extra gas per request with no corresponding work performed on-chain.

At the default of 137 entries and 100 Gwei max_fee_per_gas, this inflates the fee-payer cost from the normal ~51,287 gas to ~380,087 gas — a 7.4× multiplier — while staying within Bandit's default 10,000-byte per-header-field limit (verified empirically).

PoC

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-access-list .
docker run --rm mpp-elixir-access-list

There are more details in mpp_elixir/README.md

Impact

A malicious client can force the server to pay ~7.4x the normal transaction fee. This dramatically increases operational costs and completely destroys the profit margin on low-cost items.

Affected Packages

1 total 1 fixed
EcosystemPackageVulnerable rangeFix
💧Hexmpp≥ 0.2.0&&< 0.6.00.6.0mix deps.update mpp

Detection & mitigation playbook

Open-source dependency
  1. Detect

    Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for mpp, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.

  2. Fix

    Update mpp to 0.6.0 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-qpxh-ff8m-c62v is resolved across your whole dependency graph.

  3. Workarounds

    Cap what an attacker can consume: apply request size, rate and timeout limits in front of the affected component, and run it with memory and CPU limits so exhaustion degrades one worker rather than the whole service.

Frequently Asked Questions

### Details When the server acts as the fee_payer, `mpp` Elixir 0.4.0 copies the client-supplied EIP-2930 access list verbatim into the cosigned fee-payer transaction. In `cosign_fee_payer`, the server re-signs the raw `base_fields` (index 5 of the 0x76 AASigned envelope) without inspecting the access list field, which is part of the signed payload. Access list gas is charged **intrinsically** — before any opcode executes — regardless of whether the listed addresses are ever touched. An attacker submits a valid `transferWithMemo` alongside fabricated address-only access list entries. The ser
O3 Security · Impact-Aware SCA

Is GHSA-qpxh-ff8m-c62v in your dependencies?

Find it across Hex, including transitive dependencies.

mpp vulnerable to Gas Draining with access list