Skip to content

Re-pin rust-lightning to v0.2.7 + Zeus patches - #8

Merged
kaloudis merged 4 commits into
zeusfrom
rl-0.2.7-security-bump
Oct 3, 2026
Merged

kaloudis merged 4 commits into
zeusfrom
rl-0.2.7-security-bump

Conversation

@kaloudis

@kaloudis kaloudis commented Oct 2, 2026

Copy link
Copy Markdown

Supersedes #5. This branch contains #5's three commits plus the 0.2.7 re-pin, so merging this one merges both.

Re-pins rust-lightning to ZeusLN/rust-lightning 4e5cba988 (anchored by branch zeus-0.2.7-ldk-node): upstream v0.2.7 plus the same five Zeus patches as zeus-0.2 (LSPS7 client, cooperative close feerate floor bypass, BOLT11 route hints override + tests, LSPS5 test config). git range-diff against the 0.2.5 set shows only moved hunk context, no content changes. The pin is now by rev instead of branch.

This deliberately excludes the two reestablish / remote-signer commits on zeus-0.2.7 (963be1655, 4371384d3). Those were added for VLS and are not needed with the in-process KeysManager.

Picks up the 0.2.6 and 0.2.7 security fixes, including:

  • a peer that acks a state update, reconnects, and claims it never got it can no longer get us to sign a conflicting commitment at the same index (#5057)
  • inbound channels can no longer get us to accept an unbroadcastable commitment transaction (#4976)
  • an LSPS2 intercepted HTLC can no longer lie about its amount before the JIT channel open (#5042)
  • a crafted funding transaction can no longer make Electrum sync pull a large number of transactions (#4867)
  • a bogus HTLC rejection can no longer leave a ChannelManager that fails to deserialize (#4982)

Testing:

  • rust-lightning at 4e5cba988: lightning lib 1219 passed (9 ignored), lightning-liquidity 102 passed
  • ldk-node: cargo check --all-targets clean, cargo test --lib 23/23
  • Cargo.lock changes are limited to the rust-lightning crates
  • Swift and Kotlin bindings regenerate with no diff (FFI surface unchanged)
  • Android .so files are 16 KB aligned. Both Android and iOS artifacts embed RL checkout 4e5cba9

Not run: integration tests (bitcoind/electrs), device testing.

Release: v0.7.0-zeus-rl-0.2.7 (pre-release)

Move the fork off the stale lsps7-for-ldk-node-close-fix branch (a
Dec 2025 snapshot of upstream main missing every 0.2.1-0.2.5 fix,
including the 0.2.3 'Through the Loupe' and 0.2.5 'MegaScan' security
batches) onto ZeusLN/rust-lightning zeus-0.2, which is upstream 0.2
branch head (= v0.2.5) plus the same five Zeus patches:

- LSPS7 (Channel Lease Extensions) client handler
- cooperative close feerate floor bypass
- BOLT11 route hints override (+ tests)

Since v0.2.5 predates upstream #4175 (impl-Future trait methods),
this also reverts 84bf2a5 ("Update to new upstream rust-lightning
with impl Futures") and adapts the pieces written after it:

- DualStore's async KVStore impl returns boxed futures again
- builder passes Arc-wrapped DualStore to build_with_store
- test helpers updated for LDK 0.2.5 test API (check_closed_event
  is_check_discard_funding arg) and the fork's 3-arg bolt11 send

The pre-existing integration-test compile breakage (bolt11 send call
sites in tests/ and benches/, present since the retry-timeout param
was added) is untouched except where the revert crossed it.
Move the rust-lightning pin from zeus-0.2 (v0.2.5) to
ZeusLN/rust-lightning 4e5cba988, which is upstream v0.2.7 plus the
same five Zeus patches carried on zeus-0.2 (LSPS7 client, cooperative
close feerate floor bypass, BOLT11 route hints override + tests, LSPS5
test config fix). The patch contents are unchanged; only hunk context
moved in the rebase.

Pin by rev instead of branch so the lockfile can't drift if the
branch is rebased.

This picks up the 0.2.6 and 0.2.7 security fixes, including:
- conflicting commitment signed at the same index after a peer fakes
  a lost revoke_and_ack on reconnect (#5057)
- unbroadcastable commitment accepted on inbound channels (#4976)
- LSPS2 intercepted HTLC amount not checked before JIT open (#5042)
- Electrum sync amplification via crafted funding tx (#4867)
- bogus-HTLC rejection leaving an undeserializable ChannelManager (#4982)

No API changes affect ldk-node; cargo check --all-targets is clean.
@kaloudis
kaloudis force-pushed the rl-0.2.7-security-bump branch from 5f4194f to 6e0f337 Compare October 3, 2026 00:20
@kaloudis
kaloudis merged commit 4687d9f into zeus Oct 3, 2026
36 checks passed
@kaloudis
kaloudis deleted the rl-0.2.7-security-bump branch October 3, 2026 01:21
kaloudis added a commit to kaloudis/zeus that referenced this pull request Oct 3, 2026
The release was rebuilt from the merged ZeusLN/ldk-node#8 commit
(4687d9f) instead of the pre-merge branch head, so both asset hashes
changed. Same rust-lightning pin (4e5cba988).
kaloudis added a commit to ZeusLN/zeus that referenced this pull request Oct 5, 2026
…y fixes)

Moves the embedded LDK Node build from rust-lightning v0.2.5 to v0.2.7,
which picks up the 0.2.6 and 0.2.7 security releases. Same Zeus patch
set as before. Fork changes: ZeusLN/ldk-node#8.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant