okx

MonoX遭盗:千万美元资产全被攻击者盗走

时间:2023-06-15|浏览:147

免责声明:本文仅旨在传递更多市场信息,不构成任何投资建议。文章仅代表作者观点,不代表官方立场。

小编提醒:请注意保护自己的资产安全,谨慎投资。

来源:慢雾科技

原标题:千万美元被盗——DeFi平台MonoXFinance被黑分析

作者:九九@慢雾安全团队

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

攻击合约1:

0xf079d7911c13369e7fd85607970036d2883afcfd

攻击合约2:

0x119914de3ae03256fd58b66cd6b8c6a12c70cfb2

攻击交易1:

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

攻击交易2:

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

攻击细节:

1、首先攻击者调用Monoswap.swapExactTokenForToken:0.1个WETH换出79.986094311542621010个MONO。

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

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

移除0x7b9aa6的流动性,把1670.7572297649224个MONO和6.8620290个vCASH转出给0x7b9aa6;移除cowrie.eth的流动性,把152.9745213857155个MONO和0.628300423692773565个vCASH转出给cowrie.eth;移除0xab5167的流动性,把99940.7413658327个MONO和410.478879590637971405个vCASH转出给0xab5167;为攻击合约1在MONO代币流动池创建流动性。

3、紧接着攻击者调用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的价格上涨。

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

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

5、攻击者最终把攻击获利转入地址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来进行更新,而当传入和传出的代币为同一

« 上一条| 下一条 »
区块链交流群
数藏交流群

合作伙伴

趣玩币 装修装饰网 爱网站 乐评网 起名取名网 币圈ICO官网 旅游资讯网 借春秋财经 妈妈知道 美白没斑啦 数字财经 佩佩蛙官网 元宇宙Web 币爸爸 黄金行情 天天财富 宠物丫 去玩呗SPA 宝宝起名 币圈官网 百科书库 皮卡丘资讯 秒懂域名 玩合约 趣开心资讯 币圈论坛 百悦米 代特币圈 聚币网 玩票票财经 培训资讯网 二手域名 减肥瘦身吧 金色币圈 谈股票 借春秋 非小号行情 數字黃金 茶百科 兼职信息网 周公解梦 今日黄金
在区块链世界中,智能合约不仅是代码的信任,更是商业的革命。通过了解其在供应链、版权保护等领域的应用,您将真正体验到智能合约的无限可能性
区块链世界GxPiKaQiu.com ©2020-2024版权所有 桂ICP备16002597号-2