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

CVE-2026-63627 — mppx

Fix: wevm/mppx@24ddcca

CVE-2026-63627 is a Improper Input Validation vulnerability in mppx. A fix is available for mppx — see the affected versions and patch details below.

mppx: Gas Draining with padding

Also known asGHSA-727h-3vm5-qwq6
Published
Updated
Affected
1 pkg
Patched
1 / 1
Exploits
None indexed
Exploitation data as of Oct 19, 2026 · OSV.dev, NVD, FIRST.org (EPSS)

Exploitation Status

No confirmed exploitation observed yet

  • CISA assesses this as automatable — exploitation doesn’t require manual, per-target effort, which raises the odds of mass scanning and opportunistic attacks.
  • CISA’s own triage has not observed active exploitation or public proof-of-concept code for this CVE as of its last assessment.

Exploitation and automatability from CISA’s SSVC triage for CVE-2026-63627.

EPSS Exploitation Probability

via FIRST.org ↗
0.4%probability of exploitation in next 30 days
Lower Risk0.00%
Lower risk than most CVEs31th percentile — riskier than 31% of all scored CVEsHighest risk
0.00%0.29%0.59%0.88%0.4%0.4%Oct 26Oct 26

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

Real-World Exposure

1 pkg affected

How broadly this vulnerability is actually deployed: weekly install volume shows current usage, and reverse-dependency count shows how many other packages break if it stays unpatched.

137other npm packages depend on this — each one inherits the vulnerability until it's patched upstream
mppxnpm
153Kdownloads / week

Description

Details

When the server acts as the fee_payer, mppx 0.6.27 validates calldata using viem's decodeFunctionData, which is lenient about trailing bytes. The FeePayerPolicy caps gas_limit (≤ 2 M) and max_fee_per_gas (≤ 100 Gwei) but does not check calldata length.

Tempo uses legacy calldata gas pricing: 16 gas per non-zero byte. Appending N bytes of 0x01 padding inflates actual gas used by N × 16 while keeping gas_limit and max_fee_per_gas within policy caps. The server cosigns and broadcasts the padded transaction, draining its fee-payer wallet.

Vulnerable code path: FeePayerPolicy in fee-payer.ts (mppx 0.6.27) enforces maxGas = 2_000_000 and maxFeePerGas = 100 Gwei but has no calldata.length bound. The policy check passes because the inflated gas comes from intrinsic calldata cost, not the declared gas_limit.

Note: In the experiment, a 16 KB max_header_length is enforced, which caps the maximum effective padding at roughly 5,500 bytes. The default padding in this PoC (5,500 bytes) is within that limit.

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 mppx_typescript_PoC.zip
cd mppx_typescript
docker build -t mppx-padding .
docker run --rm mppx-padding

There are more details in mppx_typescript/README.md

Impact

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

Please provide a way to share the PoC in .zip format to you. Thank you!

Affected Packages

1 total 1 fixed
EcosystemPackageVulnerable rangeFix
📦npmmppxall versions0.8.2npm install mppx@0.8.2

Detection & mitigation playbook

Open-source dependency
  1. Detect

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

  2. Fix

    Update mppx to 0.8.2 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2026-63627 is resolved across your whole dependency graph.

  3. Workarounds

    If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.

Frequently Asked Questions

### Details When the server acts as the fee_payer, `mppx` 0.6.27 validates calldata using viem's `decodeFunctionData`, which is lenient about trailing bytes. The `FeePayerPolicy` caps `gas_limit` (≤ 2 M) and `max_fee_per_gas` (≤ 100 Gwei) but does **not** check calldata length. Tempo uses legacy calldata gas pricing: **16 gas per non-zero byte**. Appending `N` bytes of `0x01` padding inflates actual gas used by `N × 16` while keeping `gas_limit` and `max_fee_per_gas` within policy caps. The server cosigns and broadcasts the padded transaction, draining its fee-payer wallet. **Vulnerable code
O3 Security · Impact-Aware SCA

Is CVE-2026-63627 in your dependencies?

Find it across npm, including transitive dependencies.

CVE-2026-63627: mppx — Fixed in 0.8.2