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
実践! SRE × AI - ABEMA における AIOps -
tetsuya28
3
230
Snapshot Testing in Practice: Predictable and Reliable SwiftUI Views
fespinoza
0
150
SREでアラート疲れを 解決しよう!
kairim0
1
210
Datadog の学び方 - あるいは、オブザーバビリティを学ぶとは何か
mananyuki
1
500
AI時代に必要な脅威モデリング― 変化の速度に負けない理解とリスク判断
masakane55
5
1.2k
AI駆動開発、viviONの1年 ── うまくいったこと・いかなかったこと
vivion
0
270
ファミコンでPHPを動かす / PHP on the Famicom side b
tomzoh
0
140
不可逆な意思決定を避けながら10億超の顧客データを AI Ready にするデータ基盤設計
baseballyama
1
170
More Freedom on the Same Shared GPU Cluster: A Small Team’s Experience with vCluster
nttcom
0
140
自分で立ててみるLLMサービス
y_sera15
0
140
1万名の社員が使う認証基盤で どう信頼性を担保するか?
kairim0
0
210
味覇で作るパスタが美味い - 20261001_yabaubuki.dev
livesense
PRO
0
110
Featured
See All Featured
Chasing Engaging Ingredients in Design
codingconduct
0
350
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
Balancing Empowerment & Direction
lara
6
1.3k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
390
RailsConf 2023
tenderlove
30
1.6k
Become a Pro
speakerdeck
PRO
31
6.3k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
550
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
480
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
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を積極的に監視することで、攻撃者のプリイメージを確認する 再ブロードキャスト回数が多いほど、その機会は増加する ※ 緩和策であって根本的な対応索ではない。 ※ 実際にこのような攻撃は観測されていない。