返回部落格

超越市場風險:SushiSwap KashiPairMediumRiskV1 合約中發現的邏輯漏洞

Code Auditing
2022年12月15日
閱讀約 4 分鐘

2022 年 11 月 8 日,我們偵測到部分攻擊成功從建立在 Sushi 官方 KashiPairMediumRiskV1 合約(或其分叉合約)之上的資金池中提走資產。經調查後,我們發現根本原因是邏輯漏洞導致代幣價格計算錯誤。

我們立即與 Sushi 安全團隊聯繫,他們證實了我們的發現。好消息是,他們正在採取行動,保護一些有價值但存在漏洞的資金池免受攻擊。此外,他們還提供了補償因該漏洞而損失資金的用戶的程序。因此,我們現在認為披露該漏洞和攻擊的細節是安全的。在本報告中,我們將提供詳細的分析。

漏洞分析

在分析 KashiPairMediumRiskV1 合約源碼後,我們斷定該漏洞存在於 borrow 函數中,該函數在 solvent 修飾器中使用過時的 exchangeRate 來驗證借貸份額。具體而言,驗證將基於 _isSolvent 函數中 exchangeRate 的當前值執行。

而在 liquidate 函數中,updateExchangeRate 函數在最開始就被呼叫。因此,驗證和計算將基於更新後的值執行。

顯然,此漏洞可能被利用並導致(巨大的)價格差異。

攻擊分析

我們觀察到兩次攻擊:

  1. 0xcf8f242ea83100b6d43e659f7f53a698d304fc6ac2ca6fe79e3e07ee05fefe58:受害者使用 KashiPairMediumRiskV1 合約,損失約 9,466 USDC。
  2. 0x3d163bfbec5686d428a6d43e45e2626a220cc4fcfac7620c620b82c1f2537c78:受害者是一個使用 CauldronMediumRiskV1(KashiPairMediumRiskV1 的分叉)的策略合約,損失約 110,911 MIM。

請注意,第一次攻擊交易是由一個搶先原始攻擊交易的機器人發起的:0x7a845d8d2af7919f5b9e22dd5571305cb5347d17986a8402715c1463d515fc18,原始攻擊者地址為 0xb7ea0f0f8c6df7a61bf024db21bbe85ac5688005。

我們以 第一次攻擊交易 為例,它包含以下步驟:

  1. 從 Balancer 借入 40,900 BADGER 和 121,904 USDC 的閃電貸。
  2. 將 40,900 BADGER 和 113,599 USDC 存入 BentoBox。
  3. 呼叫 kmBADGER/USDC-LINK 的 addCollateral 函數,存入 40,900,000,000,000,000,000,000 份額的 BADGER。
  4. 呼叫 kmBADGER/USDC-LINK 的 addAsset 函數,存入 112,529,000,000 份額的 USDC。
  5. 呼叫 borrow 函數借出 120,755,095,093 份額的 USDC。
  6. 呼叫 UpdateExchangeRate 函數。
  7. 呼叫 liquidate 函數清算自己。
  8. 從 BentoBox 提取 40,899 BADGER 和 123,006 USDC。
  9. 歸還閃電貸,獲利約 9,466 USDC。

請注意,步驟 6 並非必要,因為 borrow 函數會呼叫 UpdateExchangeRate 函數。

關鍵步驟如下:

不難發現,borrow 函數中使用的 exchangeRate 值與 liquidate 函數中使用的值存在偏差:

  • borrow 函數中:250,997,938,545,109,237,740,214,705,193
  • liquidate 函數中:328,266,883,541,864,569,505,752,156,794

影響範圍

有數十個資金池(在 Ethereum 和 BSC 上)可能受到此錯誤的影響。緩解此問題的一種暫時方法是透過偶爾(或定期)呼叫 UpdateExchangeRate 函數來減少或消除這種偏差。許多受影響的項目已經採用了這種方法,並且在鏈上可以觀察到相應的交易。

總結

確保 DeFi 項目的安全並非易事。除了代碼審計外,我們認為社區應該採取主動方法來監控項目狀態,並在攻擊發生前進行阻斷。

關於 BlockSec

BlockSec 是一家開創性的區塊鏈安全公司,由一群全球傑出的安全專家於 2021 年創立。公司致力於增強新興 Web3 世界的安全性和可用性,以促進其大規模採用。為此,BlockSec 提供智能合約和 EVM 鏈安全審計服務、用於安全開發與主動威脅阻斷的 Phalcon 平台、用於資金追蹤與調查的 MetaSleuth 平台,以及幫助 Web3 建設者在加密世界中高效航行的 MetaDock 擴充功能。

迄今為止,公司已服務超過 300 家知名客戶,如 MetaMask、Uniswap Foundation、Compound、Forta 和 PancakeSwap,並從 Matrix Partners、Vitalbridge Capital 和 Fenbushi Capital 等卓越投資者處獲得了兩輪數千萬美元的融資。

官方網站:https://blocksec.com/

官方 Twitter 帳號:https://twitter.com/BlockSecTeam

訂閱最新動態
NEAR Intents 遭攻擊:退款漏洞與資安教訓
Security Insights

NEAR Intents 遭攻擊:退款漏洞與資安教訓

NEAR Intents 遭到攻擊時,攻擊者利用金額過大的退款事件,在存入的資產退回後仍保留內部餘額。本文分析重建回執流程及 BNB Chain 上合計 3,865,021 USDT 的七筆出金,將這些資金流出與專案方所稱的資金全數追回區分開來,並概述開發及審計 NEAR 智能合約時應注意的安全事項。

損失約 557萬 USD:X100 Freezer、NEM 遭攻擊 | BlockSec 週報
Security Insights

損失約 557萬 USD:X100 Freezer、NEM 遭攻擊 | BlockSec 週報

本週報涵蓋 2026年10月19日–2026年10月25日 期間發生在 Ethereum 和 BNB Chain 上的兩起安全事件。報告分析了以閃電貸提供資金、奪取 X100 Freezer 治理權的事件,以及影響 BNB Chain 上某個 NEM 代幣流動性池的稅費結算缺陷。報告範圍內的估計損失合計約 557萬 USD:具代表性的 X100 交易造成約 475萬 USD 的損失,NEM 流動性池事件造成約 82.0萬 USD 的損失。此合計金額不包含另行報導的後續 X100 資金提取。

損失約 387萬 USD:Autheo Network、UNCX 遭駭|BlockSec 週報
Security Insights

損失約 387萬 USD:Autheo Network、UNCX 遭駭|BlockSec 週報

本週報告涵蓋 2026年10月12日–2026年10月18日 期間的 3 起安全事件,估計總損失約為 387萬 USD。Autheo Network 因私鑰遭入侵損失約 176萬 USD;Qubic Wallet 因種子產生機制薄弱損失約 130萬 USD;UNCX Network 的 Smart Token Vesting V2 合約在 Ethereum、BNB Chain、Base 和 Robinhood Chain 上因帳務計算錯誤造成約 80.7萬 USD 的損失。重點分析的 UNCX 事件說明,有缺陷的份額總計計算如何將以不同代幣與份額比率建立的代幣歸屬批次混在一起,進而使人得以從共用資金池超額提領。

Web3 最佳安全審計方

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

BlockSec 審計