CVE-2026-73829: ZenHive mpp TOCTOU race condition in payment verification

CVE-2026-73829 · Severity: low · CVSS 3.7 · Published 2026-08-19

ZenHive mpp is a payment processing library that handles on-chain cryptocurrency payments for resource access. A race condition in the payment verification logic allows an attacker to redeem a single confirmed blockchain payment multiple times by submitting concurrent requests, resulting in free access to paid resources. This vulnerability only affects systems configured with a deduplication store; the default configuration is unaffected.

Technologies: ZenHive Machine Payments Protocol, ZenHive Mpp. Vendors: ZenHive.

Quick answers

Is CVE-2026-73829 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-73829 being exploited in the wild.
How severe is CVE-2026-73829?
Low severity, with a CVSS score of 3.7, published 19 August 2026.
Which products and versions are affected?
ZenHive Mpp 0.2.0 before 0.6.1.
Is there a fix for CVE-2026-73829?
A patch was published on 0.6.1. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-73829 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2026-73829?
Check whether you run ZenHive Machine Payments Protocol or ZenHive Mpp at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

Technical details

The vulnerability is a Time-of-Check Time-of-Use (TOCTOU) race condition in the hash-based credential verification path (MPP.Methods.Tempo.verify/2). The vulnerable code checks whether a payment hash has been used (check_hash_unused/2), verifies the payment on-chain via eth_getTransactionReceipt, and only then marks it as used (mark_hash_used/2). This sequence is non-atomic: concurrent requests can all pass the initial check before any performs the mark operation, allowing each to receive a valid receipt for the same payment. The underlying dedup store provides an atomic check_and_mark/2 primitive that is used by the transaction-based path but not the hash path. Exploitation requires a dedup store to be explicitly configured; the default nil store does not deduplicate and is unaffected. Attack vector is network-based and requires no authentication. Patched in version 0.6.1.

Affected products

  • ZenHive mpp 0.2.0 before 0.6.1

Timeline

  • 2026-08-19: disclosed
  • 0.6.1: patched

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.