首页 > 区块链 > 不安分的黑客又“偷袭”?MonoX被攻击事件全解析
区块戏说  

不安分的黑客又“偷袭”?MonoX被攻击事件全解析

摘要:区块链态势感知11月30日,链必应-区块链安全态势感知平台舆情监测显示,自动做市商协议MonoX遭闪电贷攻击,获利约3100万美元。关于本次攻击,成都链安技术团队第一时间进行了事件分析。#1 事件概览攻击发生之后,MonoX在官方推特确认其合约遭到攻击,团队正在调查并将尽最大努力追回被盗资金。Mon

11月30日,链bing搜索-区块链技术安全性入侵检测服务平台舆情监测表明,全自动做市商协议书MonoX遭闪电贷进攻,盈利约3100万美金。有关此次进攻,成都市链安技术性精英团队第一时间开展了事情剖析。

#1 事情概述

进攻产生以后,MonoX在官方网twiter确定其合同遭受进攻,精英团队正在调查并将尽最大的勤奋讨回失窃资产。

不安分的黑客又“偷袭”?MonoX被攻击事件全解析

MonoX应用一侧代币池实体模型,其应用vCASH稳定币与AMM给予的代币建立虚似的买卖对。简易而言,MonoX建立的是代币-vCASH买卖对,加上流通性时,只要加上代币,开展随意代币兑换时,兑换途径为:代币A -> vCASH -> 代币B,而不用像Uniswap一样通过好几个买卖对:代币A -> Pair1-> Pair2-> Pair3-> Token B。

#2 事情深入分析

攻击者应用同样的详细地址

0xEcbE385F78041895c311070F344b55BfAa953258对以太币及其MATIC上的MonoX进行了进攻,在俩个服务平台开展进攻所实施的合同一致。进攻买卖为:

以太币:

0x9f14d093a2349de08f02fc0fb018dadb449351d0cdb7d0738ff69cc6fef5f299

MATIC:

0x5a03b9c03eedcb9ec6e70c6841eaa4976a732d050a6218969e39483bb3004d5d

因为2个服务平台编码完全一致,下边的研究将根据以太币上的进攻买卖开展。

Round 1

将 0.1 WETH 根据 Monoswap中兑换为79.98609431154262101 MONO;

不安分的黑客又“偷袭”?MonoX被攻击事件全解析

图 1 WETH兑换MONO

Round 2

清除Monoswap全部的流通性。这儿运用了Monoswap合同中的随意详细地址流通性清除系统漏洞。

漏洞1:

Monoswap合同中未检验流通性的使用者to是不是为msg.sender。_removeLiquidity函数公式中,如下图2所显示,第443行,获得调用者(进攻合同)最后一次加上流通性的时间格式,回到结论是0,因而第445行的检验根据。第446行,topLPHolderOf要不是调用者(进攻合同)详细地址,第447行的检验根据。此后清除流通性有关编码中,再无msg.sender有关的实际操作。

不安分的黑客又“偷袭”?MonoX被攻击事件全解析

图 2 _removeLiquidity源代码

不安分的黑客又“偷袭”?MonoX被攻击事件全解析

图 3 第一次清除流通性内部结构启用关键点

不安分的黑客又“偷袭”?MonoX被攻击事件全解析

图 4 清除Monoswap中MONO池全部的流通性

Round 3

加上非常少总数的MONO到Monoswap中,这一步是为了更好地后边迅速提高MONO的价钱做准备。

不安分的黑客又“偷袭”?MonoX被攻击事件全解析

图 5 进攻合同加上流通性

Round 4

运用Monoswap合同中的代币兑换价钱覆写系统漏洞,不断开展相同代币的兑换,拉涨MONO的价钱。第3步攻击者将Monoswap合同中MONO的储藏量操纵到了一个较小的值,目地便是快速的以较低的MONO总数来拉涨MONO的价钱。

系统漏洞2:

