Back to Blog

#5:Platypus Finance:三度遇袭,幸免于难

Code Auditing
February 15, 2024
6 min read

总结

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

然而,这个逻辑是有缺陷的。用户“有偿付能力”仅意味着用户的抵押品可以偿还其债务。但是,它并没有检查用户在紧急提取质押代币后是否仍然保持偿付能力。攻击者可以利用这一缺陷借入资产,然后同样进行紧急提取质押的 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 机器人遭到攻击的根本原因。

此外,在回调函数内部,攻击合约批准(approve)Platypus 金融池合约使用其 USDC 代币。而这个池合约是可升级的!

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

  • 升级 Platypus 金融池合约,以包含提取合约内 USDC 的逻辑。
  • 调用攻击合约的回调函数,批准池合约使用 USDC。
  • 池合约可以替换任何函数(该函数将由攻击合约执行),以从攻击合约中转移 USDC(因为攻击合约已授权池合约使用其 USDC)。

这是挽救 240 万 USDC 的交易记录

其他两次攻击

关于另外两次攻击的更多详细信息,请参考以下链接。

总结

这三次攻击利用了该协议中不同的漏洞。尽管其他一些供应商已经对该协议进行了审计,但攻击者仍然发现了漏洞并成功利用了协议。幸运的是,部分资产得到了挽救,但我们不能指望一直保持幸运。应当采取更多的安全措施,包括攻击监测和自动响应,以确保协议和用户资产的安全。

阅读本系列的其他文章:

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit