又被攻击 VETH智能合约是如何被盗90万美元的?

前言

2020 年 7 月 1 日,VETH 合约遭遇黑客攻击。慢雾安全团队在收到情报后对本次攻击事件进行了全面的分析,下面为大家就这次攻击事件展开具体的技术分析。

攻击细节

本次攻击交易如下 0xdd1120a90ed4112b634266d6a244b93ca86785317bc75f0e170ab0cd97c65224

通过交易概览可以看到攻击者在 Uniswap 中使用 0.9 ETH 兑换成 VETH,然后使用 VETH 在 Vether 合约中进行操作,最终盗走巨额的 VETH。

价值约4717万美元的BTC转入Coinbase:金色财经报道,1678枚BTC于今日07:25从未知钱包转入Coinbase,价值约4717万美元。[2023/3/22 13:18:16]

现在使用 OKO 合约浏览器对具体的攻击细节进行分析(下图只展示一部分)https://oko.palkeo.com/0xdd1120a90ed4112b634266d6a244b93ca86785317bc75f0e170ab0cd97c65224/

通过分析交易内具体的细节可以发现:攻击者先创建了一个合约0x47Ed415006C6F8052Fff05fe983f31D6D24B8fDB 通过此合约对 Vether 合约中的 changeExcluded(unknown37217349) 函数与 transferFrom 函数进行了调用。

Circle CEO:数字资产需要新的监管定义,区块链技术应被视为类似于操作系统:1月17日消息,USDC稳定币发行商Circle的首席执行官Jeremy Allaire在达沃斯世界经济论坛年会间隙接受采访时表示,美国等主要市场需要数字资产的新监管定义,以便为该行业提供监管清晰度。Allaire表示,区块链技术本身应该被视为类似于操作系统,而个别用例应该单独监管;新的定义将有助于更清楚地说明哪些监管机构参与了哪些活动。

此外,Allaire表示,欧盟在制定数字资产法规方面处于领先地位,随着该地区的加密资产市场(MiCA) 规则的实施,Circle计划从其美国实体推出其欧元支持的稳定币。Allaire补充说,该公司正计划研究其他潜在的数字货币产品。(路透社)[2023/1/17 11:15:45]

接下来对这两个函数的具体代码进行分析:

美CFTC主席:比特币是唯一应该被视为商品的加密货币:12月1日消息,美国商品期货交易委员会(CFTC)主席Rostin Behnam表示,CFTC执法行动的能力有限,缺乏直接监管的权利,并呼吁美国立法者和政策制定者尽快采取行动。

此外,Behnam还指出,加密货币不同于他们处理过的任何商品,它是作为投机性零售市场的普遍行为,但BTC是唯一应该被视为商品的加密货币。此前10月消息,Behnam表示,ETH也可能是一种商品。(Fortune)[2022/12/1 21:15:10]

可以看到在 transferFrom 函数中,先对 mapAddress_Excluded[msg.sender] 进行了 if 判断,具体逻辑是mapAddress_Excluded[msg.sender]为 false 时,将会检查对攻击者合约的授权额度,然后调用_transfer函数进行转账。而这个逻辑显然走不通,攻击者合约是没有任何授权额度的。因此mapAddress_Excluded[msg.sender]只能为 true ,然后直接调用_transfer函数进行转账。

Yearn.Finance 创始人呼吁严格的加密监管:10月27日消息,Yearn.Finance 创始人Andre Cronje发文表示,加密货币行业应该像传统金融一样受到严格监管。这将确保强有力的消费者保护,同时也将提供急需的补救措施。Cronje列举了传统金融中可用的各种保障措施,包括中央银行保险和审慎监管。

Andre Cronje指出,加密货币目前作为银行运营。然而,它们实际上并没有提供任何保障,这会助长行业中不负责任的行为体。Andre Cronje认为,对行业实施审慎标准将有利于加密货币,因为这将导致长期市场稳定。它还将为消费者提供一个“清晰的途径”来行使他们的权利。(U.Today)[2022/10/27 11:48:35]

接下来具体分析该如何将mapAddress_Excluded[msg.sender]设置为 true:

QTC兼容PoST算法的solo mining软件将于6月30日测试完毕后推出:据官方消息:截止至6月9日18:30,QTC全网算力达到 1200P。6月30日前,QTC兼容PoST算法的solo mining软件测试完毕,可以正式启动。Chia miner除了可以通过矿池无缝接入QTC网络,也可以直接通过官网solo软件参与到QTC的网络。[2022/6/10 4:16:28]

通过查看合约可以发现:

合约在初始化时只将address(this)和burnAddress的mapAddress_Excluded置为 true,那么可以肯定还有其他逻辑可以设置mapAddress_Excluded,通过分析  Vether 合约可以发现changeExcluded函数可以实现对mapAddress_Excluded的设置。

通过分析changeExcluded函数可以发现其可见性为external,因此攻击者合约可以直接调用changeExcluded函数,此时攻击者合约的mapAddress_Excluded为 false,所以会进入 if 的逻辑中。

接下来对 if 逻辑内的代码进行具体分析:

在进行 if 逻辑后需要先支付手续费,具体为上方代码块中的第 3 行,那这个手续费是从哪里来呢?答案就是攻击者最初转入合约中的 0.9 ETH。

图中可以看到,通过 0.9 ETH 兑换成约 138 VETH。

通过计算代码中的mapEra_Emission/16我们可以得到攻击者需要支付的手续费:我们读取合约中的 mapEra_Emission可以知道 mapEra_Emission为 2048。

此时计算mapEra_Emission/16可得手续费为 2048/16 = 128 VETH,而攻击者兑换了约138 VETH 是足够用来支付手续费的,因此便可以通过上方代码块中的第 4 行将攻击者合约的mapAddress_Excluded置为 true。

创建攻击合约,通过 Uniswap 将 0.9 ETH 兑换成约138 VETH(此处换币为了后续支付手续费)

调用 Vether 合约中的changeExcluded函数并利用先前在 Uniswap 兑换的约 138 VETH 支付 128 VETH 的手续费,然后将mapAddress_Excluded置为 true

调用 transferFrom 函数,利用mapAddress_Excluded为 true,直接进行转账操作

拿钱走人

0xfa2700e67065bc364136b5e7f57112083cb2a0cd

0x75572098dc462f976127f59f8c97dfa291f81d8b

修复建议

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

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

银河链

POL币最新价格TB钱包上线 TokenBetter全球生态布局再下一城

对于大多数投资者来说,资产安全一直是数字资产交易或储存时面临的一个巨大问题,其中一个原因是数字货币的运作方式与传统的在线支付系统截然不同。作为全球知名数字资产交易平台,TokenBetter始终致力于多维度保证用户资产安全.

[0:0ms0-2:930ms