freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

闪电贷攻击+业务逻辑漏洞:Platypus Finance事件分析
2023-02-17 19:51:16
所属地 江苏省

北京时间2023年2月17日凌晨,Avalanche 上的 DeFi 平台Platypus Finance遭遇闪电贷攻击,被盗走约850 万美元。SharkTeam第一时间对此事件进行了技术分析,并总结了安全防范手段,希望后续项目可以引以为戒,共筑区块链行业的安全防线。

1676634260_63ef689404577b982d3ce.png!small

、事件分析

攻击者地址:0x67AfDD6489D40a01DaE65f709367E1b1D18a5322

Avalanche攻击交易:0x1266a937c2ccd970e5d7929021eed3ec593a95c68a99b4920c2efa226679b430

攻击流程:

1.首先,攻击者(0x67AfDD64)通过闪电贷方式,从Aave上贷了44,000,000个USDC。然后,将所贷的USDC全部存入USDC池中,同时获得相等数量的LP-USDC。

1676634264_63ef6898701a7aeda3b84.png!small

2.攻击者(0x67AfDD64)将44,000,000个LP-USDC存入MasterPlatypusV4合约,合约地址为:0xc007f27b757a782c833c568f5851ae1dfe0e6ec7。

1676634268_63ef689c2bd18e19950a4.png!small

3.此时Platypus Finance平台抵押比率为4.92%,攻击者(0x67AfDD64)将44,000,100.592104个LP-USDC抵押并且借得41,794,533.64个USP。

1676634272_63ef68a0be807b74ab29f.png!small

4.由于攻击者(0x67AfDD64)抵押LP-USDC借来的USP数额没有超过平台的限额(95%),MasterPlatypusV4. emergencyWithdraw函数中的isSolvent变量总是为true。因此,攻击者(0x67AfDD64)可以提取抵押的LP-USDC。

5.攻击者(0x67AfDD64)移除流动性后,成功提取43,999,999个LP-USDC。

1676634277_63ef68a5af0077256b722.png!small

6.攻击者通过swap方法去获得多个稳定币。

1676634283_63ef68ab14a55d3679af9.png!small

7.最后攻击者偿还了闪电贷款,总共获利约为850万美元。

漏洞原因:

(1)MasterPlatypusV4. emergencyWithdraw函数中的isSolvent变量值总是true。

1676634287_63ef68afa428ea537013a.png!small

(2)在PlatypusTreasure(0xbcd6796177ab8071f6a9ba2c3e2e0301ee91bef5)合约中,isSolvent函数进一步调用内部封装函数_isSolvent。

1676634290_63ef68b212d1653e462ad.png!small

(3)在_isSolvent函数中,solvent 的值来自于debtAmount <= _borrowLimitUSP(_user, _token)。debtAmount 是借贷金额,_borrowLimitUSP是借贷限额。因此,solvent 恒定为true。

1676634296_63ef68b8d169fd659c1b3.png!small

截至2023年2月17日16时,攻击者钱包拥有多种稳定币,数额约为850万美元。

1676634300_63ef68bc8f8f2f70b6e1f.png!small

事件总结:

本次事件根本原因在于MasterPlatypusV4. emergencyWithdraw函数,它在检查偿付时,并未考虑到用户借贷债务的详细情况,而是直接检查用户债务是否达到借贷限额。只要检查通过,用户就可以提取全部资产。

二、安全建议

对于本次事件,合约开发人员可能在开发时未能完全考虑到业务逻辑的安全性。为了构建安全的智能合约,我们需要考虑其业务逻辑的安全性。我们在处理业务逻辑时,应该遵循以下操作要求:

(1)若使用低级调用方法,请确保通过检查返回值来处理调用失败的可能性

(2)函数接收参数时,需要验证输入的数据属性是否具有安全性和正确性

(3)在业务设计过程中要保证业务的严谨性、完整性以及经济模型的正确性

(4)需要向第三方专业的审计团队寻求技术帮助

About Us

SharkTeam的愿景是全面保护Web3世界的安全。团队由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约的底层理论,提供包括智能合约审计、链上分析、应急响应等服务。已与区块链生态系统各个领域的关键参与者,如Polkadot、Moonbeam、polygon、OKC、Huobi Global、imToken、ChainIDE等建立长期合作关系。

Twitter:https://twitter.com/sharkteamorg

Discord:https://discord.gg/jGH9xXCjDZ

Telegram:https://t.me/sharkteamorg

更多区块链安全咨询与分析,点击下方链接查看

D查查|链上风险核查https://app.chainaegis.com

# web安全 # 区块链安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者