前言
11月30日,知道创宇区块链安全实验室?监测到自动做市商协议MonoX.Finance遭黑客攻击,损失超3100万美元。实验室第一时间跟踪本次事件并分析。
简述攻击流程
本次攻击分析选用以太坊交攻击交易:
0x9f14d093a2349de08f02fc0fb018dadb449351d0cdb7d0738ff69cc6fef5f299
1、黑客首先通过swapExactTokenForToken函数将0.1WETH兑换为79.9MONO
数据:5 月以太坊上 NFT 市场交易量为 6.52 亿美元,跌幅为 48.7%:6月5日消息,据 The Block 研究总监 Lars 发推称,5 月链上交易总量减少 5.3% 至 1960 亿美元。稳定币链上交易量下降 4.2% 至 4646 亿美元;已发行供应量收缩 1.4% 至 1224 亿美元,其中 USDT 上升至 68.2%,新的 ATH 供应量为 835 亿美元,USDC 下降 22.2%。比特币矿工收入增长 13.7% 至 9.166 亿美元,ETH 质押者收入下降 34.5% 至 1.572 亿美元。5 月以太坊上 NFT 市场交易量下降 48.7%,减少至 6.52 亿美元,NFT 市场 Blur 由于 BLUR 代币激励已连续第四个月超越 OpenSea。此外,5 月以太坊网络共销毁 204,576 枚 ETH(约 3.801 亿美元)。以太坊今年 1 月开始通缩,自 2021 年 8 月上旬实施 EIP-1559 以来,以太坊总计销毁约 336 万枚 ETH(约 97.6 亿美元)。[2023/6/5 21:16:00]
2、重复利用函数removeLiquidity移除Monoswap合约中的流动性,直至全部移除
神鱼:AI或将改变区块链交互方式:5月5日消息,神鱼在“矿业 x Web3:回顾与展望--f2pool 十周年专场”推特 Space 中表示,AI 或将改变区块链交互方式,大量 AI 机器人可能会应用到区块链使用场景中,“这是十分值得期待和令人兴奋的”。[2023/5/5 14:45:32]
3、通过函数addLiquidity添加自己操控的流动性
4、重复调用函数swapExactTokenForToken实现MONO->MONO的不合理兑换
5、最终利用被以上操作抬高价格的MONO兑换了WETH、WBTC、MONO、USDC、USDT、DUCK、MIM、IMX等从而获利。
以太坊突破1900美元/枚:金色财经报道,行情显示,以太坊突破1900美元/枚,日内涨2.16%。[2023/4/26 14:28:10]
漏洞成因分析
分析攻击流程可以发现两个不合理的地方:
攻击者可以通过函数removeLiquidity移除了其他人添加的流动性
攻击者通过函数swapExactTokenForToken不断重复MONO兑换MONO的操作
检查源码
对函数removeLiquidity源码进行分析
三箭资本地址再转出16,000枚ETH至FTX:5月30日消息,据欧科云链链上天眼监测,今日15:37:39被OKLink ETH浏览器标记为Genesis Trading地址经由开头为“0x0D71”的地址向三箭资本地址转入16,000枚ETH,随后地址下的16,000枚ETH于16:07:07被转出至FTX。截至目前,5月份三箭资本地址已累计转出超42,700枚以太坊至FTX。[2022/5/30 3:50:45]
可以看到函数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合约在设计时没考虑到特殊情况下的价格覆盖问题,而可任意移除流动性的缺陷则更加方便黑客对于价格的操纵。
来源:金色财经
主持人:大家好,我是主持人Sunny,欢迎大家参加今天AMA,今天跟大家聊聊分拆BTC的项目BitANT:OP头矿,上线36小时TVL超360万刀.
1900/1/1 0:00:00原标题|盲人摸“DAO” 前序: “EverythingisMeme”,这句话在MemeC.oin爆发的那段时间里特别流行.
1900/1/1 0:00:0023:00-08:00 关键词:印度、游戏巨头育碧、加密投资公司10T、谷歌、富达、美国参议院银行委员会1.金色财经报道,基于Solana的的链上协议Metaplex的一站式NFT平台Holaplex宣布完成600万美元的种子轮融资.
1900/1/1 0:00:00大家好我是Qq站长,最近上线仅六天的链上游戏,在OKExChain交易量,排名第二,他到底拥有什么样的魅力。我们一起来解读一下,这只链游市场里面的独角兽.
1900/1/1 0:00:00在建立合作伙伴关系后,可以促进非洲的企业家通过互联网与他人建立联系,同时共享收益。WorldMobileGroup?已经为大学联网,并在桑给巴尔和其他坦桑尼亚地区创建了智能村庄.
1900/1/1 0:00:00聚焦区块热点,传递价值信息过去一周:Meta放宽加密货币广告方案;红杉资本宣布将2005年以来YouTube投资备忘录作为NFT拍卖;韩国计划推迟到2023年对加密货币征税;adidasOriginals将其推特头像换成BAYCNFT.
1900/1/1 0:00:00