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

Store our closing_complete in the simple close session (#3289)

Public commit record

What the developer wrote

Authored by Fabrice Drouin

96/100 · Strong
Store our closing_complete in the simple close session (#3289)

In the simple close session, which is never persisted, we just need to remember our closing_complete and
the partial signatures it contains, instead of keeping our musig2 nonces and generating our partial signatures a second time to build the final closing tx when we receive our peer's partial signatures.
We also check our peer's partial signature and fail early if they're not valid, instead of building a fully sign
closing tx and then verify that it is correct.
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ 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 changes how Eclair (a Bitcoin Lightning node) remembers its own closing signatures during a mutual channel close. Previously, the code re-generated signing nonces and re-signed closing transactions when the peer's signature arrived. Now it stores the original closing message and reuses its signatures. It also adds an early check that the peer's partial signature is valid before trying to build a final signed transaction. The change is a defensive correctness improvement rather than a clear fix for an active exploit.

Recommended action

Review the new checkRemotePartialSignature implementation and ensure it covers all closing transaction variants. Verify that storing ClosingComplete in volatile memory (simple close session is never persisted, per commit message) does not introduce a crash-recovery issue where a stale or missing closing_complete could lead to force-close. Consider whether the early InvalidCloseSignature failure path correctly updates nonce state to allow negotiation to continue.

Security signals we found

01

MuSig2 nonce handling changed: local partial signatures are now stored and reused instead of regenerated

02

Early signature validation added for peer's partial signature before final transaction aggregation

03

Removed CloserNonces helper that generated three random nonces per closing attempt

04

Potential nonce-reuse class eliminated by storing closing_complete message

Risk score

Why this scored 32/100

Our methodology →
Potential impact 8/30
Exploitability 5/25
Stealth signal 4/15
Affected reach 6/15
Confidence 6/10
Evidence quality 3/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.