ONO:千万美元被盗: DeFi 平台MonoX Finance被黑分析_RoboFi Token

2021年11?30?,据慢雾区消息,DeFi平台MonoXFinance遭遇攻击,本次攻击中约合1820万美元的?WETH和1050万美元的MATIC被盗,其他被盗Token包括WBTC、LINK、GHST、DUCK、MIM和IMX,损失共计约3100万美元。慢雾安全团队第?时间介?分析,并将简要分析结果分享如下。

攻击核心

本次攻击的核?在于利?swap合约中没有对池中传?和传出代币是否相同作检查,以此利?价格更新机制的缺陷,使得攻击者传?和传出代币相同时,价格被二次计算并覆盖,导致代币价格不断被推?,并以此代币换出池中的其他代币来获利。

相关信息

MonoX是?种新的DeFi协议,使?单?代币设计?于流动性池。这是通过将存?的代币与vCASH稳定币组合成?个虚拟交易对来实现的。其中的单?代币流动性池的第?个应?是?动做市商系统-Monoswap,它在2021年10?时推出。

攻击者地址1:

0xecbe385f78041895c311070f344b55bfaa953258

攻击者地址?2:

0x8f6a86f3ab015f4d03ddb13abb02710e6d7ab31b

美SEC起诉Binance之前,交易员发起上千万美元BNB卖单:金色财经报道,在6月5日美国证券交易委员会(SEC)对加密货币交易所Binance提起诉讼之前,一些交易员发起上千万美元的BNB卖单。TradingView的数据显示,UTC时间6月4日11:45PM和6月5日1:45AM,平台上出现价值3700万美元BNB/USDT卖单。

根据Coinalyze的数据,BNB的未平仓合约,即投资者持有的未偿付衍生品合约总数,在6月5日当天的前9个小时内增加了近3000万美元,这也发生在SEC宣布指控币安混合客户资金并经营未注册证券交易所之前。

SEC在诉讼中称BNB为证券,在周一SEC起诉币安后的一小时内,BNB的价格从300美元下跌超过9%至272美元。(Coindesk)[2023/6/10 21:27:43]

攻击合约?1:

0xf079d7911c13369e7fd85607970036d2883afcfd

攻击合约2:

0x119914de3ae03256fd58b66cd6b8c6a12c70cfb2

攻击交易1:

https://etherscan.io/tx/0x9f14d093a2349de08f02fc0fb018dadb449351d0cdb7d0738ff69cc6fef5f299

CZ:Binance因安全维护每月短信成本超过千万美元:1月15日消息,Binance币安创始人 CZ 发布推文称,Binance 每月仅在 SMS(短信息服务)上的花费已超过 1 千万美元,安全维护并不便宜。[2023/1/15 11:13:00]

攻击交易2:

https://polygonscan.com/tx/0x5a03b9c03eedcb9ec6e70c6841eaa4976a732d050a6218969e39483bb3004d5d

攻击细节

首先攻击者调用Monoswap.swapExactTokenForToken:

0.1个WETH换出79.986094311542621010个MONO。

接着攻击者利用漏洞移除池子中其他用户的流动性,并为添加攻击合约的流动性以此来获取最大的利益。

这里移除流动性处的漏洞在Monoswap.sol中的471-510行,移除池中流动性时通过removeLiquidity函数调用_removeLiquidityHelper函数,而这两个函数都未做调用者和传入的to参数的身份验证,所以可直接移除任意用户在池中的流动性。

Conor:SBF或能接触到他的钱包的人很可能在多个区块链上转移了数千万美元的先前未报告的交易:金色财经报道,Coinbase员工Conor在社交媒体上称,SBF(或能接触到他的钱包的人)很可能在Avalanche、BSC、Arbitrum和Polygon区块链上转移了数千万美元的先前未报告的交易。最近在1月2日和1月3日也有活动,我发现一个有3000多万美元的接收钱包,此外,我浏览了链接到SBF的每个地址并检查了其他区块链。ETH的私钥在其他EVM链上工作,我总共发现了12个以前未被媒体报道的钱包。这些钱包将大约14.4万美元的资产转移到了各个地方,包括币安。

在Arbitrum上收到资金的钱包尤其有趣,它之前在11月13日,即FTX宣布破产后的2天,获得了1266 ETH的种子,它在其他链(BSC、FTM等)上也有几千万的资金。[2023/1/6 10:24:38]

移除0x7b9aa6的流动性,把1670.7572297649224个MONO和6.862171986812230290个vCASH转出给0x7b9aa6;

