Numen实验室根据链上监控显示, Feb-16-2023 07:16:54 PM +UTC,Avalanche上的 Platypus Finance 项目遭到闪电贷攻击,因为MasterPlatypusV4合约中的emergencyWithdraw函数存在逻辑问题,共计损失850W美金。当前被盗资金还在黑客合约地址中。
黑客地址:https://snowtrace.io/address/0xeff003d64046a6f521ba31f39405cb720e953958
黑客合约地址:https://snowtrace.io/address/0x67afdd6489d40a01dae65f709367e1b1d18a5322
攻击交易:https://snowtrace.io/tx/0x1266a937c2ccd970e5d7929021eed3ec593a95c68a99b4920c2efa226679b430
攻击分析:
攻击者先从Aave通过闪电贷借了4400W个USDC,并且将借来的USDC调用 Pool合约的deposit函数进行了质押,质押后获得44000100592104个lp。
攻击者将获得的lp通调用MasterPlatypusV4的deposit又进行了质押,然后又通过 PlatypusTreasure合约的borrow函数进行借贷, PlatypusTreasure 的借贷额度最高为质押的95%,借出了41794533641783253909672000个USP。
黑客借贷完成后调用 MasterPlatypusV4的 emergencyWithdraw函数将抵押的lp提走,因为代码中借贷的额度没有超过最高限制, isSolvent 函数返回为true,黑客便可以将抵押提取。
黑客的资金当前还留在自己的攻击合约中,目前没有进行转移
核心漏洞:
Proxy:https://snowtrace.io/address/0xff6934aac9c94e1c39358d4fdcf70aeca77d0ab0
MasterPlatypusV4: https://snowtrace.io/address/0xc007f27b757a782c833c568f5851ae1dfe0e6ec7
漏洞主要是 emergencyWithdraw 函数,用户在紧急提取时,并没有对用户偿还借贷的状态做判断,导致黑客可以直接提取抵押。
POC复现:
Link:https://github.com/numencyber/SmartContractHack_PoC/tree/main/PlatypusDefiHack
复现结果:
总结:
NUMEN实验室提醒项目方,合约在进行抵押和借贷时,要对借贷的偿还状态以及借贷金额做严格的检查。合约上线前进行多家安全审计,保障合约风险尽可能被消除在链下,NUMEN专注于为web3生态安全保驾护航。
原文始发于微信公众号(Numen Cyber Labs):损失850万美金!Platypus Finance 攻击事件分析