返回博客

PolyNetwork黑客事件初步分析

Code Auditing
2021年8月11日
阅读约 3 分钟

PolyNetwork遭到黑客攻击,超过3亿美元被盗。攻击者在多个链上执行了此次攻击。在本博客中,我们以以太坊上的攻击交易 (0xd8c1f7424593ddba11a0e072b61082bf3d931583cb75f7843fc2a8685d20033a) 来分析此次黑客攻击的可能原因。我们初步分析表明,可能的原因是用于签署跨链消息的私钥泄露,或者PolyNetwork的签名过程中存在一个bug,该bug被滥用以签署精心构造的消息。

免责声明:本博客仅包含基于以太坊链上数据的初步分析结果。在未获得Poly Network的进一步信息的情况下,我们无法核实我们的发现。

更新 2021/08/12:进一步信息显示,攻击原因是 Keeper 被攻击者篡改(而非私钥泄露)。我们对 Keeper 更改交易为何会首先被执行进行了进一步分析。

交易和调用追踪

我们使用我们的交易分析系统来恢复追踪。

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

  • 0xc8a65fadf0e0ddaf421f28feab69bf6e2e589963: 攻击者
  • 0x838bf9e95cb12dd76a54c9f9d2e3082eaf928270: EthCrossChainManager
  • 0xcf2afe102057ba5c16f899271045a0a37fcb10f2: EthCrossChainData
  • 0x250e76987d838a75310c34bf422ea9f1ac4cc906: LockProxy
  • 0x5a51e2ebf8d136926b9ca7b59b60464e7c44d2eb: managerProxyContract for LockProxy

函数签名:

  • 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 修饰符未被绕过。

基于这两点观察,我们怀疑:

  1. 攻击者可能拥有用于签署消息的合法密钥,这表明签名密钥可能已泄露。

或者

  1. PolyNetwork 的签名过程中存在一个bug,该bug被滥用以签署精心构造的消息。

但是,我们没有更多的链下数据来验证我们的发现。我们希望我们的分析能够有助于进一步的调查。

致谢:Yufeng Hu, Siwei Wu, Lei Wu, Yajin Zhou @BlockSec

Twitter:https://twitter.com/BlockSecTeam

订阅最新动态
Bitget 3.875亿美元链下漏洞事件:不止于密钥与合约
Security Insights

Bitget 3.875亿美元链下漏洞事件:不止于密钥与合约

2026年9月24日,攻击者利用第三方安全产品漏洞,获取内部凭证并伪造提现指令,导致Bitget部分运营钱包资金转出约3.875亿美元,涉及以太坊、其他EVM网络、XRP Ledger、Zcash和TRON,私钥及冷钱包未受影响。本文梳理事件路径与资金流向,分析资产快速转换及生态恢复应对,提出机构纵深防御体系,并说明授权区块链渗透测试如何验证跨层安全假设。

损失约1130万美元:Multicall Router、Nostra | BlockSec Weekly
Security Insights

损失约1130万美元:Multicall Router、Nostra | BlockSec Weekly

本报告覆盖2026/09/14至09/20,分析以太坊与Starknet上两起共约1130万美元损失的安全事件。较大一起中,多重调用路由器将自身地址当作调度目标,致嵌套调用以路由器已授权身份而非外部调用者身份进入Safe钱包的Gateway模块,约2900个aEthrsETH被转入攻击者创建的Uniswap v4池。Starknet上,Nostra预言机仅需一个聚合来源,三个价格源中仅两个参与聚合时,被操纵的浅池报价与正常报价平均,使NSTR估值约49.52美元,支持约350万美元超额抵押借贷。

~3.2亿美元损失:Liquid Network、Symbiosis 遭利用攻击 | BlockSec
Security Insights

~3.2亿美元损失:Liquid Network、Symbiosis 遭利用攻击 | BlockSec

本报告覆盖2026/09/07-09/13,分析两起共损失约3.2亿美元的安全事件,含此前未覆盖的Liquid Network于09/06遭利用事件。较大事件中,Elements的rangeproof验证缓存因字段拼接无分隔符导致验证结果错配,攻击者伪造4000枚无支撑L-BTC并几乎全部兑出。Symbiosis跨链桥比特币路线因手续费未做负值校验,330聪存款铸造出46,116,860,184.27388234 syBTC,流动性池仅存11.26 syBTC,致约970万美元损失(约9.97 BTC)。

Web3 最佳安全审计方

在上线之前验证设计、代码与业务逻辑,对标业内最高安全标准。

BlockSec 审计