リスク警告:「仮想通貨」「ブロックチェーン」の名のもとでの違法な資金調達のリスクに注意してください。—銀行保険監督管理委員会など5部門
検索
ログイン
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
View Market
分析:全過程で約5億6,600万米ドルのBNBが盗まれた
秦晓峰
Odaily资深作者
@QinXiaofeng888
2022-10-07 02:43
この記事は約2416文字で、全文を読むには約4分かかります
CZ: ネットワークは停止されており、ユーザーの資金は安全です。

北京時間の今朝、BNB ChianクロスチェーンブリッジBSCトークンハブが攻撃されました。ハッカーはクロスチェーンブリッジの脆弱性を利用して、2回に分けて合計200万BNB、約5億6,600万米ドル相当を入手しました。(注: BSC トークン ハブは、BNB ビーコン チェーン (BEP2) と BNB チェーン (BEP20 または BSC) 間のクロスチェーン ブリッジです。)

このニュースが出るやいなや、BNBの価格は2時間以内に5%近く下落し、278.7ドルの安値まで下落し、現在価格は284ドル、24時間で4.24%下落した。

BNBチェーンによると、BSCから引き出された資金の暫定推定値は1億ドルから1億1,000万ドルの範囲である。さらに、テザーはハッカーのアドレスを初めてブラックリストに登録しました。 「コミュニティと社内外のセキュリティ パートナーのおかげで、推定 700 万ドルが凍結されました。」

バイナンスの創設者であるCZ氏はソーシャルメディアに、「バイナンスはすべてのバリデーターにBSCネットワークを停止するよう要請した。ユーザーの資金は安全である。ユーザーに迷惑をかけたことを謝罪し、それに応じてさらなる最新情報を提供する」と投稿した。

副題

samczsun の分析記事は次のとおりです。

(1) 5 時間前、攻撃者はバイナンス ブリッジから 200 万 BNB (約 5 億 6,600 万ドル) を盗みました。それ以来、私はさまざまな関係者と緊密に協力して、このすべてがどのように起こったのかを解明してきました。

(2) 事件の原因は、@zachxbt が攻撃者のアドレスを突然私に送ってきたことです。クリックすると、数億ドル相当のアカウントが表示されました。暴走プロジェクトが存在したか、大規模なハッキングが進行していたかのどちらかです。

(3) 最初は @VenusProtocol がまたハッキン​​グされたのかと思いました。しかし、攻撃者が「本当に」2 億ドル以上を Venus に入金したと判断するのに、時間はかかりませんでした。そのとき、私はその資金がどこから来たのかを把握する必要がありました。

(4) 答えは、攻撃者がどういうわけか Binance クロスチェーン ブリッジを説得して、彼ら (ハッカー) に 1,000,000 BNB を 2 回直接送信させたということです。

(5) Binance が Web3 史上最大の「ギフト パッケージ」を発売したか、攻撃者が重大な脆弱性を発見したかのどちらかです。まず、攻撃者のトランザクションと正当な出金を比較します。最初に気づいたのは、攻撃者は常に同じ高さ (110217401) を使用していましたが、正規の出金者は 270822321 のようなはるかに高い高さを使用していたことでした。

(6) 攻撃者の証明は、正当な引き出しの証明よりも大幅に短いことにも気づきました。これら 2 つの事実により、攻撃者はこの特定のブロック (110217401) の証拠を偽造する方法を見つけたと確信できます。さて、これらの証明がどのように機能するかを理解する必要があります。

(7) Binance には、IAVL ツリーを検証するための特別なプリコンパイルされたコントラクトがあります。 IAVL ツリーについて何も知らなくても心配する必要はありません。95% は私が知らないからです。幸いなことに、あなたと私に必要なのは残りの 5% だけです。

(8) 基本的に、IAVL ツリーを検証するときは、「操作」のリストを指定します。 Binance クロスチェーン ブリッジには通常、「iavl:v」操作と「multistore」操作の 2 つの操作が必要です。実装は次のとおりです: https://github.com/bnb-chain/bsc/blob/46d185b4cfed54436f526b24c47b15ed58a5e1bb/core/vm/lightclient/multistoreproof.go#L106-L125

(9) 証明を偽造するには、両方の操作が成功する必要があり、最後の操作 (マルチストア) が固定値 (指定されたブロックのハッシュ: 110217401) を返す必要があります。

(10) 実装を見ると、ルート ハッシュの操作は不可能であるか、少なくとも非常に難しいことがわかります。これは、入力値がコミット ID のいずれかと等しい必要があることを意味します。

(11) 「multistore」オペレーションの入力値は、「iavl:v」オペレーションの出力値です。これは、値の検証を通過させながら、ここでルート変数を何らかの方法で制御したいことを意味します。

(12) では、ルートハッシュを計算するにはどうすればよいでしょうか?これは COMPUTEHASH と呼ばれる関数で発生します。非常に高いレベルでは、各パスとリーフ ノードを再帰的にたどり、大量のハッシュを実行します。

https://github.com/cosmos/iavl/blob/de0740903a67b624d887f9055d4c60175dcfa758/proof_range.go#L237-L290

(13) 実装の詳細は実際には重要ではありません。重要なのは、ハッシュ関数の動作方法により、基本的に、どの (path, nleaf) ペアでも一意のハッシュが得られると確実に言えるということです。証拠を改ざんしたい場合は、これらを変更しない必要があります。

(14) 正当なトランザクションで証明がどのように配置されているかを見ると、非常に長いパスがあり、内部ノードはなく、リーフ ノードが 1 つだけあり、このリーフ ノードには悪意のあるペイロードのハッシュが含まれていることがわかります。このリーフ ノードを変更できない場合は、新しいリーフ ノードを追加する必要があります。

(15) もちろん、新しいリーフ ノードを追加する場合は、それに一致する新しい内部ノードも追加する必要があります。

(16) さて、私たちは最後のハードルに直面するだけです。実際に COMPUTEHASH に必要なルート ハッシュを返すにはどうすればよいでしょうか?最終的には、ゼロ以外の右ハッシュを含むパスが必要になることに注意してください。一致するものが見つかった場合、それが中間ルート ハッシュと一致すると主張します。

(17) 必要なハッシュを把握できるように、コードを少しインストルメントしてみましょう。その後、残っているのはそれをまとめるだけです。法的証拠を取得して、次のように変更します。

1) 偽のペイロード用に新しいリーフ ノードを追加します。

2) 証明者を満足させるために空の内部ノードを追加します。

3) 正しいルートハッシュで早期に終了するようにリーフノードを調整します。

https://gist.github.com/samczsun/8635f49fac0ec66a5a61080835cae3db…

(18) これは攻撃者が使用する方法とまったく同じではないことに注意してください。それらの証明パスははるかに短く、それらがどのように正確に生成されたかはわかりません。ただし、エクスプロイトの残りの部分は同じであり、それをゼロから構築する方法を示すことは価値があると考えています。

(19) 要約すると、Binance クロスチェーン ブリッジの証明を検証する方法にバグがあり、攻撃者が任意のメッセージを偽造できる可能性があります。幸いなことに、攻撃者が偽造したメッセージは 2 件だけでしたが、被害はさらに深刻になっていた可能性があります。

BNB
Paradigm
Odaily公式コミュニティへの参加を歓迎します
購読グループ
https://t.me/Odaily_News
チャットグループ
https://t.me/Odaily_CryptoPunk
公式アカウント
https://twitter.com/OdailyChina
チャットグループ
https://t.me/Odaily_CryptoPunk