https:///blastscan.io/tx/0x7ad050d84c89833aa1398fb8e5d179ddfae6d48e8ce964f6d5b71484cc06d003
この時点で、ハッカーは契約を実装するためにプロキシ契約のロジックを更新し、0x9e.CDを悪意のある0xe7..f1に変え、認証許可のバイパスを完成させていると思われます。
2つのコントラクト(オープンソースのコントラクトではない)を比較すると、オリジナルの0x9e..CDコントラクトと更新された0xe7..f1には明らかな違いがあります。
0x9e.align: "left;">攻撃者が最初の論理契約(0x9e..CD)で攻撃者アドレス(0x6e..c5)をREGISTERに設定し、他の2つの攻撃者アドレス、0xc5..0dと0xbf..87もREGISTEREDに設定され、それらのfield0が初期化に設定されていることがわかります。フィールド0は後で説明する。
これはdelegatecallのためで、実際の状態ストアの更新はコントラクト(0x16..A0)にあり、論理コントラクトがバックドアのない論理コントラクト0xe7..f1に更新されても、コントラクト(0x16..A0)の変更されたssは変更されたという事実につながります。strong>変更されたスロットはまだ復元されません。
対応するスロットの契約(0x16.....A0)に値があることがわかります。これにより、攻撃者はisRegisteredメソッドのチェックサムを渡すことができます:
その後、攻撃者はバックドアのコントラクトを通常のコントラクトに置き換え、バックドアがすでに仕込まれていることを偽装します。
さらに、ロックを解除する過程で、2つ目のチェックがあります:
ロック時間のチェックで、ロックされた資産が期限切れになる前に譲渡されないようにします。期限切れ前に譲渡されないようにします。
攻撃者は、ロック解除が呼び出されたときに、ブロック時間が必要な値よりも大きいことを確認する必要があります。ロック解除が呼び出されたときのブロック時間が、要求されたロックの有効期限(field3)よりも大きい。
このチェックでは、危険なコントラクト(0x29..1F)と対応する論理コントラクト0xf5..cd.
アンロックが呼び出されたときに、攻撃者のブロック時間が必要なロック有効期限(field3)よりも大きいことを確認します。
攻撃者は、アンロックが呼び出されたときに、ブロック時間が必要なロック有効期限よりも大きいことを確認する必要があります。攻撃の5日前)トランザクション
https://blastscan.io/tx/0x3d08f2fcfe51cf5758f4e9ba057c51543b0ff386ba53e0b4f267850871b88170
破損したコントラクト(0x29..1F)は当初、0x91..11の論理コントラクトを持っており、わずか4分後には、
https://blastscan.io/tx/0xea1d9c0d8de4280b538b6fe6dbc3636602075184651dfeb837cb03f8a19ffc4f
0xf5..cd.にアップグレードされました。
同様に、次のように比較してみましょう。
0xf5..cd用の初期化関数の一部が実装されています:
0x91..11用の初期化関数の一部実装:
ご覧のように、ETHの保持数&改ざん、ロック解除時間の改ざんという同じ手法が再び使われたことは明らかです。同じ手法で保有ETH数&;アンロック時間を変更し、通常のコントラクトに置き換えて隠蔽していたのです。 プロジェクトチームとセキュリティ研究者がデバッグを行った際、論理的なコントラクトはすべて正常であり、コントラクトがオープンソースではなかったため、問題の核心を見抜くことがより困難でした。
ここまでのところ、攻撃者が17,413ETHを含むこのトランザクションをどのように行ったかは理解できましたが、この出来事の背後にはこれだけの情報しかないのでしょうか?
上記の分析で、私たちは実際にハッカーがコントラクトの中に3つのアドレスを組み込んでいるのを見ました:
0x6e...c5(攻撃者のアドレス1)
0xc5..0d (攻撃者のアドレス2)0xbf..87 (攻撃者のアドレス3)
そして、上記で見つかった攻撃は、次のようになります。トランザクションは0x6e..c5しか見ていませんが、他の2つのアドレスは何をしていたのでしょうか?また、address(0)、_dodoApproveAddress、_uniswapV3Factortyには他にどんな秘密が隠されているのでしょうか?同じ手法で73.49WETHを盗んだ攻撃者アドレス3(0xbf..87)を見てみましょう:
https://blastscan.io/tx/0xfc7bfbc38662b659bf6af032bf20ef224de0ef20a4fd8418db87f78f9370f233
そして、0xc5...0d(攻撃者アドレス2)を与えながら、ガスのソースアドレス(0x97.0d(攻撃者アドレス2)と0xbf..87(攻撃者アドレス3)の両方に手数料を与えます。
そして、ガスソースアドレス(0x97....DE)の0.1ETHがowlto.finance(クロスチェーンブリッジ)から資金提供されました。
0xc5...0d(攻撃者アドレス2)は手数料を受け取り、何の攻撃も行いませんでしたが、私たちが引き続き見ているように、実はその肩には隠された意図がありました。
実際、事後の公式な救済取引によると、元の被害を受けた契約のアドレス(0x29..1F)には73.49WET以上あり、攻撃が終わるまで、7276.5WETH & 7758267USDBも残っていました
レスキュー取引:
https://blastscan.io/tx/0x1969f10af9d0d8f80ee3e3c88d358a6f668a7bf4da6e598e5be7a3407dc6d5bb
元々、攻撃者はこれらの資産を盗むことを計画しており、0xc5..0d(攻撃者アドレス2)というアドレスが元々USDBを盗むために使用されていたことがわかります。
ここで、https://img.jinse.cn/7200168_image3.png。https://img.jinse.cn/7200169_image3.png">
usdbのアドレスは
0xbf..87(攻撃者のアドレス3)このアドレスは、ウェスを盗むために使用されました:
ここでの_uniswapV3Factoryは次のとおりです。0x000000000000000000000000000000000000000000000000000000000000000000000000000004
ウェス用アドレス
そして0x6e..c5(攻撃者アドレス1)は、ネイティブアセットETHであるアドレス(0)を盗む役割を担っています。攻撃者は以下のロジックでfield0を設定することで、対応するアセットを盗むことができます:
質問
理論的には、彼はすべての資産、つまり残りのWETHとUSDBを盗むことができました。73.49WETH、0xbf.87(攻撃者のアドレス3)は、実際には、完全にすべての7758267 USDBを取るために0xc5..0d(攻撃者のアドレス2)の助けを借りて、また、離れてすべての7350 WETHを取ることができ、なぜ停止するWETHのほんの少しは、我々は知らない、内部調査を深めるために探偵のよく知られているチェーンである必要があるかもしれません。
https://blastscan.io/tx/0xfc7bfbc38662b659bf6af032bf20ef224de0ef20a4fd8418db87f78f9370f233
なぜ攻撃者は17413ETHをメインのイーサリアムネットワークに送金しなかったのでしょうか?
ブラストのメインネットがこれらのETHを中央集権化することで傍受し、ユーザーに実質的な負担をかけないように永続的にとどまらせることが可能であることはよく知られていますが、いったんイーサリアムのメインネット上にあれば、傍受する方法はありません。しかし、一旦イーサリアムのメインネット上にあれば、それを傍受する方法はありません。
現在のブラストのクロスチェーンブリッジを評価したところ、公式のクロスチェーンブリッジの数に制限はありませんが、14日間のオプトアウト期間があるので、ブラストの関係者が傍受のための計画を準備するには十分な時間です。
サードパーティのクロスチェーンブリッジはほぼリアルタイムで利用可能であり、攻撃者の料金源と同様に、非常に迅速にクロスチェーンを完成させることができますが、そもそもなぜ攻撃者はそれをしなかったのでしょうか?
実際、攻撃者は最初に(攻撃から2分以内に)クロスチェーンを行いました:
https://blastscan.io/tx/0x10cf2f2b884549979a3a1dd912287256229458ef40d56df61738d6ea7d9d198f
また、イーサリアムのメインネットに資金が到着するまでに20秒かかったため、理論的には攻撃者はクロスチェーンを続け、クロスチェーンブリッジが手動で介入する前にチェーンをまたいで大量のETHを送金できた可能性があります。
一度に3ETHしか送金できない理由については、以下の通りです。ブラストからETHに渡るクロスチェーンブリッジの流動性の制限:
ブラストをサポートするもう一つのクロスリンクブリッジは、さらにサポートが少ない:
このクロスチェーン取引の後、攻撃者は理由はわかりませんが、他のクロスチェーン操作を続けませんでしたが、「某国のハッカー」はブラストからの資金引き出しの準備を十分にしなかったようです。
攻撃後の展開
コミュニティユーザーのNearisbuildingによると、彼は攻撃者の身元について詳しく知ることができ、また攻撃者に資金を返すよう促す方法を見つけたそうです。
https://twitter.com/Nearisbuilding/status/1772812190673756548
結局、暗号コミュニティの注目と努力のおかげで、「某国のハッカー」は、身元がバレるのを恐れたのか、3人の攻撃者のアドレスの秘密鍵をプロジェクトに提供し、すべての資金を返却し、プロジェクトは救済された。プロジェクトはまた、漏洩した契約からすべての資金をマルチシグネチャ契約に移し、安全に保管するという救済取引も行いました。