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. この攻撃パターンはBSCチェーンだけでなく、イーサリアムネットワークでも同様の操作が発生しました。

まとめ

今回の攻撃の根本的な原因は、EthCrossChainData コントラクトの keeper が EthCrossChainManager コントラクトによって変更可能であり、さらに EthCrossChainManager コントラクトの verifyHeaderAndExecuteTx 関数がユーザーから渡されたデータを実行できることにあります。攻撃者はこの設計上の欠陥を利用し、特定のデータを構築して EthCrossChainData コントラクトの keeper アドレスを変更しました。これは以前の噂であった keeper の秘密鍵の漏洩ではありません。

この事件は再びクロスチェーンプロトコルのセキュリティ設計の重要性と、契約の権限管理に対する厳格な要求を浮き彫りにしました。また、ブロックチェーンエコシステムにおいて、一見無害な機能であっても、悪意を持って利用される可能性があるため、深刻なセキュリティの脆弱性を引き起こす可能性があることを私たちに思い出させています。

!

原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • 4
  • 共有
コメント
0/400
ServantOfSatoshivip
· 45分前
また横になってまた横になって…
原文表示返信0
FloorSweepervip
· 07-16 15:47
また一つの古い伝統です。
原文表示返信0
ApeWithNoChainvip
· 07-16 15:38
また別の契約が崩れた〜
原文表示返信0
TeaTimeTradervip
· 07-16 15:30
またkeeperに問題が発生しました。ああ、ああ。
原文表示返信0
いつでもどこでも暗号資産取引
qrCode
スキャンしてGateアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)