@@ -8,9 +8,8 @@ layout: newsletter
88lang : en
99---
1010This week's newsletter summarizes the disclosure of an issue affecting
11- the safety of routed LN payments, announces a new presigned vault
12- proposal, and publishes a field report from Suredbits about building a
13- high availability LN node. Also included are our regular sections with
11+ the safety of routed LN payments and announces a new presigned vault
12+ proposal. Also included are our regular sections with
1413popular questions and answers from the Bitcoin StackExchange,
1514announcements of releases and release candidates, and descriptions of
1615notable code changes in popular Bitcoin infrastructure projects.
@@ -19,9 +18,7 @@ notable code changes in popular Bitcoin infrastructure projects.
1918
2019- ** Review the disclosure of a potential LN issue:** as explained in the
2120 * news* section below, a public disclosure this week describes a new
22- method for stealing money from LN routing nodes (unaffected are
23- endpoint nodes that are only the initial spenders or final receivers
24- of payments). The issue partly overlaps with a previous well-known
21+ method for stealing money from LN nodes. The issue partly overlaps with a previous well-known
2522 issue that has not been exploited (to our knowledge) because almost
2623 all onchain transactions relayed in the past two years confirmed
2724 relatively quickly even if they only paid the default minimum relay
@@ -35,7 +32,7 @@ notable code changes in popular Bitcoin infrastructure projects.
3532- ** New attack against LN payment atomicity:** Matt Corallo started a
3633 thread across both the [ Lightning-Dev] [ corallo thread ld ] and
3734 [ Bitcoin-Dev] [ corallo thread bd ] mailing lists disclosing an attack
38- discovered during [ discussion] [ BOLTs #688 ] about allowing LN
35+ discovered during a [ discussion] [ BOLTs #688 ] about allowing LN
3936 commitment transactions to be [ CPFP] [ topic cpfp ] fee bumped via
4037 [ anchor outputs] [ topic anchor outputs ] . We'll describe the attack
4138 using an extended example: Alice uses an LN channel to send Bob a Hash
@@ -45,7 +42,7 @@ notable code changes in popular Bitcoin infrastructure projects.
4542 - If Bob discloses the preimage for ` <hash> ` , he can spend 1 BTC of
4643 Alice's money
4744
48- - Otherwise, after 80 blocks, Alice can spend that 1 BTC back to
45+ - Otherwise, after 80 blocks, Alice can refund that 1 BTC back to
4946 herself
5047
5148 Alice also told Bob that the goal of her payment is to pay Mallory, so Bob
@@ -54,7 +51,7 @@ notable code changes in popular Bitcoin infrastructure projects.
5451 - If Mallory discloses the preimage for ` <hash> ` , she can spend 1
5552 BTC of Bob's money (we're ignoring routing fees in this example)
5653
57- - Otherwise, after 40 blocks, Bob can spend his 1 BTC back to
54+ - Otherwise, after 40 blocks, Bob can refund that 1 BTC back to
5855 himself
5956
6057 Although the above HTLCs are usually created and settled offchain,
@@ -70,7 +67,7 @@ notable code changes in popular Bitcoin infrastructure projects.
7067 Alice (either onchain or offchain). Or, if Bob doesn't see a
7168 preimage settlement transaction, Bob can create his own refund
7269 settlement transaction after 40 blocks that takes back his 1 BTC,
73- allowing him to also refund Alice her 1 BTC (again, either onchain
70+ allowing him to also initiate the refund of Alice's 1 BTC (again, either onchain
7471 or offchain). In either case, this leaves everyone in compliance
7572 with the intent of their contracts.
7673
@@ -102,7 +99,7 @@ notable code changes in popular Bitcoin infrastructure projects.
10299 Alice-Bob HTLC once its 80 block timeout expires. When Mallory's
103100 preimage settlement transaction does eventually confirm, Mallory
104101 gets the 1 BTC that Bob offered her in the Bob-Mallory HTLC. This
105- leaves Bob 1 BTC poorer than he started.
102+ leaves Bob 1 BTC poorer than when he started.
106103
107104 Several solutions were considered in the thread, but all had
108105 problems or involved significant tradeoffs:
@@ -111,12 +108,12 @@ notable code changes in popular Bitcoin infrastructure projects.
111108 monitor the Bitcoin P2P relay network and learn about Mallory's
112109 settlement transaction. Some LN nodes such as Eclair already do
113110 this and it seems like a [ reasonable amount of extra
114- burden] [ osuntokun reasonable ] since the problem only affects
115- routing nodes (like Bob). Nodes that only send or receive
116- payments on behalf of themselves are unaffected, so everyday users
111+ burden] [ osuntokun reasonable ] since the problem only directly affects
112+ routing nodes (like Bob). Nodes that just send or receive
113+ payments on behalf of themselves are only indirectly affected, [ ^ non-routing-issues ] so everyday users
117114 could still run lightweight LN clients on mobile devices.
118- Unfortunately, not all full nodes receive the same transactions
119- even when everything is working perfectly and there are techniques
115+ Unfortunately, not all full nodes receive the same transactions as other nodes
116+ even when everything is working perfectly. Worse, there are techniques
120117 attackers like Mallory can use to [ send different conflicting
121118 transactions] [ corallo mempool not guaranteed ] to different peers
122119 (for example, sending the pinned preimage settlement transaction
@@ -142,11 +139,11 @@ notable code changes in popular Bitcoin infrastructure projects.
142139 This would require those transactions to be larger (increasing
143140 onchain fees) and presigned (reducing flexibility). This would
144141 only directly affect channels which are unilaterally closed while payments
145- are pending, which is already a situation that that can
142+ are pending, which is already a situation that can
146143 significantly increase onchain costs and so is something users try
147144 to avoid. However, raising the cost of onchain enforcement also
148- raises the minimum value of payments that can be sent trustlessly
149- through LN with economical enforcement . Depsite these challenges,
145+ raises the minimum practical value of payments that can be sent trustlessly
146+ through LN. Despite these challenges,
150147 as of this writing, this appears to be the most preferred
151148 solution.
152149
@@ -163,9 +160,7 @@ notable code changes in popular Bitcoin infrastructure projects.
163160 to reclaim her funds from Bob, again creating the opportunity for
164161 Bob to end up both paying Mallory and giving a refund to Alice.
165162 (This existing issue is what developers were working on fixing when
166- the new issue was discovered. Its ultimate solution also depends on
167- full nodes being able to perform [ package relay] [ Bitcoin Core
168- #14895 ] .)
163+ the new issue was discovered.[ ^ package-relay ] )
169164
170165 So far we're unaware of any real-world losses due to onchain fee
171166 management problems in LN, possibly in part because the past two
@@ -180,8 +175,8 @@ notable code changes in popular Bitcoin infrastructure projects.
180175 Current defaults in popular LN nodes are [ 14] [ cl ced ] for
181176 C-Lightning, [ 40] [ lnd ced ] for LND, [ 72] [ rl ced ] for Rust-Lightning,
182177 and [ 144] [ eclair ced ] for Eclair. Note that increasing the value
183- will make your channels less desirable to spenders who are choosing
184- routes for their payments as higher values increase the worst case
178+ will make your channels less desirable to spenders,
179+ as higher values increases the normal worst case
185180 amount of time a payment could be stuck waiting to be settled.
186181
187182- ** Multiparty vault architecture:** Antoine "Darosior" Poinsot
@@ -230,8 +225,6 @@ endcomment %}
230225
231226## Releases and release candidates
232227
233- FIXME: harding update to latest versions Tuesday afternoon
234-
235228* New releases and release candidates for popular Bitcoin infrastructure
236229projects. Please consider upgrading to new releases or helping to test
237230release candidates.*
@@ -270,10 +263,32 @@ version 0.20.*
270263
271264## Special thanks
272265
273- We thank Antoine Riard and ZmnSCPxj for reviewing drafts of this
266+ We thank Antoine Riard, ZmnSCPxj, and Matt Corallo for reviewing drafts of this
274267newsletter and helping us understand the details of the LN atomicity
275268issue. Any remaining errors are the fault of the newsletter author.
276269
270+ ## Footnotes
271+ [ ^ package-relay ] :
272+ The ultimate solution to deal with arbitrary feerates in LN also
273+ depends on Bitcoin full nodes being able to perform [ package
274+ relay] [ Bitcoin Core #14895 ] , a feature that's long been discussed
275+ but never satisfactorily implemented. For now, LN commitment
276+ transactions can usually just [ pay slightly higher] [ corallo slightly
277+ higher] feerates than strictly necessary to avoid the need for
278+ package relay.
279+
280+ [ ^ non-routing-issues ] :
281+ Although the only known way to use this attack to steal money
282+ directly is by abusing a routing node (such as Bob in
283+ Alice→Bob→Mallory), when the same attack of delaying the preimage
284+ settlement and blocking the refund settlement is executed against a
285+ spender (such as Alice in Alice→Mallory), it may produce a "payment
286+ failed" error that causes the user to initiate a second payment
287+ without realizing the first payment hasn't been revoked. This
288+ [ indirect attack] [ corallo send twice ] can perhaps be dealt with by warning the user that
289+ the payment is stuck---not failed---and that sending additional
290+ payments could result in losses.
291+
277292{% include references.md %}
278293{% include linkers/issues.md issues="688,15761,17509,14895" %}
279294[ bitcoin core 0.20.0 ] : https://bitcoincore.org/bin/bitcoin-core-0.20.0
@@ -299,3 +314,5 @@ issue. Any remaining errors are the fault of the newsletter author.
299314[ rl ced ] : https://github.com/rust-bitcoin/rust-lightning/blob/12e2a81e1daf635578e1cfdd7de55324ed04bd48/lightning/src/ln/channelmanager.rs#L430
300315[ simplicity ] : https://blockstream.com/simplicity.pdf
301316[ bitcoin core default ancestor limit ] : https://github.com/bitcoin/bitcoin/blob/9fac600ababd8edefbe053a7edcd0e178f069f84/src/validation.h#L56
317+ [ corallo slightly higher ] : https://github.com/bitcoinops/bitcoinops.github.io/pull/394#discussion_r416014263
318+ [ corallo send twice ] : https://github.com/bitcoinops/bitcoinops.github.io/pull/394#discussion_r416099907
0 commit comments