CVE-2026-88255: CWE-1289 Improper Validation of Unsafe Equivalence in Input in ZenHive mpp
Improper Validation of Unsafe Equivalence in Input in ZenHive mpp allows an unauthenticated remote client to pass the Tempo duplicate-submission gate twice with one signed transaction. MPP.Methods.Tempo reserves the pre-broadcast dedup slot on the caller-supplied hex in reserve_hash_atomic/2, keyed through store_key/1 on tx.raw rather than on a canonical form of the transaction. The deserializer stores the caller's hex verbatim and accepts both recovery-id encodings, so one signed transaction submitted once with v=27 and once with v=0 yields two distinct reserve keys, and both pass the reserve and reach the broadcast path. The plug-level credential replay store is deliberately carved out for tempo in lib/mpp/replay.ex, leaving this reserve as the only gate, and the post-broadcast mark writes the canonical hash key that the raw-keyed reserve never reads. What the duplicate submission yields depends on the node: a nonce-reuse rejection fails closed, while a node that answers with the canonical hash for an already-known transaction returns a second valid Payment-Receipt for a single on-chain payment. This issue affects mpp: from 0.2.0 before 0.16.2.
AI Analysis
Technical Summary
The vulnerability arises from the Tempo duplicate-submission gate in ZenHive mpp's MPP.Methods.Tempo component, which reserves a deduplication slot keyed on the caller-supplied raw hex transaction rather than a canonical form. Because the deserializer accepts both recovery-id encodings (v=27 and v=0) verbatim, submitting the same signed transaction with these two encodings produces two distinct reserve keys. Both keys pass the reserve check and reach the broadcast path, allowing duplicate submissions. Depending on the node behavior, this can either cause a nonce-reuse rejection or result in a second valid payment receipt for the same on-chain payment. The plug-level credential replay store excludes this case, leaving the reserve as the only gate, which is bypassed due to this input validation flaw.
Potential Impact
An unauthenticated remote attacker can submit the same signed transaction twice with different recovery-id encodings, bypassing the duplicate-submission gate. This can lead to either a rejection due to nonce reuse or issuance of multiple valid payment receipts for a single payment, potentially causing confusion or double acknowledgment of payments. The vulnerability does not allow direct chain state manipulation but can affect transaction processing integrity.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. Until an official fix is available, users should monitor vendor communications for updates. No vendor advisory or patch links are currently provided.
CVE-2026-88255: CWE-1289 Improper Validation of Unsafe Equivalence in Input in ZenHive mpp
Description
Improper Validation of Unsafe Equivalence in Input in ZenHive mpp allows an unauthenticated remote client to pass the Tempo duplicate-submission gate twice with one signed transaction. MPP.Methods.Tempo reserves the pre-broadcast dedup slot on the caller-supplied hex in reserve_hash_atomic/2, keyed through store_key/1 on tx.raw rather than on a canonical form of the transaction. The deserializer stores the caller's hex verbatim and accepts both recovery-id encodings, so one signed transaction submitted once with v=27 and once with v=0 yields two distinct reserve keys, and both pass the reserve and reach the broadcast path. The plug-level credential replay store is deliberately carved out for tempo in lib/mpp/replay.ex, leaving this reserve as the only gate, and the post-broadcast mark writes the canonical hash key that the raw-keyed reserve never reads. What the duplicate submission yields depends on the node: a nonce-reuse rejection fails closed, while a node that answers with the canonical hash for an already-known transaction returns a second valid Payment-Receipt for a single on-chain payment. This issue affects mpp: from 0.2.0 before 0.16.2.
CVSS v4.0
Score 6.3medium
Affected software
ZenHive
mpp
ZenHive
mpp
cpe:2.3:a:ZenHive:mpp:*:*:*:*:*:*:*:*Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
Weaknesses
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The vulnerability arises from the Tempo duplicate-submission gate in ZenHive mpp's MPP.Methods.Tempo component, which reserves a deduplication slot keyed on the caller-supplied raw hex transaction rather than a canonical form. Because the deserializer accepts both recovery-id encodings (v=27 and v=0) verbatim, submitting the same signed transaction with these two encodings produces two distinct reserve keys. Both keys pass the reserve check and reach the broadcast path, allowing duplicate submissions. Depending on the node behavior, this can either cause a nonce-reuse rejection or result in a second valid payment receipt for the same on-chain payment. The plug-level credential replay store excludes this case, leaving the reserve as the only gate, which is bypassed due to this input validation flaw.
Potential Impact
An unauthenticated remote attacker can submit the same signed transaction twice with different recovery-id encodings, bypassing the duplicate-submission gate. This can lead to either a rejection due to nonce reuse or issuance of multiple valid payment receipts for a single payment, potentially causing confusion or double acknowledgment of payments. The vulnerability does not allow direct chain state manipulation but can affect transaction processing integrity.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. Until an official fix is available, users should monitor vendor communications for updates. No vendor advisory or patch links are currently provided.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- EEF
- Date Reserved
- 2026-09-11T18:30:01.336Z
- Cvss Version
- 4.0
- State
- PUBLISHED
Threat ID: 6aaa540255bf5e2cf53c614f
Added to database: 09/16/2026, 08:32:02 UTC
Last enriched: 09/16/2026, 08:46:52 UTC
Last updated: 09/16/2026, 23:42:53 UTC
Views: 11
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.