# Poly Networkのハッキングインシデントの分析近日、クロスチェーン相互運用プロトコルのPoly Networkがハッカーの攻撃を受け、業界で広く注目を集めています。セキュリティチームはこの事件について詳細に分析し、攻撃者は巧妙に構築されたデータを通じてEthCrossChainData契約のkeeperを指定されたアドレスに変更したと考えています。以前流布されていたkeeperの秘密鍵漏洩説ではありません。## 攻撃の詳細1. 攻撃の核心は、EthCrossChainManagerコントラクトのverifyHeaderAndExecuteTx関数が_executeCrossChainTx関数を通じてクロスチェーントランザクションを実行できることです。2. EthCrossChainData コントラクトの所有者は EthCrossChainManager コントラクトであり、後者は前者の putCurEpochConPubKeyBytes 関数を呼び出してキーパーを変更できます。3. EthCrossChainManagerコントラクトのverifyHeaderAndExecuteTx関数は、内部で_executeCrossChainTx関数を呼び出して、ユーザー指定のクロスチェーントランザクションを実行できます。 攻撃者はこれを悪用して、慎重に細工されたデータを渡して、_executeCrossChainTx関数がEthCrossChainDataコントラクトのputCurEpochConPubKeyBytes関数を呼び出すようにし、キーパーロールを攻撃者が指定したアドレスに変更します。4. keeper 役割のアドレス置換が完了すると、攻撃者は自由に取引を構築し、コントラクトから任意の数量の資金を引き出すことができます。## 攻撃プロセス1. 攻撃者はまず、EthCrossChainManagerコントラクトのverifyHeaderAndExecuteTx関数を通じてputCurEpochConPubKeyBytes関数を呼び出すことにより、キーパーを変更しました。2. その後、攻撃者は契約から資金を引き出す一連の攻撃取引を実施し始めました。3. 攻撃が完了した後、keeperが変更されたため、他のユーザーの正常な取引が拒否されて実行されませんでした。4. 類似の攻撃パターンがイーサリアムネットワークでも発生しており、攻撃者は同じ手法を用いてkeeperを変更し、攻撃を実施しました。! [](https://img-cdn.gateio.im/social/moments-c660956f1d8fcf8ee3fea90e7eb2c75f)## まとめ今回の攻撃の鍵は、EthCrossChainData コントラクトの keeper が EthCrossChainManager コントラクトによって変更可能であることにあり、EthCrossChainManager コントラクトの verifyHeaderAndExecuteTx 関数は _executeCrossChainTx 関数を通じてユーザーが提供したデータを実行できることです。攻撃者はこの設計上の脆弱性を利用し、特定のデータを構築して EthCrossChainData コントラクトの keeper を変更しました。これは以前の推測であった keeper の秘密鍵の漏洩ではありません。この事例は、スマートコントラクトの安全設計の重要性を再度浮き彫りにし、業界に貴重な経験と教訓を提供しました。
Poly Networkがハッカーに侵入され、keeperが改ざんされて資金が流出した
Poly Networkのハッキングインシデントの分析
近日、クロスチェーン相互運用プロトコルのPoly Networkがハッカーの攻撃を受け、業界で広く注目を集めています。セキュリティチームはこの事件について詳細に分析し、攻撃者は巧妙に構築されたデータを通じてEthCrossChainData契約のkeeperを指定されたアドレスに変更したと考えています。以前流布されていたkeeperの秘密鍵漏洩説ではありません。
攻撃の詳細
攻撃の核心は、EthCrossChainManagerコントラクトのverifyHeaderAndExecuteTx関数が_executeCrossChainTx関数を通じてクロスチェーントランザクションを実行できることです。
EthCrossChainData コントラクトの所有者は EthCrossChainManager コントラクトであり、後者は前者の putCurEpochConPubKeyBytes 関数を呼び出してキーパーを変更できます。
EthCrossChainManagerコントラクトのverifyHeaderAndExecuteTx関数は、内部で_executeCrossChainTx関数を呼び出して、ユーザー指定のクロスチェーントランザクションを実行できます。 攻撃者はこれを悪用して、慎重に細工されたデータを渡して、_executeCrossChainTx関数がEthCrossChainDataコントラクトのputCurEpochConPubKeyBytes関数を呼び出すようにし、キーパーロールを攻撃者が指定したアドレスに変更します。
keeper 役割のアドレス置換が完了すると、攻撃者は自由に取引を構築し、コントラクトから任意の数量の資金を引き出すことができます。
攻撃プロセス
攻撃者はまず、EthCrossChainManagerコントラクトのverifyHeaderAndExecuteTx関数を通じてputCurEpochConPubKeyBytes関数を呼び出すことにより、キーパーを変更しました。
その後、攻撃者は契約から資金を引き出す一連の攻撃取引を実施し始めました。
攻撃が完了した後、keeperが変更されたため、他のユーザーの正常な取引が拒否されて実行されませんでした。
類似の攻撃パターンがイーサリアムネットワークでも発生しており、攻撃者は同じ手法を用いてkeeperを変更し、攻撃を実施しました。
!
まとめ
今回の攻撃の鍵は、EthCrossChainData コントラクトの keeper が EthCrossChainManager コントラクトによって変更可能であることにあり、EthCrossChainManager コントラクトの verifyHeaderAndExecuteTx 関数は _executeCrossChainTx 関数を通じてユーザーが提供したデータを実行できることです。攻撃者はこの設計上の脆弱性を利用し、特定のデータを構築して EthCrossChainData コントラクトの keeper を変更しました。これは以前の推測であった keeper の秘密鍵の漏洩ではありません。この事例は、スマートコントラクトの安全設計の重要性を再度浮き彫りにし、業界に貴重な経験と教訓を提供しました。