← index

Block-stalling issue in Core prior to v22.0

An archive of delvingbitcoin.org · view original topic →

Eugene · #1 ·

In May 2021, I reported a block-stalling issue to the Bitcoin Core security email. Master at the time of writing was 6b254814c076054eedc4311698d16c8971937814. While the majority of the network has upgraded to at least v22.0, there are still a few thousand stragglers so hopefully this disclosure will motivate those running lightning nodes to upgrade to a safer version. Additionally, I think it’s informative to let the broader community know about historical attacks on lightning.

Background

Some background on bitcoind (circa May 2021):

The Attack

The attacker performs the following steps:

Implications for LN

Let’s assume the topology M1 ↔ B ↔ M2 where each node is using a CLTV delta of 40. M1 and M2 are both malicious.

In this example with a CLTV delta of 40, the attacker needs to delay for the CLTV delta + X where X is small. A larger X value gives better chances of attack success. By default, bitcoind has an upper bound of 117 inbound connections. Implementations may not be affected if the minimum allowable CLTV value is high.

Patch

This was fixed with two PR’s that landed in 22.0:

Gregory Sanders · #2 ·

To be extra conservative running a non-listening node makes this, and other of these kinds of attacks, much more difficult.

Eugene · #3 · · in reply to #2

We don’t have native support for it yet in LND, but the other thing people could potentially do is run multiple listening nodes.