P700 / / Crypto

Lightning network security: LND, Core Lightning and LDK fixes

LND, Core Lightning and LDK all shipped security fixes in ten days. What each fixes and what to do if you run a node or a wallet.

Diagram of the Lightning Network protocol suite, showing its layers and BOLT specifications
Photo: Renepick, CC BY-SA 4.0

Lightning network security had a busy week. All three main Lightning node implementations shipped security fixes in under ten days. LND switched off a feature that opened a demonstrated remote exploit path through a Linux kernel bug. Core Lightning 26.06.10 fixed flaws in channel opens, HTLC handling and remote access. LDK closed a privacy leak in private channels. If you run a node, check your version today. If you only use a phone wallet, ask your provider whether it has updated.

None of the reports below say that anyone's coins were stolen through these bugs. They are fixes, not post-mortems. The point is to install them before someone turns them into an exploit.

LND: a Linux kernel bug, and why your node was exposed

On 30 October Lightning Labs released LND v0.21.6-beta and v0.20.7-beta. The release notes describe CVE-2026-98432 as "a use-after-free in the Linux kernel's IPv4 TCP stack". The kernel bug itself is not specific to Multipath TCP (MPTCP), but the remote exploit that was demonstrated needs an MPTCP listener. Go 1.24 and later turn MPTCP listeners on by default, and LND is written in Go, so a stock LND node on Linux was listening in exactly the way the exploit needs.

The new releases disable MPTCP listeners in LND by default. Lightning Labs is clear that this is "a mitigation, not a fix: the kernel patch is the only fix." Windows and macOS are not affected.

What to do on a Linux LND node:

  1. Upgrade to v0.21.6-beta (or v0.20.7-beta if you are on the 0.20 line). Neither release has a database migration.
  2. Turn MPTCP off for the whole machine: sudo sysctl -w net.mptcp.enabled=0. The LND update only covers LND, not the other services on the same box, such as your Bitcoin node, web server or wallet UI.
  3. Install a patched kernel as soon as your distribution ships one.

Can't upgrade right now? Start your current binary with GODEBUG=multipathtcp=0. And do not set it back to 1 until the kernel is patched.

Core Lightning 26.06.10: channels, HTLCs and runes

Core Lightning (CLN) released 26.06.10 on 4 November. The maintainers write: "We strongly encourage everyone to upgrade to 26.06.10 as soon as practical." It follows the 26.06.9 security fixes and a separate 2 November crash fix. It is also the second big Lightning security story in two weeks, after the BOLT11 invoice rule change.

The fixes, in plain words:

  • Dual funding and splicing: the node now checks the peer's signatures on the shared transaction, as the spec requires. Dual funding is still an experimental feature.
  • HTLC resolution: a payment that had just been removed could be mistaken for a live one with the same hash, amount and expiry. The node could then give up on a payment that its peer could still claim.
  • Dust limit: CLN now refuses a channel open where the peer asks for a dust limit above 5,000 sats. Before, a peer could set it high enough that part of your balance disappeared into fees in a force close.
  • Commando and runes: commando lets an app run commands on your node remotely, and runes are the passwords for it. Odd parameter spellings could slip past rune restrictions, a reused command ID could crash commando, and oversized runes wasted CPU.

The maintainers held back the test cases for the security fixes, to make it harder to work backwards from the patch to an exploit.

Besides upgrading, tidy up your runes. Bind every rune used over commando to the node ID of the app that uses it (an id restriction), blacklist any rune you can't account for with blacklistrune, and issue tighter replacements. Don't accept zero-confirmation channels from peers you don't trust. One catch: if you ever ran CLN's master branch, you can't go back to 26.06.x, because the database schema is newer.

LDK: private channels were less private than they looked

LDK is the toolkit many Lightning wallets and apps are built on. On 25 October it merged a fix for a probe that could link an unannounced, "private" channel to the on-chain output that funds it. An attacker connected to both ends of a channel could guess the channel's real short channel ID, send an onion message through those two nodes back to itself, and see whether it came back. If it did, the guess was right, and the short channel ID points to the exact block, transaction and output behind the channel.

This leaks privacy, not money. No funds or keys are at risk. CryptoSlate could not confirm which LDK release ships the fix, so if you use an LDK-based wallet, check its changelog or ask the developers.

Lightning network security: a short checklist

  • Know which implementation you run: LND, Core Lightning, or an app built on LDK. Node-in-a-box systems often run LND underneath.
  • LND on Linux: upgrade, disable MPTCP on the host, then patch the kernel.
  • Core Lightning: upgrade to 26.06.10, then review your runes.
  • Phone wallets: update from the app store and read the release notes.
  • Subscribe to your implementation's release announcements.

We take Lightning at the ZOLAK crypto bar in Vilnius. A week like this is a reminder that "self-custody" also means updating your own software.

Not financial advice.

Sources

Crypto · Lightning