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

Merge pull request #1032 from kdmukai/psbt_output_ownership

Public commit record

What the developer wrote

Authored by Nick Klockenga

88/100 · Strong
Merge pull request #1032 from kdmukai/psbt_output_ownership

[security] Verify that change outputs actually pay this seed
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly
The short version

What changed, and why it matters

This commit fixes a security flaw in SeedSigner, a small hardware-wallet-like device used to sign Bitcoin transactions. Previously, the software trusted the PSBT file's own claim about which 'change' outputs belong back to the user's wallet. A malicious or buggy PSBT could mark an external payment as the user's own change, tricking the user into approving a transaction that sends funds to an attacker. The patch now independently rebuilds each output's receiving address from the user's seed and compares it to what the PSBT actually commits to, rejecting the transaction if the two disagree. It also adds checks for contradictory or malformed derivation-path claims.

Recommended action

Users should upgrade to a release containing this commit. Developers should review the new exception handling paths and ensure that downstream wallet integrations do not produce PSBTs that omit required output scripts or misannotate change outputs, as such PSBTs will now be rejected. Multisig users should still load the correct wallet descriptor before signing, because full multisig change verification remains descriptor-dependent.

Security signals we found

01

Fixes change-output ownership verification against PSBT coordinator claims

02

Adds independent scriptPubKey reconstruction from seed-derived keys

03

Adds rejection of contradictory ownership claims (claim-ours/pay-other and pay-ours/claim-other)

04

Adds rejection of surplus derivation-path entries and mixed ecdsa/taproot derivation maps

05

Adds user-facing dire-warning screens for detected deceptions

06

Single-sig change is now verified at parse time; multisig change still deferred to descriptor comparison

07

Taproot outputs with script trees are conservatively treated as external spends due to unimplemented tree parsing

Risk score

Why this scored 80/100

Our methodology →
Potential impact 24/30
Exploitability 18/25
Stealth signal 12/15
Affected reach 12/15
Confidence 9/10
Evidence quality 5/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.