返回博客

#5:Platypus Finance:三次遭遇攻击,全靠运气逃过一劫

Code Auditing
2024年2月15日
阅读约 6 分钟

摘要

Platypus Finance 是 Avalanche 区块链上的一个 AMM 协议。它已经遭受过三次攻击,具体如下:

  • 2023 年 2 月 17 日,由于错误的偿付能力检查,该协议遭到黑客攻击,总损失约为 905 万美元。其中,240 万美元在 BlockSec 的帮助下被追回。约 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 博客中的详细分析。

攻击分析

我们以一笔攻击交易为例,来展示整个攻击过程。

步骤一:从 AAVE 借入 4400 万 USDC 闪电贷

步骤二:将 4400 万 USDC 存入资金池以获得 LP-USDC

步骤三:将 LP-USDC 存入 MasterPlatypus

步骤四:使用 LP-USDC 作为抵押品借入 USP

步骤五:执行 emergencyWithdraw 函数发起攻击

攻击者在不偿还 USP 债务的情况下获得了 LP-USDC。

步骤六:从资金池中提取 LP-USDC 以获得 USDC

步骤七:卖出 USP 以获利

然而,这些利润留在了攻击合约内部。实际上,攻击者本可以为该次兑换设置一个新的接收地址来获取利润。

BlockSec 的救援行动

我们发现攻击者将利润留在了攻击合约内部。此外,攻击合约内部没有提取资产的逻辑。然而,我们在攻击合约中发现了一个漏洞,可以利用它进行反制黑客攻击,从而提取合约内的部分资产。

具体来说,闪电贷回调函数存在访问控制问题,这意味着任何人都可以调用该回调函数。这也是许多 MEV 机器人被攻击的根本原因。

此外,在该回调函数内部,攻击者合约将 USDC 代币授权给了 Platypus finance 资金池合约。而这个资金池合约是可升级的!

结合以上两点,我们可以通过以下方式救回攻击合约内部的 USDC:

  • 升级 Platypus finance 资金池合约,添加一个提取合约内 USDC 的逻辑
  • 调用攻击合约的回调函数,将 USDC 授权给资金池合约
  • 资金池合约可以替换任何(将由攻击合约执行的)函数,从攻击合约中转出 USDC(因为攻击合约已将 USDC 授权给了资金池合约)。

以下是救回 240 万 USDC 的交易。

另外两次攻击

有关另外两次攻击的更多详情,请参阅以下链接。

总结

这三次攻击利用了该协议中不同的漏洞。尽管该协议已经过其他一些厂商的审计,攻击者仍然找到了漏洞并成功对协议实施了攻击。幸运的是,部分资产得以追回,但我们不能指望永远如此幸运。为了保护协议和用户资产的安全,应采用更多的安全措施,包括攻击监控和自动响应。

阅读本系列的其他文章:

订阅最新动态
损失约557万 USD:X100 Freezer、NEM 遭攻击|BlockSec周报
Security Insights

损失约557万 USD:X100 Freezer、NEM 遭攻击|BlockSec周报

本周报告涵盖 2026年10月19日–2026年10月25日 期间以太坊和 BNB Chain 上发生的两起安全事件。报告分析了利用闪电贷资金接管 X100 Freezer 治理权的事件,以及影响 BNB Chain 上一个 NEM 代币流动性池的税费结算缺陷。报告统计范围内的估计损失合计约 557万 USD:其中,具有代表性的 X100 交易造成约 ~475万 USD 的损失,NEM 流动性池事件造成约 ~82.0万 USD 的损失。该合计金额不包括另行报告的后续 X100 资金提取。

Autheo Network、UNCX 遭黑客攻击,损失约387万 USD | BlockSec 周报
Security Insights

Autheo Network、UNCX 遭黑客攻击,损失约387万 USD | BlockSec 周报

本周报告涵盖 2026年10月12日–2026年10月18日 期间的 3 起安全事件,估计总损失约为 387万 USD。Autheo Network 因私钥泄露损失约 176万 USD,Qubic Wallet 因种子生成机制薄弱损失约 130万 USD;UNCX Network 在 Ethereum、BNB Chain、Base 和 Robinhood Chain 上的 Smart Token Vesting V2 合约因会计核算错误损失约 80.7万 USD。重点分析的 UNCX 事件说明,有缺陷的总份额计算将按不同代币与份额兑换比率创建的归属批次混合计算,从而使人能够从共享资金池超额提取。

损失约54.2万美元:MakerDaoBot 漏洞利用事件|BlockSec 周报
Security Insights

损失约54.2万美元:MakerDaoBot 漏洞利用事件|BlockSec 周报

本报告涵盖2026/10/05至2026/10/11以太坊上的1起安全事件,估计损失约54.2万美元。攻击合约部署恶意适配器,并将其传入缺乏访问控制的MakerDaoBot函数,使机器人授予该适配器操作其内部MakerDAO余额的权限。适配器结算了4笔旧版ETH-A拍卖,将200单位ETH-A抵押品兑换为WETH;攻击合约随后将其解包,并向攻击者转出200 ETH。

Web3 最佳安全审计方

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

BlockSec 审计