区块见闻 区块见闻
Ctrl+D收藏区块见闻

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

作者:

时间:

前言

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

攻击细节

本次攻击交易如下 0xdd1120a90ed4112b634266d6a244b93ca86785317bc75f0e170ab0cd97c65224

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

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

比特币矿企6月清算量比产出量多出近4倍:7月17日消息,区块链分析公司Arcane Research最新研究数据显示,比特币矿企6月清算量比产出量出近4倍。2022年1-4月,比特币矿企只出售了20-40%的BTC产出量,期间矿工一直处于囤积状态。但5月份之后情况发生了变化,当月BTC价格从4万美元跌至3万美元,之后又进一步下挫。

整个6月,比特币矿工总计清算了约1.46万枚BTC,几乎是3,900枚BTC总产量的四倍,其中Core Scientific和Bitfarms是清算份额最大的矿企,Core Scientific抛售了近10,000枚BTC,其持有量仅剩1,959枚;Bit Farm抛售3,353枚BTC,而NorthernData在5月和6月清空了其持有的全部BTC和ETH;Marathon和Hut8在5月和6月没有抛售,是当前持有BTC最多的矿企,前者资产负债表上有10,055枚BTC,Hut8有7,405枚BTC,Riot以6,654枚BTC持有量位居第三。(Coinquora)[2022/7/17 2:18:59]

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

BITUAN币团主流币行情:BTC 24小时涨1.01%:BITUAN币团交易所官方行情数据,截至9月1日15:00:BTC 24小时涨1.01%,报11859.92 USDT;ETH 24小时涨7.04%,报464.69 USDT;EOS 24小时涨1.22%,报3.2913 USDT;BCH 24小时涨0.87%,报279.96 USDT;BSV 24小时涨0.12%,报196.0000 USDT;LTC 24小时涨2.37%,报63.04 USDT;XRP 24小时涨4.75%,报0.29369 USDT;ETC 24小时涨1.50%,报6.7478 USDT。[2020/9/1]

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

可以看到在 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函数。

标签:DEDEXCLUDCLUKIRBYRELOADED币Safe Exchange CoinLudosCrypto Cavemen Club

比特币价格热门资讯
7.01晚间行情:ETH 能否卷土重来?

文章系金色财经专栏作者币圈北冥供稿,发表言论仅代表其个人观点,仅供学习交流!金色盘面不会主动提供任何交易指导,亦不会收取任何费用指导交易,请读者仔细甄别,谨防上当。 今天盘面有所分化,老二ETH 表现的欲望强烈,阿斗BSV 则继续拖后腿,近四个月我通过对比 LTC/BTC 走势发现,主流币跟跌不跟涨的情况居多,所以操作应当以 BTC做为基准参照。

每2.5秒新增1个潜在用户 比特币这种增长速度算快吗?

作为一个全新的金融概念,比特币诞生已超过11年。毋庸置疑,从发布以来,它的增长速度相当可观,但这种增长是否真的如我们这些“圈内人”所认为的那样快吗? (比特币从诞生到现在的钱包数量变化) 最近,比特币又达到一个里程碑。 这次不是价格,而是钱包的数量。数据显示,到2020年6月中旬,比特币钱包数量超过5000万。

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

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

一文说透 BTC 在加密市场中的地位

比特币在其十一年的历史中,出现了一系列加密货币的“实验变种”。 衡量比特币相对于其他加密货币的“领先指数(dominance)”的最好方法是计算其相对市值,即通过比较流通代币的总供应量乘以当前价格。

CBDC盘点:立陶宛超车 美韩态度大反转

2020年,最大的一个热点不外乎是央行数字货币。新型冠状病席卷全球,影响巨大,接触性传播对纸币等法定货币产生联动效应,各国不得不开始正视数字化支付,推动央行数字货币全面研究的步伐加快,顺应货币改革新趋势。 国际清算银行BIS在6月24日发布的最新报告指出,新冠肺炎疫情已导致零售支付发生深远变化,揭示了现有系统的优势和弱点。

6.30早间行情:BTC反弹收回跳水跌幅 回落风险犹在

昨晚行情在试探9000美元后持续上行,当前已反弹至9200美元附近,经过近两日的反弹已收回了28日凌晨的跳水跌幅,说明多头还是有一定反弹力量的,算是比较积极的信号。但从日线级别来看,依然不可掉以轻心,仅仅是在五连阴后连续两天的小阳线反弹力度,只要未成功重新站上各级别均线上方,依然有重新回落的风险。