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

前言

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

攻击细节

本次攻击交易如下 0xdd1120a90ed4112b634266d6a244b93ca86785317bc75f0e170ab0cd97c65224

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

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

菲律宾电信公司CEO:菲律宾具备成为“亚洲区块链之都”的条件:金色财经报道,菲律宾电信公司Dito CME首席执行官Donald Lim表示,菲律宾具备成为“亚洲区块链之都”的条件。据悉,目前约有430万的菲律宾人拥有加密资产,占该国总人口的4%。根据Lim的说法,菲律宾拥有成为区块链中心的数字。“我们1.1亿人口的年龄中位数是25岁。在数字人口中,我们的互联网和NFT普及率也是最高的。”

据悉,根据2021年的一项研究,菲律宾是加密货币采用率最高的国家之一。这个亚洲国家的加密货币采用率在全球排名第三。(bitcoinist)[2022/9/8 13:16:57]

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

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

报告:全球将有3到5个国家在10年内完全用CBDC取代本国货币:9月9日,专注于金融科技的荷兰非营利智库dGen发布了一份关于CBDC地缘趋势的报告。报告对美元、欧元和人民币等全球主要法定货币的地位进行了深入研究。在欧洲央行(ECB)、渣打银行和Frankfurt School等机构的支持下,这份报告对CBDC对全球金融体系的影响做出了一些重大预测。

dGen预计全球将有3到5个国家在10年内完全用CBDC取代本国货币。虽然dGen并没有准确预测到2030年哪些国家会实现转变,但该报告概述了巴哈马和瑞典等地区在CBDC方面取得的重大进展。该智库指出,瑞典电子克朗(e-krona)的发展符合该国到2025年实现无现金化的计划。此外,dGen还预测,如果欧洲不能在2025年前发展自己的CBDC,欧元将被中国的数字人民币项目取代。该智库强调,欧洲央行有必要为“数字欧元的繁荣创造一个合适的环境”,否则欧元将面临失去其在全球经济中地位的风险。(Cointelegraph)[2020/9/9]

可以看到在 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的设置。

通过分析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函数。

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

链链资讯

ETH6.28晚间行情:交割完毕该如何操作

文章系金色财经专栏作者币圈北冥供稿,发表言论仅代表其个人观点,仅供学习交流!金色盘面不会主动提供任何交易指导,亦不会收取任何费用指导交易,请读者仔细甄别,谨防上当。

Luna比特币空头为主 但这个风险点需要注意

一、 热点解读 亿邦国际正式登陆纳斯达克,是近期引发市场持续关注的热点事件。但是与后者当初引发的广泛关注不同,除了个别媒体报道外,亿邦国际的“云敲钟”并没有激起太多的舆论水花。 目前市场有种相对普遍的观点认为,是由于嘉楠耘智“矿机第一股”的不佳表现在前,才导致亿邦国际这只“矿机第二股”的不尽如人意。

火币交易所通货膨胀到底怎么回事 比特币真的不会引起通货膨胀吗?

比特币问世10多年来,随着第三次“减半”的完成,通胀这一词在数字资产社区中频繁出现。确切来说,无通胀被视为稳定性的保证。这一观点很有趣,但说的也基本没错。那么接下来说说通胀。 什么是通货膨胀? 字典中写道:“通货膨胀是货币购买力的丧失,导致价格的普遍持久增长”。换句话说,今天价值100欧元的一揽子商品和服务,以后的价值会更高。

币安下载MXC抹茶为何成为DOT的主战场?看MXC抹茶在交易市场中的快与慢

导语: 快,让MXC抹茶成为DOT交易的主战场;稳健,则是MXC抹茶的核心策略。MXC抹茶在“快”中保持对交易市场的敏感性,在“慢”中以稳健的方式打磨相关交易产品。不论快还是慢,均源自以用户为驱动的策略。 一、MXC抹茶成为DOT交易的主战场 6月29日晚间,MXC抹茶在业内率先支持Polkadot(DOT)资产映射。

[0:15ms0-3:338ms