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

OKX欧易app

OKX欧易app

欧易交易所app是全球排名第一的虚拟货币交易所,注册领取6万元盲盒礼包!

APP下载   官网注册

前言

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 <= _allowances[from][msg.sender], "Must not send more than allowance"); _allowances[from][msg.sender] -= value; } _transfer(from, to, value); return true;}

可以看到在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置为true3. 调用transferFrom函数,利用mapAddress_Excluded为true,直接进行转账操作4. 拿钱走人

黑客地址:

0xfa2700e67065bc364136b5e7f57112083cb2a0cd

攻击交易:

0xdd1120a90ed4112b634266d6a244b93ca86785317bc75f0e170ab0cd97c65224

VETH合约地址:

0x75572098dc462f976127f59f8c97dfa291f81d8b

修复建议

此次攻击主要利用Vether合约中changeExcluded函数的可见性为external且未有权限限制,用户可以直接进行外部调用为攻击创造了必要的条件。因此应做好对changeExcluded函数的权限或可见性的限制,从而避免任意用户可以直接外部调用changeExcluded函数。

本站所有软件信息均由用户上传发布,版权归原著所有。如有侵权/违规内容,敬请来信告知邮箱:764327034@qq.com,我们将及时撤销! 转载请注明出处:https://czxurui.com/zx/70760.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年08月24日
下一篇 2023年08月24日

相关推荐

  • 比特币怎么做期货,什么是比特币期货合约

    一、币圈包括期货吗币圈里面的期货不能叫期货,因为这不是正经的合规合法的期货,所以叫了一段时间后,被币圈里面的人改了名字,现在币圈里面的期货都叫“合约”。但是长时间那么叫也习惯了,异客在这里就暂时先不改这称呼了,毕竟换汤不换药,大家都知道是什么回事。异客一直

    2024-12-22 19:00:01
    3 0
  • 永续合约什么情况下爆仓,永续合约爆仓了会欠钱吗

    一、永续合约会爆仓吗永续合约会通过自动减仓来减少对手的盘仓位,这样就降低了市场风险。同时永续合约的价格设计机制,也让其不容易被恶意爆仓,但是永续合约也会爆仓,只不过没有分摊和插针。所以永续合约投资并不是没有爆仓的风险,就看投资者怎么去操作了。二、永续合约爆

    2024-12-22 16:00:01
    2 0
  • 虚拟币区块怎么查询,如何查区块链合约地址信息

    一、怎么查询所有区块链公链公链在哪里查询公链在浏览器查询。随着区块链的大热,越来越多的科技公司开始研究和开发区块链。在区块链迅速发展的同时,也有少部分项目方打着区块链的名号,在市面上进行招摇撞骗。如何判断公链真假,对于现在许多想要进行数字货币交易的群体来说

    2024-12-22 04:30:01
    4 0
  • hotcoin交易平台是什么,Hotcoin是什么合约交易所

    一、热币Hotcoin交易所靠不靠谱1. Hotcoin(热币)交易所是一个靠谱的平台,拥有全球最大的用户增长之一。2.该平台专注于提供数字资产兑换交易服务,并且致力于区块链技术的创新与研发。3. Hotcoin旨在为全球用户提供一个安全、便捷、高效的数字资产兑换环境,努力成为全球领

    2024-12-20 10:00:01
    6 0
  • usdt现货是什么意思,usdt永续合约是什么意思

    一、砸盘吸筹是什么意思庄家坐庄时的巨大资金要想悄无声息地就进驻到某一只上市公司股票中,也非一日一时之功。往往需要在相对的价格低位上反复震荡,或者通过长期横盘的方式令短线客忍无可忍.最后敬而远之:或者通过上蹄下跳的股价跳跃方式引诱散户难耐寂寞而低抛高吸,使之最

    2024-12-18 02:30:01
    10 0
  • 货币期权多少一张,沪深300指数期权合约

    一、期权的种类有哪些期权分类:按期权的权利划分:看涨期权和看跌期权。按期权的种类划分:欧式期权和美式期权。按行权时间划分:欧式期权、美式期权、百慕大期权。期权交易是指在未来一定时期可以买卖的权利,是买方向卖方支付一定数量的权利金后拥有的在未来一段时间内或未

    2024-12-16 08:00:01
    18 0

发表回复

8206
验证码

评论列表(0条)

    暂无评论

ok交易所
已有100万用户加入ok交易所

立即下载