CVE-2026-73829

Non-atomic hash-credential dedup in mpp Tempo allows replay of a confirmed payment under a concurrent race

LOW
3.7
CVSS Score
Published: August 19, 2026 at 05:19 PM UTC
Updated: September 10, 2026 at 06:48 PM UTC
1 product affected across 1 vendorMachine Payments Protocol

Using mpp by ZenHive?

Get instant alerts when new vulnerabilities affect mpp - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
LOW3.7
Exploit prediction
EPSS 0.3%
SSVC
No known exploit

Description

Time-of-check Time-of-use (TOCTOU) Race Condition in ZenHive mpp allows an unauthenticated remote client to redeem one confirmed on-chain payment for multiple paid-resource accesses. The type="hash" credential path in MPP.Methods.Tempo.verify/2 guards against replay with a non-atomic check-then-mark sequence: check_hash_unused/2 reads the dedup store, an eth_getTransactionReceipt round trip verifies the payment on chain, and only then does mark_hash_used/2 write the mark. Concurrent requests carrying the same settled payment hash all pass the read before any of them writes, so each is issued a receipt. The store's atomic check_and_mark/2 primitive is available and used by the type="transaction" path, but the hash path calls plain get and put even when the configured store implements it. Exploitation requires a dedup store to be configured; the default nil store is stateless and documented as offering no replay protection at all. This issue affects mpp: from 0.2.0 before 0.6.1.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

0.2.0 ≤ v < 0.6.10.2.0f8904666061fbab695874856d8fcd02c471dfe1b
Vendor states this is fixed in 46c5b0e1311da7d92190dc7d9ea89027a1d365e9 (fixed)
Affected range stops below 0.6.1, so it looks safe — our inference, not a vendor statement

Remediation

No guide yet

No remediation guidance has been written for this CVE yet. What the record does show:

References (4)

SSVC — Action Prioritization

SSVCNo known exploitNot automatablePartial impact

SSVC signals action urgency (what to patch first), separate from CVSS which measures severity.

CVSS

Attack Vector
NETWORK
Complexity
HIGH
Privileges
NONE
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
NONE
Integrity
LOW
Availability
NONE
Vector?

Quick Info

StatusANALYZED
CWE
CWE-367

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card