freeBuf
主站

分类

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

特色

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

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

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

FreeBuf+小程序

FreeBuf+小程序

SharkTeam:Midas Capital攻击事件原理分析
2023-06-19 14:52:59
所属地 江苏省

北京时间2023年6月18日,Midas Capital遭受攻击,攻击者已获利约60万美元。

1687157456_648ffad0e6c08ab968d4f.png!small

SharkTeam对此事件第一时间进行了技术分析,并总结了安全防范手段,希望后续项目可以引以为戒,共筑区块链行业的安全防线。

一、事件分析

攻击者地址:

0x4b92cc3452ef1e37528470495b86d3f976470734

攻击合约:

0xc40119c7269a5fa813d878bf83d14e3462fc8fde

被攻击合约:

0xF8527Dc5611B589CbB365aCACaac0d1DC70b25cB

攻击交易:

0x1ebc03f0f2257c275f4990b4130e6c3e451125aa98ee8bbde8aba5dc0320c659

攻击流程:

(1)攻击者(0x4b92cc34)调用攻击合约(0xc40119c7)的0x117741f7函数,然后首先调用被攻击合约(0xF8527Dc5)的mint函数将518614966827953435094个sAMM-HAY/BUSD代币转换为2个fsAMM-HAY-BUSD代币,也就是质押币。

1687157466_648ffada5c6e754446756.png!small

(2)随后调用被攻击合约(0xF8527Dc5)的redeemUnderlying函数提取518614966827953435091个sAMM代币。并未选择全部提取,而是剩了3个。但注意此时只从攻击合约转移走了1个fsAMM代币。

1687157473_648ffae1ee80779aed6b4.png!small

(3)然后又调用了被攻击合约(0xF8527Dc5)的redeemUnderlying函数,又提取518096869957995439653个sAMM代币,由于攻击合约(0xc40119c7)账户中还存有1个fsAMM代币,所以能够成功提取。

1687157480_648ffae8bbf5c088f0cb5.png!small

(4)循环上面的操作,并且随着套利的过程,mint的数量翻倍,调用redeemUnderlying函数的次数也随之翻倍。

1687157487_648ffaef7b0fc551659a2.png!small

1687157493_648ffaf50b35b96afc341.png!small

(5)在多次攻击交易后,最后将获得的sAMM代币换成BUSD,HAY,ANKR,WBNB,ankrBNB等获利离场。

1687157501_648ffafd80ba859e1a2c2.png!small

二、漏洞分析

由于被攻击合约(0xF8527Dc5)目前的逻辑合约并不开源,我们只能从trace和之前的逻辑合约中找线索。我们发现代码中fork了compound的代码,并与hundred Finance相同,引入了第三方运算库。

1687157520_648ffb104dfcb1dea9b2a.png!small

1687157527_648ffb17879f6d291384e.png!small

1687157538_648ffb224f57f4fd10531.png!small

而在divUInt函数中,使用了a/b,计算上没有问题,但由于solidity不支持浮点数的运算,所以会向下取整。而攻击者(0x4b92cc34)每次调用redeemUnderlying函数都对输入的数量都进行严格控制,就会导致计算结果出现1.99999999999...这种情况,但默认向下取整,所以计算结果是1。

在第三步中,攻击合约(0xc40119c7)少取了一点sAMM代币,那么计算出的结果就变成了1。所以攻击者(0x4b92cc34)每次质押后提取到的本金都会翻倍。

三、安全建议

本次事件发生原因是由于被攻击合约(0xF8527Dc5)中引入了计算库,而在redeemUnderlying函数中计算攻击者(0x4b92cc34)需要转入的fsAMM代币数量都会出现向下取整的情况,导致攻击者(0x4b92cc34)本身需要付出的代价减半,重复套利。

针对本次攻击事件,我们在开发过程中应遵循以下注意事项:

(1)solidity不支持浮点数运算,在开发整数运算时推荐先乘后除,或使用合适的精度。

(2)项目上线前,需要向第三方专业的审计团队寻求技术帮助。

About Us

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

官网:https://www.sharkteam.org

Twitter:https://twitter.com/sharkteamorg

Discord:https://discord.gg/jGH9xXCjDZ

Telegram:https://t.me/sharkteamorg

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