Bugs

Bugs we’ve found. Security findings also get a full write-up under advisories.

39 bugs · 16 fixed · 4 implementations

LND 7 · 3 fixed

BugImpactStatusReportedCreditLinks
Channel-open race with latent nil dereferenceracereported,
Failure to reject open_channel with zero feerate_per_kwgriefreported
Empty channel_type TLV negotiates a legacy channelspecfixed
Failure to reject absurdly high channel feeratesspecreported
Absent channel_type TLV negotiates a legacy channelspecfixed
Incorrect signature verification edge casespecreported
Gossiper shutdown deadlock in discoverylivenessfixed,

Core Lightning 18 · 5 fixed

BugImpactStatusReportedCreditLinks
channeld aborts on large update_add_htlc amountcrashreported,
Failure to reject a splice contribution that takes out more than the peer’s balancespecreported
Failure to reject tx_init_rbf after the peer sent splice_lockedspecreported
wrap_onionreply() passes an empty reply’s NULL contents as libsodium’s nonnull outputubreported
reply_channel_range for an unknown chain omits the encoded_short_ids encoding typespecreported
openingd aborts on funding_created with a zero funding_txidcrashreported
accept_channel sets channel_reserve_satoshis below our own dust_limit_satoshiscrashreported
Failure to reject tx_add_output amounts above the total bitcoin supplycrashreported
Failure to reject open_channel where the funder cannot pay the commitment feespecreported
channeld leaves tx_sigs_allowed uninitialized on startupuninitfixed
dualopend leaves state->reconnected uninitialized on startupuninitfixed
Failure to reject absurdly high channel reservesspecreported
Failure to reject option_scid_alias on an announced channelspecreported
Failure to reject dust_limit_satoshis below 354 satspecreported
Zombie connection after lightningd ignores connectd_peer_spokelivenessreported
marginal_feerate() overflows instead of saturatingubfixed
Duplicate funding outpoint creates channels with the same channel_idspecfixed
openingd crashes on assertion when funding_satoshis exceeds the wally maximumcrashfixed

LDK 2 · 1 fixed

BugImpactStatusReportedCreditLinks
Failure to reject absurdly high channel reservesspecreported
to_self_delay size omitted from DelayedPaymentOutput weight calculationdebug-assertfixed

Eclair 11 · 7 fixed

BugImpactStatusReportedCreditLinks
Failure to reject splice_init that overdraws the sender’s balancespecreported
Failure to reject tx_init_rbf after splice_lockedspecreported
Failure to reject open_channel where the funder cannot pay the commitment feespecreported
Failure to reject option_scid_alias on an announced channelspecreported
Failure to reject funding_satoshis > MAX_MONEYspecfixed
Failure to validate channel_reserve_satoshis against dust_limit_satoshisspecfixed
open_channel race orphans channel actorsdosfixed
Incorrect signature verification edge casesspecfixed
Malformed messages silently dropped instead of closing the connectionspecfixed
Unbounded zlib decompression of channel queriesdosfixed
Feature bit parsing allocates per bitdosfixed

BOLT spec 1 · 0 fixed

BugImpactStatusReportedCreditLinks
Incorrect HTLC deductions in Appendix C/F test vectorsspecreported