当前位置:首页区块链维思合同遭黑客攻击分析

维思合同遭黑客攻击分析

前言

2020年7月1日,V 火币4遭到黑客攻击。接到情报后,慢雾安保小组对袭击进行了全面分析。以下是对此攻击的详细技术分析。

攻击细节

此攻击事务如下0xdd1120a90ed4112b634266d6a244b93ca86785317bc75f0e170ab0cd97c65224

通过交易概述,我们可以看到攻击者在Uniswap中使用0.9 火币4交换V 火币4,然后使用V 火币4在V 火币4 Er合同中操作,**盗取了大量的V 火币4。

维思合同遭黑客攻击分析

现在使用Oko合同浏览器分析具体的攻击细节(下图仅显示一部分)https://oko.palkeo.com/0xdd1120a90ed4112b634266d6a244b93ca86785317bc75f0e170ab0cd97c65224/

维思合同遭黑客攻击分析1

通过分析交易细节,我们可以发现攻击者首先创建了一个契约0x47ed415006c6f8052f05fe983f31d6d24b8fdb;通过该契约,调用了火币4 Er契约中的changeexcluded(unknown37217349)函数和transferfrom函数。

接下来,分析了这两个函数的具体代码

函数transferFrom(address from,address to,uint alue)public oerride返回(bool success){

如果(!mapAddress UU排除[消息发送者{

要求(aluelt;=uU折让[自][消息发送者], );

免税额[自][消息发送者]—=值;

}

转让(从、到、价值);

返回true;

}

如您所见,在transferfrom函数中,mapaddress_Uu被排除[消息发送者]具体逻辑为mapaddress_Uexcluded[消息发送者如果为false,将检查攻击者合约的授权金额,然后调用调用。传递函数。但这种逻辑显然行不通,攻击者契约没有任何授权限制。所以排除了mapaddress消息发送者]只能为true,然后直接调用传递函数进行传递。

接下来,我们分析如何使用mapaddress_Uexcluded[消息发送者]设置为真(T):

维思合同遭黑客攻击分析2

通过查看合同,我们可以发现:

初始化协定时,只添加地址的mapaddress(this)和burnaddress,如果exclusie设置为true,则有其他逻辑设置mapaddress_Uexclude。通过分析火币4 Er合约,可以发现changeexcluded函数可以实现mapaddress函数的排除设置。

功能更改排除(地址除外)外部{;

如果(!mapAddress_Uexcluded[排除]){

转让(消息发送者,地址(本),mapEra_u排放量[1]/16);

mapAddress排除[排除]=真实;

排除darray.push(不包括);excludedCount+=1;

总费用+=mapEra排放量[1]/16;

mapAddress UU块更改[排除]=区块编号;以及;

}其他{

转让(消息发送者,地址(本),mapEra_u排放量[1]/32);

mapAddress排除[排除]=错误;

总费用+=mapEra排放量[1]/32;

mapAddress UU块更改[排除]=区块编号;以及;

};

}

通过分析changeexcluded函数,可以发现它的可见性是外部的。因此,攻击者契约可以直接调用changeexcluded函数。在这种情况下,攻击者协定的mapaddress被排除为false,因此它将进入if逻辑。

如果在代码中详细分析

执行if逻辑后,您需要先支付手续费,这是上面代码块中的第3行,手续费从何而来?答案是0.9火币4,攻击者最初将其转移到合同中。

维思合同遭黑客攻击分析3

从图中可以看出,它可以转换成大约138 V 火币4到0.9 火币4。

通过计算代码_Eemission[1]/16中的mapera,我们可以得到攻击者需要支付的服务费:我们在合同中阅读mapera,可以知道mapera_uemission[1]是2048。

维思合同遭黑客攻击分析4

Mapera计算得出,发射[1]/16的佣金为2048/16=128 V 火币4,攻击者交换了约138 V 火币4,足以支付手续费。因此,您可以通过上述代码块中的第4行使用攻击者契约的mapaddress,将其设置为true。

完整的攻击过程如下:

1创建攻击合同,并通过Uniswap将0.9 火币4兑换成约138 V 火币4;(此处,货币更改为稍后支付服务费)

2调用V 火币4 Er合同中的changeexcluded函数,并使用先前在Uniswap赎回的138 V 火币4支付128 V 火币4手续费,然后将mapaddress_uSetexcluded添加为true

3使用mapaddress调用transferfrom函数;如果排除为true,则直接传输

拿着钱走吧

黑客地址:

0xfa2700e67065bc364136b5e7f57112083cb2a0cd

攻击交易:

0xdd1120a90ed4112b634266d6a244b93ca86785317bc75f0e170ab0cd97c65224

V 火币4合同地址

0x75572098dc462f976127f59f8c97dfa291f81d8b

维修建议

此攻击主要利用火币4 Er合约中changeexcluded函数的可见性作为外部,没有权限限制,用户可以直接拨打外部电话,为攻击创造了必要的条件。因此,需要限制changeexcluded函数的权限或可见性,以避免任何用户直接调用changeexcluded函数。

温馨提示:

文章标题:维思合同遭黑客攻击分析

文章链接:https://www.btchangqing.cn/47618.html

更新时间:2020年07月02日

本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。

区块链

加密市场Q2数据综合复盘:比特币跑赢各国股市

2020-7-2 21:10:21

区块链

电子桌面钱包远程代码执行漏洞分析

2020-7-2 21:28:36

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索