Monoswap合同的代币兑换全过程为:查验兑换主要参数是不是正常的,随后测算应I/O代币的总数及其代币兑换后的价钱,最终实行兑换实际操作并将新的代币价钱载入帐簿。以上逻辑性在差异种代币兑换的过程中会正常的运作。可是在相同代币兑换时,将发生两处问题:

(1) 在_getNewPrice函数测算应I/O代币总数时,未充分考虑兑换全过程中买卖池代币储藏量的变动,相同代币是根据同样的原始价钱开展兑换后价钱的测算。

(2)在最后一步升级代币全过程中,未充分考虑相同代币开展兑换时,兑出代币的价钱升级实际操作(图6 第841行)会遮盖兑入代币升级的实际操作(图6 第830行)。该系统漏洞造成MONO代币兑换MONO代币时,MONO的价钱出现异常提高。除此之外不仅攻击者应用的swapExactTokenForToken函数存有该问题,swapTokenForExactToken函数也出现该问题。

不安分的黑客又“偷袭”?MonoX被攻击事件全解析

图 6 swapIn函数源代码

不安分的黑客又“偷袭”?MonoX被攻击事件全解析

图 7 兑换全过程主要参数测算

不安分的黑客又“偷袭”?MonoX被攻击事件全解析

图 8 兑换后价钱测算

不安分的黑客又“偷袭”?MonoX被攻击事件全解析

图 9 swapOut函数公式源代码

如今看一下攻击者是怎样运用系统漏洞2开展伤害的:

(1)如下图10所显示,原始MONO的价钱为5.218 vCASH/MONO。

不安分的黑客又“偷袭”?MonoX被攻击事件全解析

图 10 原始MONO价钱

随后攻击者不断开展MONO->MONO的兑换,一共完成了55次兑换,如下图所示:

不安分的黑客又“偷袭”?MonoX被攻击事件全解析

图 11 不断兑换,拉涨MONO价钱

对在其中一笔兑换买卖开展剖析,每一次兑换的总量是买卖池里MONO的总产量减掉1,这也是可以较大提高MONO价钱的兑换总数(使图8 _getNewPrice第527行,分母为1)。此外因为买卖池里MONO的总产量较低(第3步的实际操作),攻击者已经根据第1步确保了有充足的账户余额开展兑换实际操作。

不安分的黑客又“偷袭”?MonoX被攻击事件全解析

图 12 MONO兑换关键点

截止至兑换完毕时,MONO的价位已经被拉升到843,741,636,512.366 vCASH/MONO。进攻合同中剩下51.92049285389317 MONO。

不安分的黑客又“偷袭”?MonoX被攻击事件全解析

图 13 最后的MONO价钱

(2)根据Uniswap V2的USDC/WETH池借入了847.2066974335073 WETH。随后攻击者根据Monoswap将0.0709532091008681 MONO 兑换为4,029,106.880396 USDC,随后将USDC退还给USDC/WETH池。留意,这儿事实上是攻击者将从Monoswap中兑换的USDC到Uniswap V2中兑换为WETH,而不是闪电贷进攻。

(3)攻击者全部转走的财产如下所示:

货币

总数

USDC

4,029,106.880396 (兑换为847.2066974335073 WETH)

USDT

4,525,120.098829 (兑换为949.0325798508261 WETH)

WETH

452.9120530334938

WBTC

21.42797145

DUCK

5,155,863.718616853

MIM

4,125.858256772

IMX

274.9390440877583

全部失窃财产所有发送至

0x8f6a86f3ab015f4d03ddb13abb02710e6d7ab31b详细地址。

现阶段新项目方已经和攻击者开展了沟通交流,成都市链安将不断对于此事情况开展监管。

#3 事情总结

此次进攻事情中,攻击者运用了合同中的2个系统漏洞:(1)一切详细地址都能够随意清除特定地点的流通性;(2)特殊情况下的价钱载入实际操作遮盖问题。

提议新项目放在开展合同开发设计流程中搞好管理权限的查验;在开发设计及其检测过程中将特殊情况列入考虑到,例如相同代币转帐。

免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:msy2134。