Platypus 遭闪电贷攻击,盗走900万美元

原文作者:CertiK

原文来源:微信公众号

北京时间2023年2月16日凌晨,Avalanche上的DeFi平台Platypus Finance遭遇闪电贷攻击,被盗走约900万美元。攻击者部署了未经验证的合约,并利用闪电贷消耗了协议中的约900万美元。

攻击步骤

三次攻击,我们将选择金额最大的用来解析流程:

1. 攻击者将闪电贷获得的4400万USDC存入Platypus USDC池,并获得4400万 LP-USDC。

2. 攻击者将这4400万LP-USDC存入MasterPlatypusV4。

3.该平台的借贷限额被设置为95%,这意味着攻击者最多可以用他们的4400万LP-USDC借到大约4180万USP。

4. 攻击者在PlatypusTreasure合约中调用了borrow来铸造大约4180万USP。

5. 由于借来的USP数额没有超过限额,协议的isSolvent值将总是返回true。

6. 由于isSolvent变量为true,攻击者可以调用EmergencyWithdraw来提取其质押的4400万LP-USDC全部资金。

7. 攻击者在支付了移除流动性的手续费用后,总共提取了43,999,999,921,036 USDC(LP-USDC)。

8. 攻击者偿还了闪电贷款,并以多个稳定币的形式获利约850万美元。

  • 2,425,762 USDC
  • 1,946,900 USDC.e 
  • 1,552,550 USDT
  • 1,217,581 USDT.e
  • 687,369 BUSD
  • 691,984 DAI.e 

在撰写本文时,共大约900万美元被盗。其中攻击者部署的合约中仍有价值850万美元的资产;171,000美元在攻击者的地址(EOA);399,400美元在一个Aave池。

漏洞分析

造成该事件的漏洞在于MasterPlatypusV4合约的函数emergencyWithdraw偿付能力检查出现问题。其偿付能力检查没有考虑到用户的负债价值,而只检查了债务金额是否达到最大限额。偿付能力检查通过后,合约允许用户提取所有存入的资产。

函数platypusTreasure.isSolvent会返回两个值。第一个值是solvent,是一个决定了用户的债务金额是否低于借款限额的布尔值。第二个值debtAmount则显示用户所欠的债务金额。

如果用户的债务额不超过用户抵押物的95%的借款限额,那么solvent的值将为true。

然而,在emergencyWithdraw函数中,偿付能力检查只验证了布尔值solvent,而忽略了债务金额。这意味着,如果用户的债务不超过借款限额,用户可以调用函数emergencyWithdraw来提取所有存入的抵押品。

Avalanche

转载声明:本文 由CoinON抓取收录,观点仅代表作者本人,不代表CoinON资讯立场,CoinON不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。若以此作为投资依据,请自行承担全部责任。

声明:图文来源于网络,如有侵权请联系删除

风险提示:投资有风险,入市需谨慎。本资讯不作为投资理财建议。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2023年2月17日 上午4:52
下一篇 2023年2月17日 上午9:52

相关推荐

Platypus 遭闪电贷攻击,盗走900万美元

星期五 2023-02-17 9:51:59

北京时间2023年2月16日凌晨,Avalanche上的DeFi平台Platypus Finance遭遇闪电贷攻击,被盗走约900万美元。攻击者部署了未经验证的合约,并利用闪电贷消耗了协议中的约900万美元。

攻击步骤

三次攻击,我们将选择金额最大的用来解析流程:

1. 攻击者将闪电贷获得的4400万USDC存入Platypus USDC池,并获得4400万 LP-USDC。

2. 攻击者将这4400万LP-USDC存入MasterPlatypusV4。

3.该平台的借贷限额被设置为95%,这意味着攻击者最多可以用他们的4400万LP-USDC借到大约4180万USP。

4. 攻击者在PlatypusTreasure合约中调用了borrow来铸造大约4180万USP。

5. 由于借来的USP数额没有超过限额,协议的isSolvent值将总是返回true。

6. 由于isSolvent变量为true,攻击者可以调用EmergencyWithdraw来提取其质押的4400万LP-USDC全部资金。

7. 攻击者在支付了移除流动性的手续费用后,总共提取了43,999,999,921,036 USDC(LP-USDC)。

8. 攻击者偿还了闪电贷款,并以多个稳定币的形式获利约850万美元。

  • 2,425,762 USDC
  • 1,946,900 USDC.e 
  • 1,552,550 USDT
  • 1,217,581 USDT.e
  • 687,369 BUSD
  • 691,984 DAI.e 

在撰写本文时,共大约900万美元被盗。其中攻击者部署的合约中仍有价值850万美元的资产;171,000美元在攻击者的地址(EOA);399,400美元在一个Aave池。

漏洞分析

造成该事件的漏洞在于MasterPlatypusV4合约的函数emergencyWithdraw偿付能力检查出现问题。其偿付能力检查没有考虑到用户的负债价值,而只检查了债务金额是否达到最大限额。偿付能力检查通过后,合约允许用户提取所有存入的资产。

函数platypusTreasure.isSolvent会返回两个值。第一个值是solvent,是一个决定了用户的债务金额是否低于借款限额的布尔值。第二个值debtAmount则显示用户所欠的债务金额。

如果用户的债务额不超过用户抵押物的95%的借款限额,那么solvent的值将为true。

然而,在emergencyWithdraw函数中,偿付能力检查只验证了布尔值solvent,而忽略了债务金额。这意味着,如果用户的债务不超过借款限额,用户可以调用函数emergencyWithdraw来提取所有存入的抵押品。

Avalanche