TOK:一文解析DeFi平台MonoX被盗千万美元全过程

原标题|千万美元被盗——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?时推出。

Grayscale:SEC对现货比特币ETF发行人的“不公平歧视”违反了证券交易法:金色财经报道,Grayscale声称,SEC对现货比特币ETF发行人的“不公平歧视”违反了证券交易法。灰度认为现货和期货比特币ETF带来类似的风险,应该同等对待。此外,灰度认为,现货和比特币期货ETF的定价都是基于相同的基础现货市场,这也是它们应该受到平等对待的另一个原因。[2023/7/5 22:17:55]

攻击者地址1:

0xecbe385f78041895c311070f344b55bfaa953258

攻击者地址?2:

0x8f6a86f3ab015f4d03ddb13abb02710e6d7ab31b

攻击合约?1:

0xf079d7911c13369e7fd85607970036d2883afcfd

穆迪:6月15日对美国的AAA评级至关重要:金色财经报道,穆迪表示,6月中旬美国支付国债利息对维持最高的AAA评级至关重要。6月15日,美国财政部应支付约20亿美元的利息。美国财长耶伦上周日警告称,如果国会不提高债务上限,“在能够支付所有账单的情况下,支撑到6月15日的可能性相当低”。“这对我们来说是一个非常重要的日子,”穆迪高级副总裁William Foster称,虽然利息偿付规模相对较小,但“如果没有支付,那就是违约。我们将把美国评级下调一级,从AAA降至AA1。”Foster强调,穆迪预计国会和白宫将在财政部用尽其特殊会计措施以保持债务上限之前,就针对提高或暂停债务上限达成协议。[2023/5/26 10:40:57]

攻击合约2:

0x119914de3ae03256fd58b66cd6b8c6a12c70cfb2

攻击交易1:

Binance新增CITY/TRY、FLOKI/TRY交易对:5月23日消息,Binance将于5月24日16:00上线CITY/TRY、FLOKI/TRY交易对。对于FLOKI/TRY交易对,用户不能使用市价单的成交额和滑杆移动区域功能下单,但仍可使用市价单-数量进行市价单下单。TRY是法定货币代码,并非数字货币代码。[2023/5/23 15:20:30]

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

攻击交易2:

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

专注于比特币的新风投公司Ego Death Capital正在为首只基金筹集3000万美元:金色财经报道,根据提交给美国证券交易委员会(SEC)的监管文件,致力于比特币生态系统的新风险投资公司Ego Death Capital正在为其第一只基金筹集3000万美元。文件显示,Ego Death Capital LP于9月2日开始募资,截至9月15日,已从28名投资者那里筹集了11,425,000美元。

Ego Death合伙人Nico Lechuga表示,一旦筹集到所有资金,该基金计划投资12至15家公司,平均支票规模为100万至150万美元。Lechuga调了比特币在新兴市场的重要性,尤其是那些没有银行账户的人群,因此需要不断扩大比特币生态系统。他说,“我们非常关注我们所说的第3层(应用层)和某种第2.5层,即基础设施”。[2022/10/19 17:31:28]

攻击细节

Tether:墨西哥对加密货币和稳定币的需求在不断增长:5月27日消息,在世界经济论坛峰会期间接受采访时,Tether和Bitfinex首席技术官Paolo Ardoino表示,他来到达沃斯的原因是为了展示加密货币的实用性。Tether发现,墨西哥对加密货币和稳定币的需求不断增长,尤其是在企业中。

当被问及墨西哥采用比特币作为法定货币的前景时,Ardoino说,“比特币在墨西哥成为法定货币的道路将比在萨尔瓦多更复杂,因为前者已经拥有一种官方货币。因此,尽管比特币可能无法在短期内获得法定货币的地位,但它可能成为与比索一起使用的“事实上的法定货币。”

金色财经此前报道,Tether推出与墨西哥比索挂钩的稳定币MXNT。(Cointelegraph)[2022/5/27 3:46:10]

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

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

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

移除0x7b9aa6的流动性,把1670.7572297649224个MONO和6.862171986812230290个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来进行更新,而当传入和传出的代币为同一种代币时,第二次调用_upTokenInfo函数时,通过价格计算后的更高的tokenOutPrice会覆盖掉价格更低的tokenInPrice,以此来不断推高池中该代币的价格,最后可以换出池中其他的所有代币来获利离场。

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

地球链

火币下载DAO:DAOrayaki |链上贿选和黑暗DAO的崛起

区块链似乎是适用于线上投票的完美技术。它们可以充当“公告板”,即在几十年的电子投票研究中被假设的全球分类账。更妙的是,区块链使智能合约成为可能,它可以自主地执行链上选举,并排除选举机构.

[0:46ms0-0:897ms