10 月 6 日、BNB Chain は Twitter で、プラットフォーム上の異常攻撃のため、BSC ネットワークが一時停止されたことを発表しました。攻撃者は、クロスチェーンブリッジである BSC Token Hub の脆弱性を利用し、約 700-800 億ドルを不正に獲得しました。
Hyperlab:BNB Chain 攻撃の全体的な分析
Hyperlab:BNB Chain 攻撃の全体的な分析
取引アドレス:Transaction Address
https://bscscan.com/tx/0xebf83628ba893d35b496121fb8201666b8e09f3cbadf0e269162baa72efe3b8b
ウォレットアドレス:Wallet Address
https://bscscan.com/address/0x489a8756c18c0b8b24ec2a2b9ff3d4d447f79bec
Hyperlab セキュリティラボによると、@samczsun の分析によれば、この攻撃の原因は、BSC クロスチェーンブリッジの検証方法のバグであり、このバグにより攻撃者は任意のメッセージを偽造することができました。この攻撃では、攻撃者は BSC クロスチェーンブリッジの検証を通過し、200 万枚の BNB を攻撃者のアドレスに送信することができました。
幸いなことに、攻撃者はトークンを外部のチェーンに移すのに十分速くなかったため、BNB Chain はほとんどのトークンが移動される前にすべての取引活動を凍結することができました。
Hyperlab セキュリティラボの提案:現在、ブロックチェーン業界は急速に発展しており、クロスチェーン技術の発展により、異なるブロックチェーン間の相互運用が可能になりました。クロスチェーンブリッジは、最も広範な適用範囲を持つクロスチェーンソリューションであり(ほとんどの双方向クロスチェーンブリッジは、ロックとミント、バーンとミントのモデルの組み合わせを使用しています)、同時に非常に魅力的なターゲット(ハッカーにとって)にもなっています。バックエンドの脆弱性、マルチシグの脆弱性、スマートコントラクトの脆弱性は、クロスチェーンブリッジの一般的なセキュリティリスクです。今回の BSC クロスチェーンブリッジの攻撃事件も、クロスチェーンコントラクトプロトコルの脆弱性(検証方法)に対する攻撃です。これは、Nomad が実行不良のスマートコントラクトの更新により約 1.9 億ドルを盗まれた別のクロスチェーンブリッジ攻撃事件を思い起こさせます。総じて、契約に対する攻撃ベクトルは緩和が難しいです。Hyperlab は、これらのリスクに対処するためにより強力なセキュリティ監査を採用することを提案しています。プロトコルの開発者は十分なセキュリティ意識を持ち、クロスチェーンブリッジの設計上の攻撃リスクを十分に理解し、コードのロジックの詳細に注意を払う必要があります。
付録
@samczsun の分析の詳細は以下の通りです:(https://twitter.com/samczsun/status/1578175778314780673 原文帖リンク)
最初は、@VenusProtocol が再びハッキングされたと思われましたが、後で攻撃者が 2 億ドル以上を Venus に預けたことが確認されました。
Hyperlab:BNB Chain 攻撃の全体的な分析
攻撃者は Binance Bridge に 2 回、100 万 BNB を送信しました。
Hyperlab:BNB Chain 攻撃の全体的な分析
まず、攻撃者のトランザクションと正当な引き出しのトランザクションを比較しました。注目すべき点は、攻撃者が常に同じブロック高を使用していることです - 110217401。正当な引き出し者ははるかに高いブロック高を使用しています、例えば 270822321 です。
Hyperlab:BNB Chain 攻撃の全体的な分析
Hyperlab:BNB Chain 攻撃の全体的な分析
同時に、攻撃者の証明は明らかに正当な引き出しの証明よりも短いです。攻撃者は、特定のブロックの証明 - 110217401 を偽造する方法を見つけました。次に、これらの証明がどのように機能するかを理解する必要があります。
Hyperlab:BNB Chain 攻撃の全体的な分析
Binance には、IAVL ツリーを検証するための特別なプリコンパイルドコントラクトがあります。以下の図に示すように。
Hyperlab:BNB Chain 攻撃の全体的な分析
基本的に、IAVL ツリーを検証する際には、操作リストを指定します。Binance Bridge では、通常、2 つの操作が期待されます:「IAVL」操作と「multistore」操作。以下にそれらの実装方法を示します。
Hyperlab:BNB Chain 攻撃の全体的な分析
証明を偽造するためには、2 つの操作が成功する必要があり、最後の操作(multistore)が固定値(指定したブロックのハッシュ値:110217401)を返す必要があります。
以下の実装コードによると、ルートハッシュ値を操作することは不可能であるか、少なくとも非常に困難です。
Hyperlab:BNB Chain 攻撃の全体的な分析
「multistore」操作の入力値は「iavl」操作の出力値です。これは、ここでルート変数をある方法で制御する必要があることを意味します。同時に、検証値も渡す必要があります。
Hyperlab:BNB Chain 攻撃の全体的な分析
Hyperlab:BNB Chain 攻撃の全体的な分析
ルートハッシュ値は COMPUTEHASH 関数によって計算されます。それは各パスと葉に再帰的にハッシュを行い、実際の実装の詳細は重要ではありません。
Hyperlab:BNB Chain 攻撃の全体的な分析
重要なのは、ハッシュ関数の動作方法により、基本的には任意の(パス、Nleaf)ペアが一意のハッシュ値を生成すると言えることです。証明を偽造するためには、これらを変更しない必要があります。
正当なトランザクションの証明のレイアウトを見ると、非常に長いパスがあり、内部ノードはなく、葉ノードだけが存在することがわかります。この葉ノードには、私たちの悪意のあるペイロードのハッシュ値が含まれています!もし私たちがこの葉ノードを変更できない場合、新しい葉ノードを追加する必要があります。
Hyperlab:BNB Chain 攻撃の全体的な分析
新しい葉ノードを追加する場合、それに対応する内部ノードも追加する必要があります。
Hyperlab:BNB Chain 攻撃の全体的な分析
私たちはどのようにして COMPUTEHASH が望むルートハッシュ値を返すようにすることができるでしょうか?注意すべきは、最終的には非ゼロの右側のハッシュ値を含むパスが必要です。そのようなパスを見つけた場合、それが中間のルートハッシュ値と一致すると主張します。
コードを分析して、どのハッシュ値が必要かを理解しましょう。
Hyperlab:BNB Chain 攻撃の全体的な分析
Hyperlab:BNB Chain 攻撃の全体的な分析
残りはすべて組み合わせるだけです。正当な証明を取り、次のように変更します。
1)私たちの偽造ペイロードに新しい葉ノードを追加します。
2)要件を満たすために空の内部ノードを追加します。
3)私たちの葉ノードを調整して、正しいルートハッシュ値に先行して終了させます。
(https://gist.github.com/samczsun/8635f49fac0ec66a5a61080835cae3db)
(注意すべきは、これは攻撃者が使用した正確な方法ではありません。彼らの証明パスははるかに短く、彼らがどのように生成したのかはわかりません。しかし、この脆弱性の他の部分は同じですので、それをゼロから構築する方法を示すことは価値があると思います)
要するに、Binance Bridge の証明の検証方法にはバグがあり、攻撃者が任意の情報を偽造する可能性があります。幸いなことに、ここでは攻撃者が 2 つの情報しか偽造していませんが、損失はさらに大きくなる可能性があります。
著者:HyperLab セキュリティラボ
この記事は PANews の寄稿者の意見であり、PANews の立場を代表するものではありません。記事や意見は投資助言を提供するものではありません。画像の出典:HyperLab セキュリティラボ。著作権侵害がある場合は、著者に連絡して削除してください。