Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain static memo from unauthenticated 402 payment challenge response
-
DeliveryMonitor public Tempo blockchain for transfer matching operator's recipient, token, amount, and memo
-
ExploitIdentify legitimate customer transfer meeting all match criteria
-
ExecutionRequest fresh verification challenge for target payment route
-
PersistSubmit victim's transaction hash as type='hash' credential
-
ImpactServer skips sender and signature checks, grants access to paid resource
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Replay attack prevention
|
| Exploitation Conditions | Exploitation requires a specific, non-default operator configuration: MPP.Methods.Tempo must be active and method_config must contain a static 'memo' string without a corresponding 'store' (deduplication) setting. This is the precise configuration that triggers the short-circuit in check_matched_memo_binding/3 and disables attribution nonce binding. Additionally, the attacker must be able to identify on-chain transfers that match the operator's expected token, recipient, and amount - all publicly observable on the Tempo blockchain. Exploitation is further bounded to mpp versions 0.6.1-0.6.3. The attack does NOT apply to deployments using the default no-memo configuration (where challenge-bound nonces prevent replay), deployments that have already added a 'store' dedup backend, or mpp versions 0.6.4 and later (where the misconfiguration is rejected at startup). No authentication, credentials, or wallet key material are required from the attacker. |
| Impact | The CVSS 4.0 score of 8.2 (AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N) reflects unauthenticated network exploitation with high integrity impact, moderated by AT:P - the specific attack requirement that the operator has configured a static memo without a dedup store. EPSS data is absent from the provided intelligence, and neither active exploitation (CISA KEV) nor public exploit code has been identified at time of analysis. The real-world risk is tightly scoped to configuration: deployments using the default no-memo (challenge-bound nonce) path are unaffected, which limits the blast radius meaningfully. Even a mid-sized operator in ustka running mpp with the static-memo Tempo configuration should treat this as urgent, since the entire payment enforcement layer can be defeated using only publicly observable blockchain data and standard HTTP calls - no credentials, cryptographic material, or privileged access required. The AT:P modifier in the CVSS 4.0 vector is well-calibrated: it captures the configuration dependency without understating the severity for operators who are in that configuration. |
| Exploit ScenarioDerived | An attacker passively monitors the public Tempo blockchain and identifies a TransferWithMemo transaction that matches a target operator's configured recipient address, token type, required payment amount, and static memo string (the latter obtained for free from the operator's unauthenticated HTTP 402 challenge response). The attacker then initiates a fresh payment challenge against the same route and submits the legitimate customer's transaction hash as a type='hash' credential payload. Because the server only validates token, recipient, amount, and the static memo - performing no check that the presenter controls the sending wallet - access to the paid resource is granted without the attacker having made any payment. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 19, 2026
Capture-replay authentication bypass in ZenHive mpp versions 0.6.1-0.6.3 allows unauthenticated network attackers to claim paid resources by reusing a legitimate customer's public TIP-20 TransferWithMemo transaction hash. When the Tempo payment method is configured with a static 'memo' value in method_config, the per-challenge attribution nonce binding that ties a specific transfer to a specific verification challenge is skipped unconditionally, and the hash credential path performs no sender or wallet-signature check - leaving only token, recipient, amount, and the static memo (itself broadcast in every unauthenticated 402 response) to match. No active exploitation is confirmed and no public exploit code has been identified; a vendor patch is available in mpp 0.6.4.
RemediationAI
Upgrade to mpp 0.6.4 or later. The patch (commit 2207d7f456ae14c1d3fcacc6f635bf4f8cee1a34, https://github.com/ZenHive/mpp/commit/2207d7f456ae14c1d3fcacc6f635bf4f8cee1a34) adds a validate_memo_store_binding!/1 startup check that raises an ArgumentError at initialization if a static 'memo' is present in method_config without a valid 'store' key, preventing misconfigured deployments from running entirely. If an immediate upgrade is not possible, two workarounds are available: (1) remove the static 'memo' from method_config entirely, reverting to the default challenge-bound attribution nonce path which does not require a store and is not affected by this vulnerability; or (2) add a 'store' key pointing to a running dedup backend such as MPP.Tempo.ConCacheStore, which enforces single-use transaction hashes and closes the replay window - note that this requires deploying and supervising the ConCacheStore process. The vendor advisory at https://github.com/ZenHive/mpp/security/advisories/GHSA-34g7-vx6g-82mq provides additional configuration guidance.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
ZenHive mpp is an Elixir-based multi-party payment library that integrates with the Tempo blockchain protocol's TIP-20 TransferWithMemo primitive (CPE: cpe:2.3:a:zenhive:mpp:*:*:*:*:*:*:*:*). Normally, MPP.Methods.Tempo embeds a challenge-bound attribution nonce into the memo field of each TransferWithMemo, cryptographically tying a settled on-chain transfer to the specific payment challenge it fulfills and preventing its reuse. CWE-294 (Authentication Bypass by Capture-replay) precisely describes the root cause: the authentication proof (a transaction hash) is observable by any third party on the public blockchain, and when the nonce-binding check is short-circuited by the static-memo code path in check_matched_memo_binding/3, nothing prevents a non-participant from presenting that proof. The commit diff confirms the flaw is in tempo.ex at the validate_config!/1 stage, which previously allowed static-memo configurations to proceed without requiring a deduplication store (the 'store' key in method_config), leaving no single-use enforcement backstop.
Know when Mpp gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
Unauthenticated network exploitation with no user interaction, but AC:H reflects the required non-default static-memo-without-store operator configuration; only integrity is impacted.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
Authentication Bypass by Capture-replay in ZenHive mpp allows an unauthenticated third party to obtain paid resources by replaying a transfer settled by an unrelated payer.
MPP.Methods.Tempo normally binds a settled TIP-20 TransferWithMemo to the specific challenge under verification through an attribution nonce carried in the memo. When a static "memo" is configured in method_config, check_matched_memo_binding/3 returns the match unconditionally and that binding is skipped, leaving only token, recipient, amount and the static memo value to match on. The static memo is echoed in every unauthenticated 402 response and Tempo transfers are public, so an attacker can take any matching transfer paid by a legitimate customer, request a fresh challenge for the same route, and present that transaction hash as a type="hash" credential. The hash path performs no sender or signature check tying the presenter to the wallet that broadcast the transfer.
This issue affects mpp: from 0.6.1 before 0.6.4.
Executive ViewAI
ZenHive mpp versions 0.6.1-0.6.3 contain a payment authentication bypass allowing unauthenticated attackers to claim paid resources without payment, directly impacting revenue for organizations using the Tempo payment method. Immediate patching to version 0.6.4 is required to prevent ongoing financial exposure.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Missing validation of the EIP-7702 aa_authorization_list field in ZenHive mpp's Tempo payment sponsorship module allows
Gas-cost inflation and unauthorized access key provisioning in ZenHive mpp (versions 0.2.0 through 0.15.x) allows any un
Replay of settled EVM blockchain transaction hashes against ZenHive mpp versions 0.3.0-0.6.2 allows unauthenticated remo
Concurrent sponsored-payment flooding in ZenHive mpp (versions 0.2.0 through 0.12.0) allows an unauthenticated remote cl
Economic resource exhaustion in the ZenHive mpp Elixir library (versions 0.2.0 through 0.5.x) lets an unauthenticated re
Fee-payer wallet draining in ZenHive mpp (Elixir) 0.2.0-0.5.x lets an unauthenticated remote client empty the sponsor's
Wallet-draining denial of service in ZenHive mpp (Elixir library) versions 0.2.0 through 0.5.x affects deployments confi
Replay of a captured Tempo subscription credential in ZenHive mpp 0.14.0 through 0.16.1 lets an attacker who already hol
ZenHive mpp versions 0.14.0 through 0.16.1 fail to charge clients that hold an open payment channel, allowing an authent
Duplicate-submission gate bypass in the Tempo payment method of ZenHive mpp (versions 0.2.0 through 0.16.1) lets an unau
ZenHive mpp (MPP.Plug payment middleware for Elixir/Phoenix) versions 0.1.0 through 0.16.1 can allow a shared HTTP cache
Payment-replay protection in ZenHive mpp's Tempo hash-credential path is defeated by a TOCTOU race condition, allowing a
EUVD-2026-62592
GHSA-cw4v-5gcf-x3cw
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB