返回部落格

#7:ParaSpace 事件:與時間賽跑,阻止業界最關鍵的一次攻擊

Code Auditing
2024年2月17日
閱讀約 6 分鐘
核心要點
  • 根本原因:cAPE 的 rebasingIndex 使用了總質押 APE(stakedAmount + 待領獎勵 + 緩衝區),攻擊者可透過 ApeCoinStaking.depositApeCoin() 注入資金以虛增抵押品價值。

  • 攻擊路徑:閃電貸約 47,352 wstETH,借入/存入

背景

2023 年 3 月 17 日,NFT 借貸平台 Paraspace(現為 Parallel Finance)因其價格預言機存在漏洞而遭到嚴重攻擊。Paraspace 允許用戶存入 NFT 和 ERC-20 代幣作為抵押品來借入 ERC-20 代幣,使用戶無需出售 NFT 即可獲得收益。

點擊此處閱讀推文
點擊此處閱讀推文

ParaSpace 的一個關鍵功能是 ApeStaking,它可以自動複利 APE 獎勵。質押 APE 的用戶會收到 cAPE 代幣(APE 的 cToken 表示形式),該代幣可用作抵押品來借入 USDC 和 WETH 等資產。存入 cAPE 代幣可獲得 pcAPE 份額,其抵押價值是通過 pcAPE 數量乘以其 rebasingIndex 來計算的。

rebasingIndex 是根據總資金池 APE 餘額和總份額計算得出的,如下面的代碼片段所示:

function _scaledBalanceOf(address user, uint256 rebasingIndex)
    internal
    view
    returns (uint256)
{
    return super.scaledBalanceOf(user).rayMul(rebasingIndex);
}

function lastRebasingIndex() internal view override returns (uint256) {
  return ICApe(_underlyingAsset).getPooledApeByShares(WadRayMath.RAY);
}

function getPooledApeByShares(uint256 sharesAmount)
    public
    view
    returns (uint256)
{
    uint256 totalShares = _getTotalShares();
    if (totalShares == 0) {
        return 0;
    } else {
        return
            sharesAmount.mul(_getTotalPooledApeBalance()).div(totalShares);
    }
}

function _getTotalPooledApeBalance()
    internal
    view
    override
    returns (uint256)
{
    (uint256 stakedAmount, ) = apeStaking.addressPosition(address(this));
    uint256 rewardAmount = apeStaking.pendingRewards(
        APE_COIN_POOL_ID,
        address(this),
        0
    );
    return stakedAmount + rewardAmount + bufferBalance;
}

_getTotalPooledApeBalance() 函數匯總了來自 ApeCoinStaking 合約的質押 APE 代幣、待領取獎勵以及緩衝餘額。

漏洞分析

該漏洞在於對 rebasingIndex 的操縱,這人為抬高了 cAPE 代幣的抵押價值。具體來說,ApeCoinStaking 合約中的 depositApeCoin() 函數會增加頭寸的 stakedAmount。攻擊者可以通過將 APE 代幣存入 cAPE 頭寸來利用這一點,進而抬高 _getTotalPooledApeBalance() 的輸出結果,進而影響 rebasingIndex。

function depositApeCoin(uint256 _amount, address _recipient) public {
    if (_amount < MIN_DEPOSIT) revert DepositMoreThanOneAPE();
    updatePool(APECOIN_POOL_ID);

    Position storage position = addressPosition[_recipient];
    _deposit(APECOIN_POOL_ID, position, _amount);

    apeCoin.transferFrom(msg.sender, address(this), _amount);

    emit Deposit(msg.sender, _amount, _recipient);
}

function _deposit(uint256 _poolId, Position storage _position, uint256 _amount) private {
  Pool storage pool = pools[_poolId];
  _position.stakedAmount += _amount;
  pool.stakedAmount += _amount.toUint96();
  _position.rewardsDebt += (_amount * pool.accumulatedRewardsPerShare).toInt256();
}

這種設計缺陷允許攻擊者通過以 cAPE 作為接收者調用 depositApeCoin() 存入 APE 代幣,從而抬高抵押價值。

攻擊分析

攻擊者通過閃電貸攻擊利用了此漏洞,主要分為五個步驟:

  1. 獲得了約 47,352 wstETH 的閃電貸,並提供了約 46,018 wstETH 通過多個合約借入 cAPE。
  2. 存入約 12,880,000 個 cAPE 代幣作為抵押品。
  3. 將約 1,205 wstETH 兌換為約 492,124 APE 代幣,並將 1,839,999 cAPE 提取為 APE 代幣。
  4. 通過調用 ApeCoinStaking.depositApeCoin() 將 2,332,214 APE 代幣存入 cAPE 頭寸,使協議的質押總額從 851,662 增加到 3,183,876(增加了 373%)。
  5. 利用膨脹的抵押品借入大量 USDC 和 WETH 等資產以獲取利潤。

這種通過閃電貸操縱 pcAPE 價格的行為,利用了預言機計算中對現貨價格的依賴。

開始使用 Phalcon Security

檢測所有威脅,預警重要風險,並攔截攻擊。

立即免費試用

總結

ParaSpace 事件凸顯了 DeFi 協議中預言機操縱和閃電貸攻擊的風險。它強調了建立強大的、抗操縱價格預言機以及在預發布審計之外進行持續安全監控的迫切需求。

BlockSec 的 Phalcon Security 系統通過自動阻止攻擊並保護用戶資產,展示了主動威脅檢測與防禦的價值。此事件提醒各 DeFi 協議必須實施全面的安全措施,包括智能合約審計、基礎設施審計和實時監控。

如需了解更多關於 DeFi 安全事件和最佳實踐的見解,請查看我們的安全事件庫,並考慮使用我們的智能合約審計和基礎設施審計服務。

探索 MetaSleuth 調查

追蹤資金流向並為調查構建證據

立即免費試用

閱讀本系列的其他文章:

Web3 的最佳安全審計服務

在發布前驗證設計、代碼和業務邏輯

訂閱最新動態
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 審計