Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Replacement Cycling Attack
Search
shigeyuki azuchi
March 21, 2024
Technology
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Replacement Cycling Attack
GBECの解説動画のスライドです。
https://goblockchain.network/2024/03/replacement-cycling-attack/
shigeyuki azuchi
March 21, 2024
More Decks by shigeyuki azuchi
See All by shigeyuki azuchi
SLH-DSA (SPHINCS+)
azuchi
0
18
Hyper Tree
azuchi
0
19
FORS
azuchi
0
32
クラスターmempool
azuchi
0
44
W-OTS+
azuchi
0
50
Shorのアルゴリズム
azuchi
0
71
DahLIAS: Discrete Logarithm-Based Interactive Aggregate Signatures
azuchi
0
58
Fiat-Shamir変換と注意点
azuchi
0
260
AssumeUTXOを利用したブロックチェーンの同期
azuchi
0
70
Other Decks in Technology
See All in Technology
今こそ知りたいAmplifyGen2
mkdev10
2
160
「事実」を「計測」して、「解釈」する 〜AWS Lambdaのメモリ最適解の見つけ方〜
maimyyym
0
120
ai_cording_with_k8s_knowledge.pdf
mochizuki875
1
310
AIは爆速なのに、私が詰まっていた話 ― 音声入力と鳴くマスコットでボトルネックを削る
yama3133
0
550
事業活動を AI Ready にする攻めと守りのデータエンジニアリング / data-engineering-for-ai-ready-business
pei0804
5
2k
メルペイ 会計システム概要と歴史
mewuto
0
190
分析AIエージェントを育てる、動く環境を育てる
codatum
1
350
あなたの知らないAmazon VPC Route Server/Amazon VPC Route Server you don't know about
masakiokuda
2
230
AgentCoreで実践するハーネスエンジニアリング
yakumo
1
290
自作バイナリを動かす「入口」8選
puhitaku
1
860
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
1
230
実体験から学ぶ分析エージェントの開発と運⽤
recruitengineers
PRO
6
1.5k
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
The Curious Case for Waylosing
cassininazir
1
560
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
510
Design in an AI World
tapps
1
350
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
470
We Have a Design System, Now What?
morganepeng
55
8.4k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Un-Boring Meetings
codingconduct
0
440
Being A Developer After 40
akosma
91
590k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Transcript
Replacement Cycling Attack
1 Replacement Cycling Attack 2023年10月に開示されたLNプロトコルの脆弱性 https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-October/021999.html
ルーティングノードに対する転送額(HTLC)を盗む攻撃の ※ M1とは直接チャネルがつながっていなくてもOK ※転送ノードでなければ影響はなし 攻撃者M2 攻撃者M1 被害者 A Channel M1 ⇔ A • Balance for M1 • Balance for A • Forward Payment(HTLC) Channel A ⇔ M2 • Balance for A • Balance for M2 • Forward Payment(HTLC)
2 RBF(Replace by Fee) 未承認のトランザクションを置換するための仕組み 参考:RBFを使ったトランザクションの置換 https://goblockchain.network/2021/07/rbf/
置換する際のルール: • 置換可能性のシグナルがある(Opt-in RBFの場合は) • 新しいトランザクションは元のトランザクションより手数料が高いこと ◦ ノードの最小リレー手数料率が加味されていること デフォルト:1 sat/byte • 置換されるトランザクションとその子孫の個数の合計が100未満であること (大規模な置換が発生しないように)
3 支払い転送時の動作 攻撃者M2 攻撃者M1 被害者 A Channel M1 ⇔ A
• Balance for M1 • Balance for A • Forward Payment(HTLC 1) Timelock(T + Δ) Channel A ⇔ M2 • Balance for A • Balance for M2 • Forward Payment(HTLC 2) Timelock(T) HTLC 1とHTLC 2はプリイメージが同じハッシュ値Hを使用しており、 1. M2がプリイメージをAに開示することで、HTLC 2を決済(A→M2に支払い) 2. Aは開示されたプリイメージを使って、HTLC 1を決済(M1→Aに支払い) →下流で決済された情報を使って上流の転送が決済される もしくは、あるブロック高Tにおいてタイムアウト 1. ブロック高Tになったら、HTLC 2を払い戻す(HTLC 2の金額はAの残高に戻る) 2. ブロック高T+Δになったら、HTLC1を払い戻す(HTLC 1の金額はM1の残高に戻る) →下流がタイムアウト後、Δブロック後に上流もタイムアウトする
4 攻撃方法 攻撃者M2 被害者 A Channel A ⇔ M2
• Balance for A • Balance for M2 • HTLC 2(Timelock T) ① ブロック高がTになってもM2がプリイメージを公開しない、 かつ応答もない場合、AはチャネルのコミットメントTxを ブロードキャストし、チャネルを閉じる。 ②コミットメントTxが承認されたら、Timeout Txを ブロードキャストして資金を取り戻す。 HTLC 2 Timeout Tx • HTLC 2の金額をAへ払い戻し Cycle Parent Tx • M2の任意のUTXO Cycle Child Tx • M2への送金 ②攻撃者M2は、その間2つの低手数料の親子Txを作成し ブロードキャスト(チャネルとは無関係なTx) HTLC2 Preimage Tx • M2への送金 ③ 攻撃者M2は、 HTLC2 Timeout Txがブロードキャストされた後 元々のHTLCのプリイメージを使用して、 コミットメントTxとCycle Parent TxのUTXOを回収する 高手数料率のHTLC2 Preimage Txをブロードキャストする
5 攻撃方法 mempoolの動作 Channel A ⇔ M2 •
Balance for A • Balance for M2 • HTLC 2(Timelock T) HTLC 2 Timeout Tx • HTLC 2の金額をAへ払い戻し Cycle Parent Tx • M2の任意のUTXO Cycle Child Tx • M2への送金 HTLC2 Preimage Tx • M2への送金 競合 競合 High Fee Low Fee RBFにより、Cycle Child TxとHTLC 2 Timeout Txは HTLC2 Preimage Txに置き換わる Aの払い戻しTxはネットワーク上から無くなる。 一方で、AはHTLC Preimage Txを確認すれば、 プリイメージが分かるので上流のHTLC 1を決済できる?
6 攻撃方法 mempoolの動作 Channel A ⇔ M2 •
Balance for A • Balance for M2 • HTLC 2(Timelock T) Cycle Parent Tx • M2の任意のUTXO HTLC2 Preimage Tx • M2への送金 競合 High Fee RBFにより、Cycle Parent TxとHTLC 2 Preimage Txは、 Replace Parent Txに置き換わる。 結果、Aの払い戻しもプリイメージを使った回収もキャンセルされる。 Replace Parent Tx • M2への送金 High Fee 攻撃者は、AのHTLC2 Timeout Txをmempoolから排除した後、 高手数料のCycle Parent Txの競合Txを作成し、ブロードキャストする Aの払い戻しTxはネットワーク上から無くなる。 一方で、AはHTLC Preimage Txを確認すれば、 プリイメージが分かるので上流のHTLC 1を決済できる? ただ、AのノードにHTLC2 Preimage Txが届かなければ、 プリイメージの確認はできない。
7 攻撃方法 一通りの攻撃が終わると、mempool内には、HTLC2を使用するTxはなくなる。 攻撃者M1 被害者 A Channel M1 ⇔
A • Balance for M1 • Balance for A • Forward Payment(HTLC 1) Timelock(T + Δ) T + Δになると、上流のAへの転送(HTLC 1)の払い戻しが発生する。 下流の請求に失敗し、上流がタイムアウトするとAはHTLCの金額を失う。 攻撃者は、この攻撃を繰り返す。。 Channel A ⇔ M2 • Balance for A • Balance for M2 • HTLC 2(Timelock T) 被害者 A mempoolから消えたことで、Aは再度HTLC 2 Timeout Txを ブロードキャストするが、 HTLC 2 Timeout Tx • HTLC 2の金額をAへ払い戻し ・・・
8 攻撃を成立させるための条件 • 攻撃者は被害者との間に2つのチャネルを開く • そのチャネルを介して支払いを転送する • 被害者が攻撃者のプリイメージを確認できない
◦ 被害者はローカルmempoolを積極的に監視できる ◦ 攻撃者は被害者のノードにプリイメージが渡らないようTxをブロードキャストし、 被害者が気付かない内に置換を終わらせる
9 LNノードに導入された緩和策 • 再ブロードキャストの頻度を上げる 1ブロック(約10分)毎に再ブロードキャストしてたのを、高頻度に ◦ 被害者は同じTimeout Txをブロードキャストするだけ
手数料を増やして攻撃者の手数料負担を促進するということも考えられる ◦ 攻撃者は置換の度に少なくとも最小中継手数料分の手数料負担が発生し、 ブロードキャスト回数が増えるほどコスト負担に繋がる • CLTV Expire Delta(Δ)の値を増やす Δが大きいほど被害者はTxを再ブロードキャストする機会が増える • mempoolのスキャン mempoolを積極的に監視することで、攻撃者のプリイメージを確認する 再ブロードキャスト回数が多いほど、その機会は増加する ※ 緩和策であって根本的な対応索ではない。 ※ 実際にこのような攻撃は観測されていない。