800 万美元的 Platypus 闪贷攻击之所以成为可能,是因为代码 在 根据鸭嘴兽审计员 Omniscia 的验尸报告,错误的顺序。 审计公司声称他们看到的版本中不存在有问题的代码。
鉴于近期 @鸭嘴兽defi 事件 https://t.co/30PzcoIJnt 团队已经准备了一份技术性事后分析,详细描述了该漏洞利用是如何被揭开的。
务必遵守 @Omniscia_sec 接收更多安全更新!https://t.co/cf784QtKPK pic.twitter.com/egHyoYaBhn
— 奥姆尼西亚 (@Omniscia_sec) 2023 年 2 月 17 日
根据该报告,Platypus MasterPlatypusV4 合约“在其紧急撤回机制中包含一个致命的误解”,这使得它“在更新与股权头寸相关的 LP 代币之前执行偿付能力检查”。
该报告强调,emergencyWithdraw 函数的代码具有防止攻击的所有必要元素,但这些元素只是以错误的顺序编写,正如 Omniscia 解释的那样:
“这个问题可以通过重新排序 MasterPlatypusV4::emergencyWithdraw 语句并在用户的金额输入设置为 0 后执行偿付能力检查来防止,这将阻止攻击发生。”
Omnisia 承认,他们在 2021 年 11 月 21 日至 12 月 5 日期间审核了 MasterPlatypusV4 合约的一个版本。但是,该版本“不包含与外部 platypusTreasure 系统的集成点”,因此不包含顺序错误的代码行。 从 Omniscia 的角度来看,这意味着开发人员必须在审计完成后的某个时候部署了新版本的合约。
有关的: Raydium 公布黑客攻击细节,建议对受害者进行赔偿
审计员声称 Avalanche (AVAX) C-Chain 地址的合约实施 0xc007f27b757a782c833c568f5851ae1dfe0e6ec7 是被剥削的那个。 该合约的第 582-584 行似乎调用了 PlatypusTreasure 合约上名为“isSolvent”的函数,第 599-601 行似乎将用户的金额、因子和 rewardDebt 设置为零。 但是,在调用“isSolvent”函数后,这些数量将设置为零。
鸭嘴兽团队 确认的 2 月 16 日,攻击者利用了“ [the] USP 偿付能力检查机制”,但该团队最初并未提供更多细节。 审计员的这份新报告进一步阐明了攻击者可能如何完成攻击。
鸭嘴兽团队于 2 月 16 日宣布, 发生攻击. 它试图联系黑客并获得返还资金以换取漏洞赏金。 攻击者使用了 闪贷 执行漏洞利用,这类似于在 Defrost Finance漏洞利用 12 月 25 日。