返回部落格

PolyNetwork 駭客攻擊初步分析

Code Auditing
2021年8月11日
閱讀約 3 分鐘

PolyNetwork 遭到駭客攻擊,超過 3 億美元資產被盜。攻擊者在多個鏈上實施了此次攻擊。在本部落格中,我們使用以太坊上的攻擊執行交易(0xd8c1f7424593ddba11a0e072b61082bf3d931583cb75f7843fc2a8685d20033a)來分析此次駭客攻擊的可能原因。我們的初步分析顯示,一個可能的原因是簽署跨鏈訊息的私鑰洩漏,或者是 PolyNetwork 的簽署流程存在漏洞,導致攻擊者可以簽署偽造的訊息。

免責聲明:本部落格僅包含我們基於以太坊鏈上數據的初步分析結果。如果沒有來自 Poly Network 的進一步資訊,我們無法驗證我們的發現。

更新 2021/08/12:進一步的資訊顯示,此次攻擊的原因是 Keeper 被攻擊者修改(而非私鑰洩漏所致)。我們進行了更深入的分析,以回答「為什麼修改 Keeper 的交易能夠成功執行」的問題。

交易與呼叫追蹤

我們使用我們的交易分析系統來還原追蹤過程。

攻擊者 -> 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 修飾符並未被繞過。

基於這兩點觀察,我們懷疑:

  1. 攻擊者可能擁有簽署訊息的合法金鑰,這意味著簽署金鑰可能已洩漏。

或者

  1. PolyNetwork 的簽署流程存在漏洞,導致其被濫用以簽署偽造的訊息。

然而,我們沒有更多鏈下數據來驗證我們的發現。希望我們的分析能對後續調查有所幫助。

貢獻者: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日,攻擊者利用第三方安全產品漏洞,獲取內部憑證並偽造提款指令,導致約3.875億美元從Bitget部分營運錢包(涵蓋Ethereum、其他EVM網絡、XRP Ledger、Zcash及TRON)轉出;私鑰及冷錢包未受影響。本文深入梳理事件路徑與資金流向,分析快速轉換為原生資產及生態恢復應對,提出機構縱深防禦框架,並說明授權區塊鏈滲透測試如何驗證跨層假設。

約1130萬美元損失:Multicall Router、Nostra|BlockSec Weekly
Security Insights

約1130萬美元損失:Multicall Router、Nostra|BlockSec Weekly

本報告涵蓋2026/09/14至2026/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至2026/09/13,探討兩起造成約3.2億美元損失的安全事件,包括前份報告未提及、發生於2026/09/06的Liquid Network漏洞事件。較大者為該Liquid Network漏洞:Elements中的rangeproof驗證快取藉由雜湊四個欄位(其中兩個長度可變)串接而成金鑰,且未標示欄位邊界,導致某輸出的驗證結果被錯誤套用至另一個未經檢驗證明的輸出,使攻擊者得以憑空創造4,000枚無擔保L-BTC,並將幾乎全數兌回比特幣。在橫跨BNB Smart Chain、Ethereum與Rootstock的Symbiosis跨鏈橋比特幣路徑中,讀取比特幣存款的鏈下程式碼從存款人可自行控制的欄位取得其身份,並在未檢查手續費是否為負值的情況下自存款中扣除,使330聰的存款鑄造出`46,116,860,184.27388234 syBTC`;其須賣出所經之資金池僅有11.26 syBTC,致使流動性提供者與用戶損失約9.97 BTC(約77萬美元)。

Web3 最佳安全審計方

在上線之前驗證設計、程式碼與業務邏輯,對標業內最高安全標準。

BlockSec 審計
PolyNetwork 駭客攻擊初步分析