Back to Blog

#5:Platypus Finance:三度遇襲,幸運生還

Code Auditing
February 15, 2024
6 min read

總結

Platypus Finance 是 Avalanche 區塊鏈上的一個 AMM 協議,它先後遭到三次攻擊,詳情如下:

  • 2023 年 2 月 17 日,由於償付能力檢查機制錯誤,該協議遭受駭客攻擊,導致總損失約 905 萬美元。其中,在 BlockSec 的協助下成功挽救了 240 萬美元。約 38 萬枚代幣一度卡在 Aave 合約中,隨後被歸還。
  • 2023 年 7 月 12 日,該協議再次遭到駭客攻擊,損失約 5 萬美元,原因是因為忽視了穩定幣之間的價格差異。
  • 2023 年 10 月 12 日,該協議遭受了價格操縱攻擊,損失約 220 萬美元。在與攻擊者談判後,攻擊者歸還了 90% 的被盜資金。

該專案非常幸運,得以在這些攻擊中倖存。我們對這三次攻擊的分析表明,如果進行謹慎的審計或採取更積極的安全措施,這些邏輯漏洞本是可以避免的。

第一次攻擊

要理解這起安全事件,必須先了解幾個智慧合約的工作流程。大致過程如下:

  • 使用者可以將代幣存入資金池成為 LP 並獲得 LP 代幣。
  • LP 代幣可以質押在 MasterPlatypus 中以獲得獎勵。在此過程中,LP 代幣會被轉移到 MasterPlatypus 合約。
  • LP 代幣可以作為抵押品來借入其他資產,以提高資產效率。

下圖顯示了這些互動過程。

漏洞分析

該漏洞存在於 MasterPlatypus 合約中一個名為 emergencyWithdraw 的函數。在緊急情況下,該函數應被用於提取 MasterPlatypus 合約中質押的 LP 代幣。在此函數中,合約會檢查使用者是否「具有償付能力(Solvent)」以允許提取。該邏輯會檢查使用者是否有任何壞帳(即抵押品是否足以償還債務)。如果沒有壞帳,使用者就可以提取質押的 LP 代幣。

然而,這個邏輯是有缺陷的。使用者「具有償付能力」僅表示他/她的抵押品可以償還債務。但是,它並沒有檢查使用者在緊急提取質押代幣後是否仍然具有償付能力。攻擊者可以利用這個缺陷借入資產,然後同時緊急提取質押的 LP 代幣(而不償還債務)。請參閱 Immunefi 部落格的詳細分析

攻擊分析

我們以一筆攻擊交易為例來展示整個攻擊過程。

第 1 步:從 AAVE 閃電貸借入 4400 萬 USDC

第 2 步:將 4400 萬 USDC 存入資金池以獲得 LP-USDC

第 3 步:將 LP-USDC 存入 MasterPlatypus

第 4 步:使用 LP-USDC 作為抵押品借入 USP

第 5 步:執行 emergencyWithdraw 函數發起攻擊

攻擊者在未償還 USP 債務的情況下獲得了 LP-USDC。

第 6 步:從資金池提取 LP-USDC 以獲得 USDC

第 7 步:賣出 USP 獲利

然而,利潤留在了攻擊合約中。事實上,攻擊者可以為交易設定一個新的接收地址來獲取利潤。

BlockSec 的救援行動

我們發現攻擊者將利潤留在了攻擊合約中。此外,攻擊合約內沒有提取資產的邏輯。然而,我們發現攻擊合約存在漏洞,可以被利用進行反向入侵,從而提取合約中的部分資產。

具體來說,閃電貸回調函數存在存取控制問題,這意味著任何人都可以呼叫此回調函數。這也是許多 MEV 機器人被攻擊的根本原因。

此外,在回調函數內部,攻擊者合約授權 USDC 代幣給 Platypus Finance 資金池合約。而這個資金池合約是可升級的!

結合上述兩點,我們可以透過以下方式挽救攻擊合約中的 USDC:

  • 將 Platypus Finance 資金池合約升級,加入提取合約內 USDC 的邏輯。
  • 呼叫攻擊合約的回調函數,將 USDC 授權給資金池合約。
  • 資金池合約可以替換任何函數(由攻擊合約執行),以便從攻擊合約中轉移 USDC(因為攻擊合約已將 USDC 授權給資金池合約)。

這是挽救 240 萬 USDC 的交易記錄

其他兩次攻擊

請參閱以下連結以了解有關其他兩次攻擊的更多詳細資訊。

  • 攻擊 II:2023 年 7 月 11 日,該協議假設 USDC 和 USDT 之間的比例為 1:1,這偏離了市場波動,導致了有缺陷的提款邏輯。一筆攻擊交易連結。此類交易有多筆。

  • 攻擊 III:2023 年 10 月 12 日,由於受到操控的 cashliability 影響了掉期價格。[第一筆攻擊交易 | 第二筆攻擊交易]

總結

這三次攻擊利用了協議中不同的漏洞。儘管已有其他廠商審計過該協議,攻擊者仍然找到了漏洞並成功對其進行了攻擊。幸運的是,部分資產得以挽救,但我們不能期待每次都能如此幸運。應採取更多安全措施包括攻擊監控和自動回應,以保護協議和使用者資產安全。

閱讀本系列的其他文章:

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
#5:Platypus Finance:三度遇襲,幸運生還