分析 | 金融时报:仅 10 家加密货币对冲基金资产管理规模逾千万美元:据链闻消息,英国金融时报援引普华永道和数字资管公司 Elwood 的报告称,150 家加密货币对冲基金中只有 10 家管理的资产逾 1000 万美元。该报告指出,监管机构正在加大对加密货币领域的监督力度,在该领域基金往往没有一致的行政管理、董事会监督,以及更为成熟的净资产价值报告。今年 2 月彭博社报道称,众多区块链对冲基金越来越像风险投资机构,随着虚拟货币价格大幅下跌,这些对冲基金开始考虑用风险投资机构的运作方式在市场上寻找生路。例如,Polychain 最近为 1.75 亿美元的基金募资时,要求资金的锁定期增加到了 7 年。[2019/5/13]

移除cowrie.eth的流动性,把152.9745213857155个MONO和0.628300423692773565个vCASH转出给cowrie.eth;

移除0xab5167的流动性,把99940.7413658327个MONO和410.478879590637971405个vCASH转出给0xab5167;

为攻击合约1在MONO代币流动池创建流动性。

硅谷区块链视频平台 Lino 获真格基金领投千万美元融资,UC伯克利学霸要颠覆Youtube:据悉,硅谷全华人团队创办的区块链视频平台 Lino 获真格基金领投的千万美元融资, FBG Capital,DFund等机构参与 。创始人魏杰全表示,Lino http://www.lino.network :目前主要面向海外市场,是一个完全自治的去中心化视频平台。创始团队利用区块链的去中心化特性,确定每个视频作者的唯一性。同时,其知识产权也能很好地记录在区块链上并得到相应的保障。Lino 平台不会向创作者抽成,内容产出的价值完全归作者所有。魏杰全提供的解决方案中,Lino 区块链网络将不会收取转账费用,而是使用动态带宽限制的方法来分配整个网络的带宽,每个用户根据自己手里的代币 LNO 按照比例获得带宽。目前,团队已经完成代币系统的开发,这笔融资将会用于视频平台搭建。[2018/1/16]

紧接着攻击者调??55?次Monoswap.swapExactTokenForToken以此来不断堆?MONO的价格。

这里攻击的核心是在Monoswap.sol中的swapExactTokenForToken函数,攻击者传入MONO代币使得tokenIn和tokenOut是相同的代币。

跟到swapIn函数中:

可以发现在swapIn函数中,调用了函数getAmountOut来计算价格。接着跟到getAmountOut函数中发现是利用了_getNewPrice函数来计算tokenInPrice和tokenOutPrice。

跟到_getNewprice函数中,发现当计算tokenInPrice时候传入的txType参数为TxType.SELL,此时:

当计算tokenOutPrice时候传入的txType参数为TxType.BUY,此时:

如果传入和传出为同一种代币时,价格计算式中的四个变量都相同,所以很容易得出tokenOutPrice会比tokenInPrice要大。

由于tokenIn和tokenOut是同一个token,swapIn函数在计算完价格后会再次调用_updateTokenInfo函数,使得tokenOutPrice的更新会覆盖tokenInPrice的更新,所以导致这个token的价格上涨。

最后攻击者调用swapTokenForExactToken函数用MONO来换出池子中的其他代币。

swapTokenForExactToken函数中调用了swapOut函数,而swapOut函数中计算价格是调用的getAmountIn函数。

在该函数中由于tokenInPoolPrice是取的MONO代币在池中的价格,而此价格在之前已被推高,导致tokenInPrice变大,计算最后的amountIn变小,用更少的MONO换出了原来相同数量的WETH、WBTC、MONO、USDC、USDT、DUCK、MIM、IMX等池子中的代币。

攻击者最终把攻击获利转入地址

0x8f6a86f3ab015f4d03ddb13abb02710e6d7ab31b。

以上为以太坊主链上的攻击分析,此外,攻击者除了在以太坊主链上进行攻击外,还在Polygon上进行了同样的攻击,攻击手法与以太坊主链上相同,此处不做过多重复的分析。

据慢雾AML统计,MonoXFinance最终损失约3400万美元,包括约2.1K个WETH、1.9M个WMATIC、36.1个WBTC、143.4K个MONO、8.2M个USDC、9.1M个USDT、1.2K个LINK、3.1K个GHST、5.1M个DUCK、4.1K个MIM以及274.9个IMX。

总结

本次攻击是利用了swap合约里没有对池中传入和传出代币作检查,从而利用价格更新机制的问题,由于在swap合约中会对池中传入和传出的代币的价格调用同一个函数_upTokenInfo来进行更新,而当传入和传出的代币为同一种代币时,第二次调用_upTokenInfo函数时,通过价格计算后的更高的tokenOutPrice会覆盖掉价格更低的tokenInPrice,以此来不断推高池中该代币的价格,最后可以换出池中其他的所有代币来获利离场。

By:九九@慢雾安全团队

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

区块博客

[0:15ms0-5:611ms