]> git.bitcoin.ninja Git - rust-lightning/commit
Correctly handle BADONION onion errors
authorMatt Corallo <git@bluematt.me>
Wed, 7 Sep 2022 21:08:22 +0000 (21:08 +0000)
committerMatt Corallo <git@bluematt.me>
Tue, 13 Sep 2022 02:21:35 +0000 (02:21 +0000)
commit5e07c60f9e6ef6d680d1a55011077c548c411c8d
tree909f88a088c60f2f6fc422227e5a6bbaffa9d471
parent301efc8a81720655b63b0b3b5bdada670ea088cc
Correctly handle BADONION onion errors

Currently we entirely ignore the BADONION bit when deciding how to
handle HTLC failures. This opens us up to an attack where a
malicious node always fails HTLCs backwards via
`update_fail_malformed_htlc` with an error code of
`BADONION|NODE|PERM|X`. In this case, we may decide to interpret
this as a permanent node failure for the node encrypting the onion,
i.e. the counterparty of the node who sent the
`update_fail_malformed_htlc` message and ultimately failed the
HTLC.

Thus, any node we route through could cause us to fully remove its
counterparty from our network graph. Luckily we do not do any
persistent tracking of removed nodes, and thus will re-add the
removed node once it is re-announced or on restart, however we are
likely to add such persistent tracking (at least in-memory) in the
future.
lightning/src/ln/onion_utils.rs