SharkTeam:Midas Capital攻击事件原理分析

  • A+
所属分类:Defi

chatGPT账号

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

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

一、事件分析

攻击者地址:

0x4b92cc3452ef1e37528470495b86d3f976470734

攻击合约:

0xc40119c7269a5fa813d878bf83d14e3462fc8fde

被攻击合约:

0xF8527Dc5611B589CbB365aCACaac0d1DC70b25cB

攻击交易:

0x1ebc03f0f2257c275f4990b4130e6c3e451125aa98ee8bbde8aba5dc0320c659

攻击流程:

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

WechatIMG97.jpeg

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

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

SharkTeam:Midas Capital攻击事件原理分析

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

WechatIMG100.jpeg

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

SharkTeam:Midas Capital攻击事件原理分析

二、漏洞分析

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

WechatIMG103.jpeg

WechatIMG104.jpeg

WechatIMG105.jpeg

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

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

三、安全建议

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

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

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

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

免责声明

发文时比特币价格:$27249

当前比特币价格:[crypto coins=”BTC” type=”text” show=”price”]

当前比特币涨幅:[crypto coins=”BTC” type=”text” show=”percent”]

免责声明:

本文不代表路远网立场,且不构成投资建议,请谨慎对待。用户由此造成的损失由用户自行承担,与路远网没有任何关系;

路远网不对网站所发布内容的准确性,真实性等任何方面做任何形式的承诺和保障;

网站内所有涉及到的区块链(衍生)项目,路远网对项目的真实性,准确性等任何方面均不做任何形式的承诺和保障;

网站内所有涉及到的区块链(衍生)项目,路远网不对其构成任何投资建议,用户由此造成的损失由用户自行承担,与路远网没有任何关系;

路远区块链研究院声明:路远区块链研究院内容由路远网发布,部分来源于互联网和行业分析师投稿收录,内容为路远区块链研究院加盟专职分析师独立观点,不代表路远网立场。

本文是全系列中第79 / 248篇:行业技术

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的电报
  • 这是我的电报扫一扫
  • weinxin
chatGPT账号
路远

发表评论

您必须登录才能发表评论!