TOK:MonoX.Finance安全事件分析

前言

11月30日,知道创宇区块链安全实验室?监测到自动做市商协议MonoX.Finance遭黑客攻击,损失超3100万美元。实验室第一时间跟踪本次事件并分析。

攻击涉及信息

此次安全事件共有两次攻击分别发生在以太坊和polygon上。

简述攻击流程

本次攻击分析选用以太坊交攻击交易:0x9f14d093a2349de08f02fc0fb018dadb449351d0cdb7d0738ff69cc6fef5f299

1、黑客首先通过swapExactTokenForToken函数将0.1WETH兑换为79.9MONO

2、重复利用函数removeLiquidity移除Monoswap合约中的流动性,直至全部移除

BRA(BRA)项目闪电贷攻击钱包将410枚BNB转至Tornado Cash:金色财经报道,据CertiK监测,BRA(BRA)项目闪电贷攻击事件中的接收钱包 0xE2Ba...... 已将一笔资金存入钱包 0xf7135......,该钱包随后将410枚BNB(约11.7万美元)转至Tornado Cash。[2023/1/13 11:09:51]

3、通过函数addLiquidity添加自己操控的流动性

4、重复调用函数swapExactTokenForToken实现MONO->MONO的不合理兑换

5、最终利用被以上操作抬高价格的MONO兑换了WETH、WBTC、MONO、USDC、USDT、DUCK、MIM、IMX等从而获利。

漏洞成因分析

Art Blocks Friendship Bracelet NFT系列在OpenSea上位居榜首:金色财经报道,在 Art Blocks 上铸造的生成艺术不可替代代币 (NFT)历来在市场上排名很高,其最新的免费铸造 Friendship Bracelets 系列也是如此。这 38,413 件藏品由 Art Blocks 创始人 Erick Calderon (Snowfro) 构思,由艺术家和日本生成艺术基金会总监 Alexis André 设计。动画艺术作品的灵感来自孩子们分享的新奇手镯,任何现有的 Art Blocks NFT 持有者都可以使用。

根据 Art Blocks的收藏页面,自 10 月下旬发布以来,持有者最多可以免费领取两个代币,直到周二的领取窗口期结束。认领期过后,该系列迅速登上二级市场OpenSea排行榜的首位。截至周二下午,该系列在 OpenSea 上的 24 小时交易量最高,为 996 ETH(超过 130 万美元),总交易量为 7,437 ETH(约合 990 万美元)。[2023/1/11 11:05:32]

分析攻击流程可以发现两个不合理的地方:

外媒:几乎最终泄露的加密法规MiCA文本在NFT方面是模糊的:金色财经报道,几乎最终泄露的加密法规MiCA文本在NFT上是模糊的,一些人担心可能会扼杀稳定币市场,但尽管如此该法案的总体接受度似乎是积极的。CoinDesk被告知,欧盟的加密资产市场监管法规(MiCA)可能会带来变革,即使业内一些人质疑它是否会实现为27个国家集团提供单一、清晰的规则手册的目标。

MiCA将要求加密公司向当局注册,持有足够的资金来锚定稳定币,并向新兴投资者提供清晰和公平的信息,多年后,MiCA文本现在几乎定稿。加密世界的发展速度比立法者更快,而这项法律(MiCA)已经走过了漫长的历程。(CoinDesk)[2022/9/28 5:57:38]

攻击者可以通过函数removeLiquidity移除了其他人添加的流动性攻击者通过函数swapExactTokenForToken不断重复MONO兑换MONO的操作

公链Sei:1%的代币供应量分配给激励测试网,并奖励社区早期成员:10月29日消息,公链Sei发推称,Sei代币供应量的1%分配给激励测试网,并奖励使用该链的Sei社区早期成员。Sei表示重视那些有强烈愿望推进、测试和开发Sei生态系统的用户。

据此前报道,公链Sei发布白皮书,称其引入Twin-Turbo共识和并行化Cosmos链。

今年8月,Sei Labs完成500万美元种子轮融资,Multicoin Capital领投,Coinbase Ventures、GSR、Flow Traders、Hudson River Trading、Delphi Digital、Tangent等参投。[2022/10/29 11:56:03]

检查源码

对函数removeLiquidity源码进行分析

可以看到函数removeLiquidity和它包含的内部函数_removeLiquidityHelper都没有对调用者进行权限限制,以及对需要被移除流动性的传参地址to进行验证,这导致了任意地址都能进行对该pool内所有流动性进行移除。

对函数swapExactTokenForToken源码进行分析

1、发现函数swapExactTokenForToken主要功能由函数swapIn实现,对函数swapIn进行跟进分析

2、发现获取token信息的函数getAmountOut,对函数getAmountOut进行跟进分析

3、发现tokenInPrice与tokenOutPrice的计算规则相同都是通过函数_getNewPrice计算,跟进到函数_getNewPrice

4、发现price的获取对应两种状态

SELL状态:价格=代币初始价格*代币存储量/(代币存储量+费用)

BUY状态:价格=代币初始价格*代币存储量/(代币存储量-费用)

很明显相同token在BUY状态下获取到的价格大于SELL状态

5.回到swapIn函数,当传入token价格被获取到后会按照token种类通过_updateTokenInfo进行token信息更新。

由于传入的token都为MONO所以:

当通过if(tokenIn==address(vCash))判断时,MONO获取到的价格是SELL状态下计算的价格;

当通过if(tokenOut==address(vCash))判断时,MONO获取到的SELL状态下的价格会被BUY状态下获取的价格覆盖;

因此当发生MONO兑换MONO操作时,MONO的价格会上升。

重新梳理攻击过程

第一步:黑客将0.1WETH兑换为79.9MONO作为启动资金

第二步:黑客移除了pool内全部流动性,防止攻击受到影响或者价格波动被检测到

第三步:黑客添加了自己控制的流动性,便于兑换操作

第四步:黑客通过重复MONO兑换MONO的操作,不断抬高MONO价格

第五步:利用已经被抬高的MONO兑换pool内其他资产达到获利目的

总结

本次安全事件问题其实并不复杂,主要原因在于monoswap合约在设计时没考虑到特殊情况下的价格覆盖问题,而可任意移除流动性的缺陷则更加方便黑客对于价格的操纵。

知道创宇区块链实验室官网

www.knownseclab.com

创宇存证平台|知道创宇唯一指定存证平台

创宇存证-可信数据,价值流转

联系我们

blockchain@knownsec.com

知道创宇区块链安全实验室导航

微信公众号

@创宇区块链安全实验室

官方网站

@知道创宇区块链安全实验室

微博

@知道创宇区块链实验室

https://weibo.com/BlockchainLab

知乎

@知道创宇区块链安全实验室

https://www.zhihu.com/org/zhi-dao-chuang-yu-qu-kuai-lian-an-quan-shi-yan-shi

Twitter

@KS_Blockchain

https://twitter.com/KSBlockchain

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

地球链

火币APP下载PEOPLE:关于ConstitutionDAO的投资经历

关于ConstitutionDAO这个项目,我是在非常偶然的情况下得知的。具体哪一天实在是记不得了,只记得是一天早上我无意中看推特时,看到某一条外国人的推是这么写的:ConstitutionDA.

[0:46ms0-0:842ms