Back to Blog

從安全研究員視角回顧 Poly Network 駭客事件

Code Auditing
August 15, 2021
5 min read

在本篇部落格中,我們希望回顧 Poly Network 被駭事件的完整過程,並討論從中學到的教訓。

我們於 2021 年 8 月 10 日得知 Poly Network 遭到駭客攻擊(本部落格使用 +8 時區)。然而,當時並不清楚駭客攻擊是如何發生的,以及攻擊的根本原因為何。作為一個安全研究團隊,我們隨即展開了調查。

第一步:找到攻擊交易

我們在我們的交易虛擬化系統 (https://tx.blocksecteam.com) 中重放了攻擊交易 0xd8c1f7424593ddba11a0e072b61082bf3d931583cb75f7843fc2a8685d20033a。

執行軌跡非常簡單,這與其他操縱價格的攻擊不同。那些攻擊通常涉及極為複雜的函數呼叫(請參閱 Popsicle 駭客事件分析)。

第二步:分析合約代碼

在獲得攻擊軌跡後,我們需要審查合約的源代碼。令人驚訝的是,Poly Network 在 Etherscan 上並沒有經過驗證的源代碼。不過,我們最終在 GitHub 上找到了已發佈的源代碼。

在審查源代碼之後,我們沒有發現任何明顯的代碼漏洞。我們還將攻擊軌跡與合法交易的軌跡進行了比較,發現兩者非常相似。

第三步:恢復關鍵狀態

接著,我們恢復了攻擊期間的關鍵狀態。由於攻擊是從呼叫 VerifyHeaderAndExecuteTxEvent 開始的,我們恢復了幾個關鍵變數的值,我們已在初步分析中分享了這些內容 [1]。

在這個過程中,我們發現只有一個看守者 (keeper)(參見上圖)。由於該值是從攻擊軌跡中獲取的,且攻擊交易通過了所有簽名驗證,我們認為潛在原因可能是私鑰洩漏或伺服器簽名流程中的錯誤 [1]。

然而,我們在這裡犯了一個錯誤。分析攻擊就像剝洋蔥一樣。你必須一層一層地剝開,直到找到真正的「根源」。當時,我們並沒有進一步剝開洋蔥來查看看守者是否已被更改!

第四步:新線索

幾個小時後,Kelvin 和慢霧 (SlowMist) 在 Twitter 上提供了新的線索,證明看守者已經被更改。更改過程利用了雜湊碰撞來呼叫一個強大的功能——這是一次「極具智慧」的駭客攻擊。

現在我們意識到,我們的初步分析並不完整。根據最新資訊,我們重放了更改看守者的交易。結果顯示,其軌跡也非常簡單。

但請記住,在此次交易過程中,出現了四個看守者(而不是一個)。所有這些密鑰與其他合法交易的密鑰相同——這意味著這些密鑰是合法的。問題來了:為什麼更改看守者的交易能被成功打包上鏈並執行?

第五步:定位來源交易

我們隨即嘗試定位來源交易,因為 Poly Network 是一個跨鏈橋,理應在某處存在一筆來源交易。我們透過解碼關鍵變數(如下圖所示)完成了這項工作。它顯示了來源鏈和 Poly 鏈上的交易雜湊值。

這裡有一個尚未被其他地方提到的訣竅。該變數中的交易雜湊值,其呈現方式與 Poly 鏈上的官方雜湊值不同。例如,圖中 Poly 鏈的交易雜湊為 0x80cc978479eb082e1e656993c63dee7a5d08a00dc2b2aab88bc0e465cfa0721a。但在 Poly 鏈瀏覽器上,該雜湊值為 1a72a0cf65e4c08bb8aab2c20da0085d7aee3dc69369651e2e08eb798497cc80(你看出差別了嗎?)。我們已於 8 月 11 日 16:55 在 EthereumSecurity Telegram 群組中分享了這一發現。

第六步:定位根本原因

但我們仍然無法回答「為什麼更改看守者的交易」能夠被打包上鏈的問題。為了回答這個問題,我們從 Ontology 鏈開始追蹤,並發現了以下交易流程:

Ontology 交易 -> Ontology 中繼器 (relayer) -> Poly 鏈 -> Ethereum 中繼器 -> Ethereum

我們隨後閱讀了 Ontology 鏈和中繼器的源代碼。幾個小時後,我們發現 Ontology 中繼器對跨鏈交易缺乏足夠的驗證。這使得惡意交易能夠被打包到 Poly 鏈上,進而導致整個系統被攻破。

經過內部討論和反覆核對後,我們於 8 月 12 日 02:41 在 Twitter 和 Medium 上發佈了研究結果 [3]。

教訓

  • 設計安全性 (Security by design)。 安全應貫穿於 DeFi 項目的整個開發過程。用戶將資金託付給項目,項目則必須值得信賴。遺憾的是,我們看到了 Poly Network 對安全的忽視。例如,缺乏驗證是一種老派的安全漏洞,這我在大學課程中都曾教過。

  • 對於像這種擁有超過 6 億美元 TVL 的 DeFi 項目,竟然沒有經過驗證的源代碼。 去中心化基礎設施的基礎是信任,而信任的根基是透明度。遺憾的是,用戶願意將資金投入到一個黑箱項目中,這讓我感到驚訝與擔憂。如何提升用戶的安全意識,可能需要一個全新的解決方案。

參考文獻

[1]https://blocksecteam.medium.com/the-initial-analysis-of-the-polynetwork-hack-270ac6072e2a

[2]https://twitter.com/kelvinfichter/status/1425290462076747777

[3]https://blocksecteam.medium.com/the-further-analysis-of-the-poly-network-attack-6c459199c057

製作團隊:Yufeng Hu, Siwei Wu, Lei Wu, Yajin Zhou @ BlockSecTeam

BlockSec (@BlockSecTeam) / Twitter

Sign up for the latest updates
Harmony 跨鏈 ONE 鑄幣事件 + 約4700萬美元金鑰洩露損失 | BlockSec
Security Insights

Harmony 跨鏈 ONE 鑄幣事件 + 約4700萬美元金鑰洩露損失 | BlockSec

2026年8月10日至16日期間,共5起重大安全事件,量化損失約4700萬美元。深度分析聚焦Harmony Layer-1鏈實作缺陷:跨分片收據重放導致原生ONE被未授權鑄造,目的分片以未驗證的MerkleProof.ShardID及BlockNum欄位判定收據已花費標記,而非依簽署來源標頭,使已入帳收據可重放而無對應來源分片扣款。約偽造3.01兆ONE,惟其名目價值遠超代幣市值,無法變現亦未確認實現損失,故Harmony不計入總額;約4700萬美元來自私鑰洩露(未知巨鯨錢包約2500萬、Kite約1400萬、Coinsbuy約790萬)及Fox業務邏輯缺陷(約11.7萬)。

~$160萬美元損失:Moke代幣、LpdFi遭攻擊利用 | BlockSec週報
Security Insights

~$160萬美元損失:Moke代幣、LpdFi遭攻擊利用 | BlockSec週報

2026年8月3-9日當週,BNB Chain發生2起重大安全事件,總損失約160萬美元,均源於價格操縱。LpdFi事件(約69.7萬美元)重複使用同一可操縱的PancakeSwap流動池儲備進行訂單估值和利息贖回,使攻擊者虛增本金並操控池子以索取超額利息。Moke Token事件(約90.6萬美元)結合可操縱現貨價格與重複LP分紅計算,多次領取虛增的MOKE及BNB分紅。

COLDCARD事件:當錢包的「隨機」助記詞並不隨機
Security Insights

COLDCARD事件:當錢包的「隨機」助記詞並不隨機

COLDCARD固件存在靜默構建整合漏洞,導致比特幣種子生成回退至軟件RNG,其弱隨機性使錢包種子可被離線破解。由於弱點存在於種子本身,固件更新無法修復;截至2026年8月7日,已確認損失達1,405 BTC(約9,100萬美元),私下估計高達2,055 BTC。

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit
從安全研究員視角回顧 Poly Network 駭客事件