PolyNetworkハッキングの初期分析

PolyNetworkハッキングの初期分析

PolyNetworkがハッキングされ、3億ドル以上が盗難されました。攻撃者は複数のチェーンで攻撃を実行しました。本ブログでは、ハッキングの可能性のある理由を分析するために、イーサリアム上の攻撃トランザクション(0xd8c1f7424593ddba11a0e072b61082bf3d931583cb75f7843fc2a8685d20033a)を使用します。初期分析によると、可能性のある理由として、クロスチェーンメッセージに署名するために使用される秘密鍵の漏洩、またはPolyNetworkの署名プロセスにバグがあり、それを悪用して細工されたメッセージに署名されたことが考えられます。

免責事項:本ブログには、イーサリアム上のオンチェーンデータに基づいた初期分析結果のみが含まれています。Poly Networkからの追加情報なしでは、当社の調査結果を検証することはできません。

更新 2021/08/12:追加情報によると、攻撃の原因はキーパーが攻撃者によって改変されたこと(秘密鍵の漏洩ではない)です。キーパーを変更するトランザクションがそもそも実行できた理由について、さらに詳細な分析を行いました。

トランザクションとコールトレース

トランザクション分析システムを使用してトレースを復元します。

攻撃者 -> EthCrossChainManager -> EthCrossChainData -> LockProxy -> managerProxyContractforLockProxy

  • 0xc8a65fadf0e0ddaf421f28feab69bf6e2e589963: 攻撃者
  • 0x838bf9e95cb12dd76a54c9f9d2e3082eaf928270: EthCrossChainManager
  • 0xcf2afe102057ba5c16f899271045a0a37fcb10f2: EthCrossChainData
  • 0x250e76987d838a75310c34bf422ea9f1ac4cc906: LockProxy
  • 0x5a51e2ebf8d136926b9ca7b59b60464e7c44d2eb: LockProxyのmanagerProxyContract

関数シグネチャ:

  • d450e04c (verifyHeaderAndExecuteTx)
  • 69d48074 (getCurEpochConPubKeyBytes)
  • 5ac40790 (getCurEpochStartHeight)
  • 0586763c (checkIfFromChainTxExist)
  • e90bfdcf (markFromChainTxExist(uint64,bytes32))

攻撃の主なプロセス

攻撃の主なプロセスは、攻撃者が署名されたデータを verifyHeaderAndExecuteTx() 関数に渡したことです。この関数はデータをデコードし、データに署名するために使用された署名を検証します。このプロセスが成功すると、メッセージで指定されたメソッド(およびコントラクトアドレス)が実行されます。この攻撃中、スマートコントラクト 0x250e76987d838a75310c34bf422ea9f1ac4cc906 の unlock 関数が呼び出され、Fei が攻撃者に転送されました。

要約すると、この攻撃は verifyHeaderAndExecuteTx 関数に有効なパラメータが渡されたことが原因です。そして、そのパラメータは署名検証プロセスを通過できます。その後、メッセージで指定されたトランザクションが実行されます(ソフトウェアセキュリティにおける任意のコマンド実行のように)。

このプロセスをよりよく理解するために、コールトレースの重要な値を復元しました。

関数: verifyHeaderAndExecuteTx:

verifySig

unlock

LockProxyのmanagerProxyContractの変数。これはunlock関数の呼び出し元アドレスの値と一致します。

結論

復元された値から、以下のことがわかりました。

  1. 攻撃者は verifyHeaderAndExecuteTx 関数に有効な署名付きメッセージを提供しました。
  2. LockProxyスマートコントラクトの onlyManagerContract モディファイアはバイパスされていません。

これらの2つの観測に基づき、以下のことを疑っています。

  1. 攻撃者はメッセージに署名するための正当なキーを所有していた可能性があり、これは署名キーが漏洩したことを示唆しています。

または

  1. PolyNetworkの署名プロセスにバグがあり、それを悪用して細工されたメッセージに署名された可能性があります。

しかし、当社の調査結果を検証するためのオフチェーンデータはさらにありません。当社の分析がさらなる調査に役立つことを願っています。

クレジット:Yufeng Hu、Siwei Wu、Lei Wu、Yajin Zhou @BlockSec

Twitter:https://twitter.com/BlockSecTeam

Sign up for the latest updates
#1 Cetus Incident: One Unchecked Shift Drains $223M in the Largest DeFi Hack of 2025

#1 Cetus Incident: One Unchecked Shift Drains $223M in the Largest DeFi Hack of 2025

Cetus Protocol, the largest concentrated-liquidity DEX on Sui, was exploited on May 22, 2025, resulting in an estimated ~$223M loss across multiple liquidity pools. The attacker leveraged a flaw in checked_shlw(), a custom overflow-prevention helper used in fixed-point u256 math, where an incorrect constant and comparison failed to block unsafe left shifts and caused silent truncation of high bits during liquidity delta calculations. By crafting specific liquidity and tick/price-range parameters, the exploit made required deposits appear near-zero while minting an oversized liquidity position, which was later withdrawn to drain real pool reserves.

#2 Bybit Incident: A Web2 Breach Enables the Largest Crypto Hack in History

#2 Bybit Incident: A Web2 Breach Enables the Largest Crypto Hack in History

The largest crypto hack ever, the February 21, 2025 Bybit breach stole about $1.5B after attackers used social engineering to compromise a Safe{Wallet} workflow, injected malicious JavaScript into an AWS S3 bucket, tampered with the transaction signing process, and upgraded Bybit’s Safe{Wallet} contract to a malicious implementation that drained funds across multiple chains.

Weekly Web3 Security Incident Roundup | Jan 25 – Feb 1, 2026

Weekly Web3 Security Incident Roundup | Jan 25 – Feb 1, 2026

During the week of January 25 to February 1, 2026, six blockchain security incidents were reported with total losses of ~$18.05M. These involved improper input validation, token design flaws, key compromises, and business logic errors across DeFi protocols on multiple chains. The primary causes included unchecked user inputs enabling arbitrary calls, flawed burn mechanisms allowing price manipulation, compromised developer tools, and missing solvency checks in lending functions.