Poly Networkが攻撃を受けた:スマートコントラクトの脆弱性によりkeeperが改ざんされました

robot
概要作成中

Poly Networkがハッキング攻撃を受けた事件の分析

近日、クロスチェーン相互運用プロトコルのPoly Networkがハッカーの攻撃を受け、業界内で広く注目を集めています。セキュリティチームの分析によれば、今回の攻撃はkeeperの秘密鍵の漏洩によるものではなく、攻撃者が巧妙に構成したデータを利用して、契約の脆弱性を突き、EthCrossChainData契約のkeeperアドレスを変更しました。

攻撃の原則

この攻撃の核心は、EthCrossChainManagerコントラクトのverifyHeaderAndExecuteTx関数が、_executeCrossChainTx関数を通じて特定のクロスチェーントランザクションを実行できることです。 EthCrossChainData コントラクトの所有者は EthCrossChainManager コントラクトであるため、後者は EthCrossChainData コントラクトの putCurEpochConPubKeyBytes 関数を呼び出して、コントラクトのキーパーを変更できます。

攻撃者は、verifyHeaderAndExecuteTx 関数を使用して複雑なデータを渡して、_executeCrossChainTx 関数に EthCrossChainData コントラクトの putCurEpochConPubKeyBytes 関数の呼び出しを実行させ、キーパーの役割を攻撃者が指定したアドレスに変更します。 キーパーアドレスの置き換えが完了すると、攻撃者はトランザクションを構築し、コントラクトから任意の金額の資金を引き出すことができます。

攻撃プロセス

  1. 攻撃者はまず、EthCrossChainManagerコントラクトのverifyHeaderAndExecuteTx関数を通じてputCurEpochConPubKeyBytes関数を呼び出し、キーパーを変更します。

  2. keeperが変更された後、攻撃者は一連の攻撃取引を実施し、契約から資金を引き出し始めました。

  3. 攻撃が完了した後、keeperが変更されたため、他のユーザーの正常な取引が拒否されました。

  4. この攻撃パターンはイーサリアムネットワークでも類似の操作があります。

!

まとめ

この攻撃の鍵となるのは、EthCrossChainData コントラクトのキーパーを EthCrossChainManager コントラクトによって変更できることと、EthCrossChainManager コントラクトの verifyHeaderAndExecuteTx 関数が _executeCrossChainTx 関数を通じてユーザーが入力したデータを実行できることです。 攻撃者は、特定のデータを作成することにより、EthCrossChainDataコントラクトのキーパーを攻撃者が制御するアドレスに正常に変更します。

この事件は、スマートコントラクトの設計において権限管理と関数呼び出しの安全性に特に注意を払う必要があることを再度思い出させてくれます。重要なパラメータに影響を与える可能性のある関数については、より厳格なアクセス制御と安全チェックメカニズムを実施すべきです。同時に、クロスチェーンプロジェクトの安全性にももっと注意を払う必要があります。なぜなら、それらはしばしば大量の資金と複雑な相互作用ロジックを含むからです。

原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • 3
  • 共有
コメント
0/400
GasFeeCriervip
· 07-11 15:43
またスマートコントラクトの失敗を見た。ひどすぎるだろう。
原文表示返信0
SleepTradervip
· 07-11 02:54
また後知恵の知恵のセキュリティ監査
原文表示返信0
ApyWhisperervip
· 07-08 15:52
また契約の脆弱性が見つかりました...
原文表示返信0
いつでもどこでも暗号資産取引
qrCode
スキャンしてGateアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)