前作の人気スタープロジェクトであるO3は皆さんの記憶に新しいと思いますが、1日前に崩壊しO3Swapプールが盗まれ、O3の資金がポリに置かれていたためポリがハッキングされO3は破壊されました;8月の夜10日、クロスチェーンプロトコルPoly Networkが攻撃され、イーサリアム、バイナンスチェーン、ポリゴンの3チェーンから6億ドル近くが盗まれた。攻撃された 2 つのプラットフォームは NEO の承認を得た同じ技術チームによって支援されているため、盗難の理由は、プロジェクト当事者が契約でスーパー権限を自分専用に予約しており、ハッカーがこのスーパー権限のバックドアを使用して、すべてのコインを転送することです。プールから散歩へ。
LBank Blue Shell Academy は科学の普及を目的としており、PolyNetwork はかつて、現在の市場で最高のクロスチェーン相互運用性プロトコルであると考えられており、異種クロスチェーンを真に実現しています。現在サポートされている異種クロスチェーン プロトコルには、ビットコイン、イーサリアム、NEO、オントロジー、Elornd、Ziliqa、Binance Smart Chain、Switcheo、Huobi Ecological Chainなどが含まれます。
イベントを確認します:
この攻撃は、8 月 10 日の 17 時 55 分に初めて発生しました。ハッカーは、イーサリアムの Poly Network スマート コントラクトから 9,638 万 USDC、1,032 WBTC およびその他の資産を連続的に転送し、総額 2 億 6,000 万米ドル以上に達しました。プロジェクトのスマートコントラクトから転送; 18:08から、ハッカーはBSCのプロジェクトのスマートコントラクトから8,760万USDC、26,629 ETHおよびその他の資産を転送しました。
これは、有名なマウントゴックス事件(74万4,408BTC、当時の総額約4億米ドル)や2018年のコインチェック事件(5億2,300万XEM、当時の価値)を上回る、暗号化史上最大のハッキング事件である。時間総額は約5億3,400万米ドル)。このインシデントの具体的な理由に関して、業界セキュリティ組織の技術チームは、脆弱性の原理と技術的詳細を追跡するためにリアルタイム監視を実施しています。
分析の結果、攻撃者は EthCrossChainManager コントラクトのロジックの欠陥を利用し、コントラクトを通じて EthCrossChainData コントラクトの putCurEpochConPubKeyBytes 関数を呼び出し、Keeper を自身のアドレスに変更し、そのアドレスを使用してトークンを引き出すためのトランザクションに署名しました。大量のトークンセットが回収されます。
ハッカーはどのようにして成功したのでしょうか?
攻撃者のアドレス:
BSC:
0x0D6e286A7cfD25E0c01fEe9756765D8033B32C71
ETH:
0xC8a65Fadf0e0dDAf421F28FEAb69Bf6E2E589963
Polygon:
攻撃された契約:
BSC:
A:
0x7ceA671DABFBa880aF6723bDdd6B9f4caA15C87B(EthCrossChainManager)
B:
0x2f7ac9436ba4B548f9582af91CA1Ef02cd2F1f03(LockProxy)
ETH:
C:
0x838bf9E95CB12Dd76a54C9f9D2E3082EAF928270(EthCrossChainManager)
D:
0x250e76987d838a75310c34bf422ea9f1AC4Cc906(LockProxy)
Polygon:
E:
0xABD7f7B89c5fD5D0AEf06165f8173b1b83d7D5c9(EthCrossChainManager)
F:
攻撃トランザクション:
BSC:
0x3eba3f1fb50c4cbe76e7cc4dcc14ac7544762a0e785cf22034f175f67c8d3be9
0x50105b6d07b4d738cd11b4b8ae16943bed09c7ce724dc8b171c74155dd496c25
0xd65025a2dd953f529815bd3c669ada635c6001b3cc50e042f9477c7db077b4c9
0xea37b320843f75a8a849fdf13cd357cb64761a848d48a516c3cac5bbd6caaad5
ETH:
0xb1f70464bd95b774c6ce60fc706eb5f9e35cb5f06e6cfe7c17dcda46ffd59581
Polygon:
0x1d260d040f67eb2f3e474418bf85cc50b70101ca2473109fa1bf1e54525a3e01
0xfbe66beaadf82cc51a8739f387415da1f638d0654a28a1532c6333feb2857790
BSC では、攻撃者はまず、注意深く構築されたデータを渡して、EthCrossChainManager コントラクト内の verifyHeaderAndExecuteTx (0xd450e04c) 関数を呼び出します。 verifyHeaderAndExecuteTx 関数は内部関数 _executeCrossChainTx を呼び出し、その呼び出しは内部関数で使用されるため、攻撃者は慎重に構築されたデータ (他の脆弱性を通じて元の Keeper によって署名されたデータを取得) を通じて呼び出しのパラメーター _method を制御し、正常に呼び出します。 EthCrossChainManager コントラクトとして EthCrossChainData コントラクトの putCurEpochConPubKeyBytes 関数を使用して、Keeper を独自のアドレス (0xa87fb85a93ca072cd4e5f0d4f178bc831df8a00b) に変更します。このステップは、今後、有効なキーパーによって署名されたトランザクションを取得し、コントラクト内のトークンを引き出すことです。
上記の呼び出し攻撃者によって構築された _method は、実際には putCurEpochConPubKeyBytes ではありません。これは、呼び出し呼び出し内の関数名のみがユーザー制御可能であり、パラメーターの数と型が固定されているためです。攻撃者は、putCurEpochConPubKeyBytes と同じ関数シグネチャを持つ f1121318093 関数を構築することで、EthCrossChainData コントラクト内の putCurEpochConPubKeyBytes 関数の呼び出しを認識しました。
Keeper を変更すると、攻撃者は任意のトランザクションに署名できるようになります。攻撃者は、有効なキーパーによって署名された複数のトランザクションを通じて、B コントラクト内のすべての ETH、BTCB、BUSD、USDC トークンを引き出します (署名は攻撃者によって自分のアドレスに変更されています)。
ETH と Polygon は BSC と同じコードと Keeper を持っているため、BSC への攻撃が完了した後、攻撃者は以前に構築したデータを ETH と Polygon 上で再生し、ETH と Polygon 上の Keeper を自身のアドレス (0xa87fb85a93ca072cd4e5f0d4f178bc831df8a00b) に変更します。
次に、同様の攻撃方法を使用して、D コントラクトのすべての ETH、USDC、WBTC、UNI、DAI、SHIB、WETH、FEI、USDT、renBTC と、F コントラクトのすべての USDC が抜き取られました。
攻撃者は 101 万 USDC を Polygon に返還しました。追伸: 現在、多くの人がハッカーのアドレスにコインを送って、コインを求めるメッセージを残しています。なぜなら、コインを要求すると、誰かが 13.5 イーサリアムを受け取ると聞いたからです。
どのようなことに注意する必要がありますか?
この攻撃の主な理由は、コントラクト権限管理のロジックに問題があることです。どのユーザーも verifyHeaderAndExecuteTx 関数を呼び出してトランザクションを実行でき、その内部で呼び出しが行われると、関数名は悪意のあるユーザーは、データ例外の部分関数を慎重に構築することで呼び出すことができます。同時に、EthCrossChainManager コントラクトは Keeper を変更する権限を持っており、通常、changeBookKeeper 関数を通じて変更されますが、今回の攻撃では、攻撃者は慎重に構築されたデータを使用して verifyHeaderAndExecuteTx 関数の呼び出しを通じて Keeper アドレスを変更することに成功しました。 、および Keeper アドレスがトランザクションに署名され、Defi の誕生以来最大の損失を伴う攻撃イベントが生成されます。
LBank Blue Shell Academy は、通話を使用するとき、開発者はパラメーターがユーザーによって制御可能であるという事実に特別な注意を払う必要があることを、ここに皆さんに思い出させます。一部の特別な契約や機能は、異常な通話によって引き起こされる取り返しのつかない損失を避けるために、アクセス許可を厳密に制御する必要があります。
