DeFi协议MIM_Spell遭黑客“偷袭”,损失超600万美元!

Beosin
Beosin 机构得得号

Jan 31, 2024 Beosin是总部位于新加坡的全球知名区块链安全公司,为区块链生态提供代码安全审计,安全风险监控、预警与阻断,虚拟资产被盗追回,KYT/AML等“一站式”安全产品+服务,已为全球2000多个区块链企业服务,保护客户资产5000多亿美元。

摘要: 北京时间2024年1月30日,据Beosin旗下EagleEye安全风险监控、预警与阻断平台监测显示,DeFi协议MIM_Spell遭黑客闪电贷攻击,导致了超600万美元的损失。

北京时间2024年1月30日,据Beosin旗下EagleEye安全风险监控、预警与阻断平台监测显示,DeFi协议MIM_Spell遭黑客闪电贷攻击,导致了超600万美元的损失。目前攻击者将被盗资金兑换为ETH,并转移到两个攻击者地址上,Beosin KYT将对资金进行持续监控,同时我们对本次漏洞进行了分析。

漏洞分析

该事件发生的主要原因是攻击者利用了项目方合约使用了向上取整的算法,并且控制了参数为1,将向上取整的误差控制的最大,从而导致账本失衡。

合约存在两个函数,分别是borrow和repay,一个是向合约借钱,一个是还钱给合约。

Borrow函数将指定借款数额,并且通过比例转换计算出债务值,更新到调用者的总债务值。如下图,这里合约的add算法采用了向上取整。

Borrow函数将指定还款债务值,并且通过比例转换计算出还款数额,将还款数额转移到本合约。如下图,这里合约的sub算法依然采用了向上取整。 

了解了借款和还款的过程,我们来看看黑客是如何利用该漏洞的。

黑客先将合约的借款数额与债务值控制为了0与97(如何控制将在下一节介绍)。

接下来不停调用borrow和repay函数,并且借款和还款数值都为1,最后将借款数额与债务值控制为了0和120080183810681886665215049728,导致比例严重失衡。

根据上述代码规则(elastic=0,base=97),当攻击者调用一次borrow并传入1时,两个账本将变为elastic=1、base=98(elastic为0时,将按数值同步增加),再次调用一次borrow并传入1时,将变成elastic=2、base=196(elastic不为0时,将按比例同步增加)。

接下来攻击者调用repay函数传入1,将调用sub函数,此时计算出来的elastic应该等于1*1/196=>0,但是算法向上取整,导致计算出来elastic=1,结果将变成elastic=1、base=195。可以看到,此时elastic不变,base却翻倍。

攻击者通过多次上述方式,将elastic=0、base=120080183810681886665215049728。最终通过一笔borrow将合约500多万MIM借贷出来。

攻击流程


明白了函数问题点,我们来看看攻击者是如何实施攻击的(其中一笔交易为例)。

1.攻击者首先借贷了30万枚MIM。

2.随后,攻击者在回调函数中查询借款数额与债务值,可以看到,此时为24万和23万。3.接下来攻击者调用repayForAll函数,归还了24万MIM代币,将elastic控制得极小4.接下来,攻击者通过repay函数归还了其他用户的负债,最终将借款数额与债务值控制为了0与97。 5.攻击者新创建合约,并通过上诉borrow与repay的方式,将借款数额与债务值控制为了0和120080183810681886665215049728。 6.最终通过一笔borrow将500万MIM借贷出来,并归还闪电贷。 

资金追踪

截止发稿,被盗的超600万美元的资金,全部被攻击者兑换为了ETH,并且一直分散存在黑客地址未移动,Beosin KYT反洗钱平台将对资金进行持续监控。


Beosin作为一家全球领先的区块链安全公司,在全球10多个国家和地区设立了分部,业务涵盖项目上线前的代码安全审计、项目运行时的安全风险监控、预警与阻断、虚拟货币被盗资产追回、安全合规KYT/AML等“一站式”区块链安全产品+服务,公司致力于Web3生态的安全发展,已为全球3000多个企业提供区块链安全技术服务,包括HashKey Group、Amber Group、BNB Chain等,已审计智能合约和公链主网超3000份,包括PancakeSwap、Ronin Network、OKCSwap等。

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 Beosin 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信