2023年2月17日安全公司CertiKAlert发推:AAVE上发生一起闪电贷攻击,导致稳定币交易项目Platypus损失了900万美元的资产。
2023年2月17日安全公司CertiK Alert发推:AAVE上发生一起闪电贷攻击,导致稳定币交易项目Platypus损失了900万美元的资产。
Twitter: https://twitter.com/CertiKAlert/status/1626345868151468033
MasterPlatypusV4合约的emergencyWithdraw
函数验证出现问题,在检查偿付能力是,只要借来的资产不超过借款限额就会返回true,验证通过后允许用户提取所有质押的资金。
emergencyWithdraw一般是用于紧急情况时提取质押资金。
攻击者向Platypus USDC资产(LP-USDC)存入了闪电贷获得的4400万USDC,并获得了4400万LP-USDC,然后攻击者将LP-USD存入MasterPlatypusV4。
攻击者调用函数borrow()
在合约platyputreasure中铸造约4170万 USP。这个金额是没有超过4400万的95%的。
因为攻击者借入的资产没有超过质押资产95%的上限,所以emergencyWithdraw
函数在验证偿付能力isSolvent
值时返回为“true”。
而platypusTreasure.isSolven
还有第二个返回值,是debtAmount
,代表债务总额,值为41,794,533,641,783,253,909,671,999,约4179万。
这里没有验证债务总额debtAmount
的值,造成只要isSolvent
的返回值solvent=true
就可以取出质押资产,这是漏洞产生的主要原因。
攻击者能够取出之前质押全部4400万枚LP-USDC,调用withdraw移除了流动性,提取出了约4399万的USDC(有手续费损耗)
偿还闪电贷,并开始通过Platypus Finance池将USP换成多种资产。
最后Platypus平台的总损失价值约为900万美元的资产。
这起事件的漏洞在于emergencyWithdraw
函数只检查了债务金额是否达到最大限额,没有检查债务总额。导致只要借入的资产没有超过质押资产95%的上限就可以取出质押的资产,并且原来的借款也没有被扣除。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!