返回博客

#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 仓位,使协议的 stakedAmount 从 851,662 增加到 3,183,876(增长了 373%)。
  5. 利用夸大的抵押价值大额借入 USDC 和 WETH 等资产以获利。

这种通过闪电贷操纵 pcAPE 价格的行为,利用了预言机计算中使用现货价格的缺陷。

开始使用 Phalcon Security

检测每一个威胁,预警关键风险,并拦截攻击。

立即免费试用

总结

ParaSpace 事件突显了 DeFi 协议中预言机操纵和闪电贷攻击的风险。这强调了迫切需要稳健、抗操纵的价格预言机,以及在预发布审计之外进行持续安全监控的重要性。

BlockSec 的 Phalcon Security 系统通过自动拦截攻击并保护用户资产,证明了主动威胁检测与预防的价值。此事件提醒 DeFi 协议必须实施全面的安全措施,包括智能合约审计、基础设施审计以及实时监控。

如需了解更多关于 DeFi 安全事件和最佳实践的见解,请访问我们的 安全事件库,并考虑我们的 智能合约审计基础设施审计 服务。

探索 MetaSleuth 调查

追踪资金流向并为调查建立证据

立即免费试用

阅读本系列其他文章:

Web3 最佳安全审计专家

在上线前验证设计、代码和业务逻辑

订阅最新动态
~3.2亿美元损失:Liquid Network、Symbiosis 遭利用攻击 | BlockSec
Security Insights

~3.2亿美元损失:Liquid Network、Symbiosis 遭利用攻击 | BlockSec

本报告覆盖2026/09/07-09/13,分析两起共损失约3.2亿美元的安全事件,含此前未覆盖的Liquid Network于09/06遭利用事件。较大事件中,Elements的rangeproof验证缓存因字段拼接无分隔符导致验证结果错配,攻击者伪造4000枚无支撑L-BTC并几乎全部兑出。Symbiosis跨链桥比特币路线因手续费未做负值校验,330聪存款铸造出46,116,860,184.27388234 syBTC,流动性池仅存11.26 syBTC,致约970万美元损失(约9.97 BTC)。

约940万美元损失:Injective、Aquifer遭利用攻击 | BlockSec Weekly
Security Insights

约940万美元损失:Injective、Aquifer遭利用攻击 | BlockSec Weekly

过去一周(2026/08/31-2026/09/06),Injective、Solana、Ethereum和Flow EVM上发生四起安全事件,损失约940万美元。最大的是Injective漏洞,保险基金标识符与二元期权市场标识符冲突,结算路径未比较其面额,损失约480万美元;Solana上的Aquifer因交换路径调用未验证的调用者提供的Token Program,损失约247万美元;Ethereum上的Notional Finance V1因未检查的uint128转换将债务估值为零,损失约173万美元。Flow EVM上的Ankr FLOW因质押入口跳过暂停保护并按过时比率铸币,损失约41万美元。

超越智能合约:Web3中的域名与DNS运营安全
Security Insights

超越智能合约:Web3中的域名与DNS运营安全

合约审计只审合约本身。我们对DefiLlama TVL前100协议背后的100个域名进行了8项基于SEAL的DNS和注册商检查,共800项检查,只有一个域名全部通过。以下是大多数项目缺失的四项关键控制措施,以及它们在用户入口处为何至关重要。

Web3 最佳安全审计方

在上线之前验证设计、代码与业务逻辑,对标业内最高安全标准。

BlockSec 审计
#7:ParaSpace事件:与时间赛跑,挫败行业迄今最严重的攻击