Session voucher adding no new funds is accepted without a charge in mpp, serving paid resources for free
Key facts
- Attack vector
- Network
- Privileges required
- Low
- User interaction
- None
- Attack complexity
- Low
- Attack requirements
- None
- Impact type
- —
- Confidentiality · integrity · availability
- None · High · None
- Fix status
- Fixed
Attack profile from CVSS 4.0 · CNA. Fix status from CNA.
Summary
Improper 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 a voucher whose cumulativeAmount equals the channel's already-accepted cumulative amount as an idempotent success, returning the channel unchanged without calling maybe_spend/2. The credential verifies, the protected resource is served, and spent and units stay where they were. Because the server issues a fresh challenge per request and the credential replay store keys on challenge id and payload, the same signed voucher can be re-presented under every new challenge, so one paid voucher yields an unbounded number of paid units. The path is reachable from any method built on MPP.Session.Method through the Plug, MCP, JSON-RPC and WebSocket transports. This issue affects mpp: from 0.14.0 before 0.16.2.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| ZenHive | mpp | 0.14.0 to before 0.16.2 | 0.16.2 | Patch available | CNA |
- mpp VendorZenHive Affected 0.14.0 to before 0.16.2 Fixed in 0.16.2 Patch available CNA
CPE names CNA · 1
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:ZenHive:mpp:*:*:*:*:*:*:*:* | — | — | — |
- cpe:2.3:a:ZenHive:mpp:*:*:*:*:*:*:*:* Versions — — ·—
Remediation
- Fix · CNA mpp (ZenHive) Fixed in 0.16.2
Fixed in the same release
Records fixed by the same vendor advisory or release, as the CNA lists them.
- Release ·
ZenHive mpp 0.16.2
2 records Highest priority Priority MEDIUM 1 MEDIUM, 1 LOW
Other records, highest priority first
- TI-2026-59483 Authentication bypass by capture-replay in ZenHive mppPriority LOW 36
Timeline
- 2026-10-02 Threatist record created from CVE-2026-89420
- 2026-10-03 Alias added: GHSA-96m7-5wfv-978m
References
More ZenHive vulnerabilities
- TI-2026-42571 Unbounded max_fee_per_gas in mpp Tempo fee-payer enables single-request wallet drain CVSS 4.0HIGH 8.3
- TI-2026-42570 Unbounded access list in mpp Tempo fee-payer inflates gas cost per payment CVSS 4.0HIGH 8.3
- TI-2026-42392 Missing gas_limit validation in mpp Tempo fee-payer enables wallet drain CVSS 4.0HIGH 8.2
- TI-2026-47746 On-chain transfer proof is not single-use in mpp EVM payment method, enabling cross-challenge replay CVSS 4.0HIGH 8.7
- TI-2026-51635 Resource allocation without limits in ZenHive mpp CVSS 4.0HIGH 8.3
- TI-2026-57069 Unbounded key authorization in mpp Tempo fee-payer sponsorship inflates gas cost and sponsors access-key provisioning CVSS 4.0HIGH 8.3
Sources
- CVE-2026-89420 · CVE Program
- CVE-2026-89420 · NVD
- FIRST EPSS
- GHSA-96m7-5wfv-978m · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences