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

improve validation of payjoin proposals, and accept a substituted payment output where a change output is present

Public commit record

What the developer wrote

Authored by Craig Raw

50/100 · Thin
improve validation of payjoin proposals, and accept a substituted payment output where a change output is present
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
The short version

What changed, and why it matters

This commit strengthens how Sparrow Wallet checks Payjoin proposals received from a payment receiver. Payjoin lets a receiver add their own inputs to a transaction to improve privacy. The changes add missing checks that could previously let a malicious or buggy receiver: (1) silently lower the transaction fee rate, (2) add key-path or signature data that leaks wallet information, (3) substitute the payment output even when no change output exists, or (4) return arbitrary error text that the wallet would show to the user. The patch also fixes handling for modern Taproot (P2TR) transactions, which were not being copied or validated correctly. A new set of unit tests confirms these protections.

Recommended action

Treat this as a security-hardening patch and include it in the next release. Users who make Payjoin payments should upgrade. No immediate incident response is indicated because the commit is a defensive fix, but wallet developers should review whether earlier versions accepted under-funded or substituted-output Payjoins.

Security signals we found

01

Added minimum fee-rate enforcement on Payjoin proposals

02

Added Taproot (P2TR) key-path and derived-public-key validation and propagation

03

Restricted payment-output substitution to proposals that retain a change output

04

Hardened receiver error deserialization against arbitrary response injection

05

Added unit tests covering accepted and rejected Payjoin proposal variants

Risk score

Why this scored 56/100

Our methodology →
Potential impact 18/30
Exploitability 12/25
Stealth signal 8/15
Affected reach 7/15
Confidence 7/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.