山寨货币交易平台分析:慢雾揭示VETH合约黑客攻击情况

WB3交流加微信:WX-93588,⬅️此处为全站广告位,与正文项目无关
注册并登录App即可领取高达 60,000 元的数字货币盲盒:点击此处注册OKX

前语

2020年7月1日,VETH合约遭受黑客进犯。慢雾安全团队在收到情报后对本次进犯事情进行了全面的剖析。下面为大家就这次进犯事情展开详细的技术剖析。

进犯细节

本次进犯买卖如下:

0xdd1120a90ed4112b634266d6a244b93ca86785317bc75f0e170ab0cd97c65224

经过买卖概览能够看到进犯者在 Uniswap 中运用0.9ETH兑换成VETH,然后运用VETH在Vether合约中进行操作,最终盗走巨额的VETH。

现在运用OKO合约浏览器对详细的进犯细节进行剖析(下图只展示一部分): [链接]

经过剖析买卖内详细的细节能够发现:进犯者先创建了一个合约0x47Ed415006C6F8052Fff05fe983f31D6D24B8fDB,经过此合约对Vether合约中的changeExcluded(unknown37217349)函数与transferFrom函数进行了调用。

接下来对这两个函数的详细代码进行剖析:

function transferFrom(address from, address to, uint value) public override returns(bool success){
if(!mapAddress_Excluded[msg.sender]){
require(value 能够看到在transferFrom函数中,先对mapAddress_Excluded[msg.sender]进行了if判断,详细逻辑是mapAddress_Excluded[msg.sender]为false时,将会检查对进犯者合约的授权额度,然后调用_transfer函数进行转账。而这个逻辑显然走不通,进犯者合约是没有任何授权额度的。因而mapAddress_Excluded[msg.sender]只能为true,然后直接调用_transfer函数进行转账。

接下来详细剖析该如何将mapAddress_Excluded[msg.sender]设置为true:

经过检查合约能够发现:

合约在初始化时只将address(this)和burnAddress的mapAddress_Excluded置为true,那么能够肯定还有其他逻辑能够设置mapAddress_Excluded,经过剖析Vether合约能够发现changeExcluded函数能够完成对mapAddress_Excluded的设置。

function changeExcluded(address excluded) external{
if(!mapAddress_Excluded[excluded]){
_transfer(msg.sender, address(this), mapEra_Emission[1]/16);
mapAddress_Excluded[excluded] = true;
excludedArray.push(excluded);
excludedCount += 1;
totalFees += mapEra_Emission[1]/16;
mapAddress_BlockChange[excluded] = block.number;
}
else{
_transfer(msg.sender, address(this), mapEra_Emission[1]/32);
mapAddress_Excluded[excluded] = false;
totalFees += mapEra_Emission[1]/32;
mapAddress_BlockChange[excluded] = block.number;
}
}

经过剖析changeExcluded函数能够发现其可见性为external,因而进犯者合约能够直接调用changeExcluded函数,此刻进犯者合约的mapAddress_Excluded为false,所以会进入if的逻辑中。

接下来对if逻辑内的代码进行详细剖析:

在进行if逻辑后需求先付出手续费,详细为上方代码块中的第3行,那这个手续费是从哪里来呢?答案就是进犯者开始转入合约中的0.9ETH。

图中能够看到,经过0.9ETH兑换成约138VETH。

经过核算代码中的mapEra_Emission[1]/16咱们能够得到进犯者需求付出的手续费:咱们读取合约中的mapEra_Emission能够知道mapEra_Emission[1]为2048。

此刻核算mapEra_Emission[1]/16可得手续费为2048/16=128VETH,而进犯者兑换了约138VETH是足够用来付出手续费的,因而便能够经过上方代码块中的第4即将进犯者合约的mapAddress_Excluded置为true。

完好的进犯流程如下:

1. 创建进犯合约,经过Uniswap将0.9ETH兑换成约138VETH(此处换币为了后续付出手续费)
2. 调用Vether合约中的changeExcluded函数并使用从前在Uniswap兑换的约138VETH付出128VETH的手续费,然后将mapAddress_Excluded置为true
3. 调用transferFrom函数,使用mapAddress_Excluded为true,直接进行转账操作
4. 拿钱走人

黑客地址:

0xfa2700e67065bc364136b5e7f57112083cb2a0cd

进犯买卖:

0xdd1120a90ed4112b634266d6a244b93ca86785317bc75f0e170ab0cd97c65224

VETH合约地址:

0x75572098dc462f976127f59f8c97dfa291f81d8b

修复建议

此次进犯主要使用Vether合约中changeExcluded函数的可见性为external且未有权限限制,用户能够直接进行外部调用为进犯创造了必要的条件。因而应做好对changeExcluded函数的权限或可见性的限制,然后防止恣意用户能够直接外部调用changeExcluded函数。

此时快讯

【前足球运动员Ronaldinho Gaúcho因缺席加密货币诈骗听证会,获将被武力传唤】金色财经报道,前足球运动员Ronaldinho Gaúcho原定于本周二(22日)下午2时30分在巴西众议院向议会金融金字塔调查委员会(CPI)作证,但他没有出席。由于Ronaldinho Gaúcho缺席,CPI主席、众议员Solidariedade-RJ于本周四(24日)晚些时候召见了这位运动员。除了Ronaldinho Gaúcho之外,这位前球员的兄弟兼经纪人Robertode Assis也应出庭作证。如果他们未能再次出庭,可能会被要求采取强制行为。
众议员Solidariedade-RJ表示,我们已将传唤时间再次延长至下周四(24日)上午10点。如果他们不出现,我们将使用武力传唤程序。这位前球员之所以被传唤作证,是因为他与一个加密资产运营平台有业务往来,该平台被检察院指控助长金融传销。CPI正在调查利用加密货币进行的金融传销活动。据证券交易委员会(CVM)称,共有11家公司涉嫌欺诈,如传播虚假信息,承诺高额或保证回报,以吸引受害者并维持金字塔计划。
联邦最高法院(STF)法官Edson Fachin做出裁决,向这名前足球运动员颁发了人身保护令,赋予他在向CPI提供证词时保持沉默的权利。尽管如此,根据CPI主席的说法,出席是强制性的。

版权声明:本文收集于互联网,如有侵权请联系站长删除。
转载请注明:山寨货币交易平台分析:慢雾揭示VETH合约黑客攻击情况 | 币百度

相关文章