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

前言

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

攻击细节

本次攻击交易如下 0xdd1120a90ed4112b634266d6a244b93ca86785317bc75f0e170ab0cd97c65224

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

疑似Abraxas Capital关联地址再次借出5900万枚稳定币存入CEX:8月12日消息,据Scopescan监测,疑似与Abraxas Capital相关的地址(0x0f1d 开头)过去5小时内再次向Aave存入2.6万枚stETH、1.5万枚ETH(约2760万美元),以此借出5900万枚稳定币,之后将稳定币转入了Bitfinex和Binance。该地址今日共计已将1.17亿枚稳定币存入CEX。

此前消息,疑似与Abraxas Capital相关的地址(0x0f1d开头)过去一天在Compound和Aave上抵押大量ETH、BTC,并借入稳定币。0x0f1d开头地址已经在多个CEX共计存入5800万枚稳定币,可能看涨当前的市场。[2023/8/12 16:21:28]

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

研究:分布式账本技术可用于不同CBDC账本之间的跨境、跨货币支付:金色财经报道,根据新加坡金融管理局和纽约联邦储备银行的研究,分布式账本技术可用于不同CBDC账本之间的跨境、跨货币支付,降低结算风险并缩短结算时间。实验在测试环境中进行,假设的支付使用模拟的批发中央银行数字货币进行结算。这些团队将不同的中央银行货币分类账相互关联,为各自中央银行的每个分类账的设计和操作提供了灵活性。这使得支付能够在多个分类账上安全地执行,而不需要中央清算机构或建立共享的中央网络。

纽约联储市场部负责人 Michelle Neal 表示,我们与 MAS 的研究合作揭示了中央银行创新的关键机会,可以在缓解全球批发支付流程和改善结算结果方面发挥重要作用。[2023/5/22 15:17:44]

GameStop终止与FTX.US的合作,并向客户退款:金色财经报道,视频游戏零售商GameStop(GME)计划结束与FTX.US的关系及其试点礼品卡营销合作,此前FTX.US申请了破产保护。

两家公司在9月宣布合作,以促进游戏和加密货币社区之间的互动,并表示某些GameStop商店将销售FTX礼品卡。周五GameStop的股票上涨了约5%。(coindesk)[2022/11/12 12:53:28]

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

美元指数DXY日内大跌1.0%,现报111.77:金色财经报道,美元指数DXY日内大跌1.00%,现报111.77。[2022/10/22 16:35:05]

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

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

数据:9月6日Arbitrum网络日转账笔数创历史新高:9月7日消息,据Arbiscan页面信息,9月6日Arbitrum网络日转账笔数达442,937笔,创历史新高。[2022/9/7 13:13:25]

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

通过查看合约可以发现:

合约在初始化时只将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函数。

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

地球链

XLM7.10早间行情:BTC现画门走势 接下来这么看

昨晚行情短暂的上冲9400美元后直接跳水,最低点位跌至9160美元,当前在9200附近震荡,虽然只是200美元的跌幅,却令前天的上涨付之东流,在盘面上形成一道“门”字形.

[0:15ms0-0:976ms