返回部落格

#5:Platypus Finance:三次攻擊中憑一絲運氣倖存

Code Auditing
2024年2月15日
閱讀約 6 分鐘

摘要

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 代幣。

然而,這個邏輯存在缺陷。用戶 Solvent 只是意味著用戶的抵押品可以償還其債務。但是,它並沒有檢查用戶在緊急提取質押代幣之後是否仍然保持償付能力。攻擊者可以利用這一缺陷借入資產,然後緊急提取質押的 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 代幣批准(approve)給了 Platypus finance 資金池合約。而這個資金池合約是可升級的!

結合以上兩點,我們可以通過以下方式救回攻擊合約內部的 USDC:

  • 升級 Platypus finance 資金池合約,加入從合約中提取 USDC 的邏輯
  • 調用攻擊合約的回調函數,將 USDC 批准給資金池合約
  • 資金池合約可以替換任何函數(該函數將由攻擊合約執行),從攻擊合約轉出 USDC(因為攻擊合約已將 USDC 批准給資金池合約)。

以下是追回 240 萬 USDC 的交易

其他兩次攻擊

有關其他兩次攻擊的更多詳情,請參閱以下連結。

  • 攻擊二:2023年7月11日,協議假設 USDC 和 USDT 之間的比率為 1:1,這偏離了市場波動,導致提款邏輯存在缺陷。一筆攻擊交易的連結。還有若干筆類似交易。

  • 攻擊三:2023年10月12日,由於 cashliability 被操縱,從而影響了交換價格。[第一筆攻擊交易 | 第二筆攻擊交易]

總結

這三次攻擊利用了協議中不同的漏洞。儘管一些其他供應商已經對該協議進行了審計,攻擊者仍然找到了漏洞並成功利用了該協議。幸運的是,部分資產得以追回,但我們不能總是指望運氣。應當採用包括攻擊監控和自動響應在內的更多安全措施,以保護協議和用戶資產的安全。

閱讀本系列的其他文章:

訂閱最新動態
超越智能合約:Web3中的網域與DNS營運安全
Security Insights

超越智能合約:Web3中的網域與DNS營運安全

合約審計止步於合約本身。我們針對 DefiLlama TVL 前 100 名背後的 100 個網域,執行了八項基於 SEAL 的 DNS 與註冊商檢查——共 800 項檢查,僅有一個網域全數通過。以下是大多數專案缺失的四項關鍵控制,以及它們在用戶入口點的重要性。

Web3攻擊面:滲透測試概覽

Web3攻擊面:滲透測試概覽

加密機構保留所有傳統攻擊面,並疊加資金處理鏈。本文為測試人員提供系統的實用抽象:四組件模型——應用、授權與簽名、區塊鏈互動、基礎設施,說明各組件職責、代表性實現及繼承的攻擊面。並將web3特有範疇分為五大攻擊面:生產與自動化運維、簽名意圖、審批與提款鏈、資金邏輯、鏈上交易與已部署合約。

損失約2,300萬美元:Cosmos EVM、Moonwell 遭利用 | BlockSec Weekly
Security Insights

損失約2,300萬美元:Cosmos EVM、Moonwell 遭利用 | BlockSec Weekly

報告期間(2026/08/22 - 2026/08/30)內,共涵蓋5起區塊鏈安全事件,損失約2,270萬美元;Tectonic遭抽走約7,400萬至1.195億美元,其中大部分因Cronos回滾至攻擊前狀態而消除。重點事件為橫跨六條鏈的Cosmos EVM漏洞系列(實際損失約570萬美元),於TAC Chain追蹤發現,一個共享餘額同步漏洞串聯下溢與上溢攻擊,抽乾質押池。報告亦分析Moonwell的抵押品計算與預言機價格操縱組合攻擊、Tectonic針對低流動性抵押品的預言機價格與憑證代幣匯率操縱組合攻擊、Ajna清算業務邏輯漏洞,以及Solana上的Rain Card合約漏洞系列,涉及Ed25519簽名驗證繞過(Avici、Tria等)。

Web3 最佳安全審計方

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

BlockSec 審計
#5:Platypus Finance:三次攻擊中憑一絲運氣倖存