AI-generated analysisPublished automatically and not human-verified. Validated context appears in community notes below.
← Watch feed
High 72 Bitcoin

Merge ElementsProject/elements#1592: blind/blindpsbt fixes

Public commit record

What the developer wrote

Authored by merge-script

91/100 · Strong
Merge ElementsProject/elements#1592: blind/blindpsbt fixes

c26d719c29a40da280a825b25657e9c3d8bc7d99 fix: range proof cache bind to asset and scriptpubkey (Byron Hambly)
b0aba619b6ff2846617b285274a954e0404137f5 blindpsbt: return error instead of asserting on surjection proof failure (Byron Hambly)
f634a3a4635550b881d3db3376c42d614ea1d9b4 blindpsbt: reject off-curve blinding pubkey before ECDH (Byron Hambly)
066ecf6eb3bc54e6135d79864b969ac6ad84795e blindpsbt: refuse to blind a PSET output with no amount (Byron Hambly)
fef1a30b62374d06e29bc8617dcf415c37993ffa headerssync: retain Elements identity and proof fields (Byron Hambly)
bdedb12ee3996adab4959b63b51ccbe9575284bf dynafed: require at least four-fifths approval for parameter transition (Byron Hambly)
c7ec63c58312c4581c763f02f4aa31ef608e12a8 validation: always validate and retain dynafed header block_height (Byron Hambly)
34be37f34d25fde692d6c5559ee0ca13b1c48654 blindpsbt: require both range bounds to match claim in VerifyBlindValueProof (Byron Hambly)
6f1a51310b85e8072e7ffe0983b515a86f397411 blindpsbt: require genuine commitments in VerifyBlindValueProof (Byron Hambly)
a7a88214f740a23b49aec0a7b1125e03ac9227a4 blind: reject empty surjection-target set in SurjectOutput (Byron Hambly)

Pull request description:

Fixes a number of small issues picked up during LLM scans

ACKs for top commit:
tomt1664:
ACK c26d719c29a40da280a825b25657e9c3d8bc7d99 tested locally.

Tree-SHA512: f38aa278a313124665e3f135b210f09604277d7edfb6236bd74607fe9eaed13c2ce7eb606a63403accabe4b821ce80b230648870b06436529e7289eed2ea7ecc
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
The short version

What changed, and why it matters

This merge commit fixes several security and robustness bugs in Elements' confidential-transaction blinding code and in its dynamic-federated (dynafed) header handling. The most user-visible issues are in 'blindpsbt': malformed PSET inputs could previously crash the node (assertion failures), read memory out of bounds, or trick a verifier into accepting a wrong amount. Other changes stop a zero-input transaction from crashing during surjection-proof creation, make the range-proof cache depend on more data so it cannot return a wrong 'already verified' answer, and ensure dynafed block headers always carry and validate their height even when a legacy option is off. The pull request says the issues were 'picked up during LLM scans' and does not claim any are already exploited in the wild.

Recommended action

Treat this as a security-relevant maintenance merge and include it in the next release. Users and integrators who process untrusted PSETs or run Elements nodes on dynafed chains should upgrade. No emergency response is indicated by the supplied materials, but the denial-of-service and proof-verification fixes are worth backporting to supported release branches.

Security signals we found

01

Replacement of assertion failures with recoverable error returns in attacker-influenced PSET blinding paths

02

Out-of-bounds read prevention by requiring 33-byte Pedersen commitments before passing buffers to libsecp256k1

03

Range-proof equality verification now checks both min and max bounds, closing a proof-forgery window

04

Rejection of off-curve blinding public keys before ECDH, preventing a process-abort assert

05

Rejection of nullopt output amounts in PSET v0 blinding, preventing undefined dereference

06

Rejection of empty surjection-target set, preventing a downstream cryptographic assertion

07

Range-proof cache key expanded to include asset commitment and scriptPubKey, reducing collision risk

08

Dynafed header height always reconstructed and validated, fixing consensus-relevant header identity

09

Dynafed parameter transition threshold computed with overflow-safe ceiling

Risk score

Why this scored 72/100

Our methodology →
Potential impact 22/30
Exploitability 16/25
Stealth signal 10/15
Affected reach 12/15
Confidence 8/10
Evidence quality 4/5
Human-validated context

Community notes

Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.

No validated notes yet.

The AI analysis stands alone for now. Submit a note if you can add evidence or important context.