前言
2020 年 7 月 1 日,VETH 合约遭遇黑客攻击。慢雾安全团队在收到情报后对本次攻击事件进行了全面的分析,下面为大家就这次攻击事件展开具体的技术分析。
攻击细节
本次攻击交易如下 0xdd1120a90ed4112b634266d6a244b93ca86785317bc75f0e170ab0cd97c65224
通过交易概览可以看到攻击者在 Uniswap 中使用 0.9 ETH 兑换成 VETH,然后使用 VETH 在 Vether 合约中进行操作,最终盗走巨额的 VETH。
Uniswap发布Uniswap v4代码草稿,并邀请社区提供反馈:金色财经报道,Uniswap宣布发布Uniswap v4代码草稿,以便可以公开构建v4。Uniswap v4的愿景是允许任何人通过引入挂钩(hooks)来做出这些权衡决定。hooks是在池操作生命周期的各个点运行的合约,池可以做出与v3相同的权衡,或者可以添加全新的功能。例如,v4将允许池本身支持动态费用,添加链上限价单,或充当时间加权平均做市商(TWAMM)以随时间分散大订单。此外,v4池将存在于单一合约中,这将使创建矿池的成本降低99%。
Uniswapv4代码将根据Business Source License1.1发布,这将在4年内限制v4源代码在商业或生产环境中的使用,届时它将永久转换为GPL许可证。协议费用机制也将仿照v3。治理层将能够投票决定向任何资金池添加协议费用,但不超过上限金额。[2023/6/13 21:34:27]
现在使用 OKO 合约浏览器对具体的攻击细节进行分析(下图只展示一部分)https://oko.palkeo.com/0xdd1120a90ed4112b634266d6a244b93ca86785317bc75f0e170ab0cd97c65224/
ParaSpace宣布将保险钱包的管理过渡到协议本身,解决清算不足的问题:金色财经报道,据官方消息,ParaSpace表示,我们始终优先考虑财务和会计业务的透明度。为确保我们平台的持续完整性和弹性,我们希望进行两项升级:
1.ParaSpace 保险钱包的管理将过渡到协议本身,以专门解决清算不足的问题。
2.三名安全专家和审计员将加入我们的社区观察员委员会。他们将监测和证明钱包交易,以在任何潜在的安全挑战中保护我们的社区。[2023/5/26 10:40:47]
通过分析交易内具体的细节可以发现:攻击者先创建了一个合约0x47Ed415006C6F8052Fff05fe983f31D6D24B8fDB 通过此合约对 Vether 合约中的 changeExcluded(unknown37217349) 函数与 transferFrom 函数进行了调用。
Voyager因其奖励营销计划在2022年损失5800万美元:金色财经报道,Voyager 因其奖励计划在 2022 年损失了 5800 万美元,该奖励计划包括高收益利息账户、推荐计划等。据法庭文件显示,Voyager 高管表达了其部分向用户提供高收益产品会产生重大损失的担忧,Voyager 高管始终将奖励计划成本视为获取用户所必需的营销费用,但由于大量亏损,其希望降低部分收益产品的收益率。[2023/3/1 12:36:50]
接下来对这两个函数的具体代码进行分析:
可以看到在 transferFrom 函数中,先对 mapAddress_Excluded[msg.sender] 进行了 if 判断,具体逻辑是mapAddress_Excluded[msg.sender]为 false 时,将会检查对攻击者合约的授权额度,然后调用_transfer函数进行转账。而这个逻辑显然走不通,攻击者合约是没有任何授权额度的。因此mapAddress_Excluded[msg.sender]只能为 true ,然后直接调用_transfer函数进行转账。
瑞银:Mt.Gox还款不太可能影响比特币价格:金色财经报道,瑞银策略师Ivan Kachkovski表示,即将到来的Mt. Gox破产还款可能不会引起人们对比特币价格的担忧。
Ivan Kachkovski表示,经过近十年的过程,债权人即将收回部分资金。目前的计划为债权人提供了多种还款方式和时间选择,“最重要的是,首先,是提前一次性付款还是等待进一步的程序和额外的资产追回,其次,以法定或加密方式接收资金”。
此外,Ivan Kachkovski补充道,采用法定还款的早期一次性付款选项将导致交易所出售比特币以筹集必要的现金,并可能让“长期以来担心 Mt.Gox 赎回会损害比特币价格”成为现实。
据悉,选择还款选项的截止日期目前定3月10日,付款可能会在今年9月开始。[2023/3/1 12:35:25]
接下来具体分析该如何将mapAddress_Excluded[msg.sender]设置为 true:
Larry Cermak:Celsius可能尚有15亿美元资产:6月14日消息,The Block研究副总裁Larry Cermak昨日发推称:“为了透明度起见,我将公布我的数据库,这里面有所有我认为属于Celsius的钱包。目前,Celsius仍有大约15亿美元资产。需要言明的是,链上标签不是一门精确的科学。我可能会犯一些错误。这个列表可能不完整,我在追踪它们的这些年里可能给其中一些贴上了错误的标签。”[2022/6/14 4:25:23]
通过查看合约可以发现:
合约在初始化时只将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函数。
伊朗副总统贾汉吉里(Eshaq Jahangiri)周一宣布,该国的加密货币矿工必须向政府注册其挖矿平台。根据指令,矿工将必须向工业、矿业和贸易部披露其身份、矿场的规模以及挖矿设备的类型.
1900/1/1 0:00:00312之前,DeFi锁定的资产价值最高达约12.5亿美元,经过3个月的恢复,最终在6月初回到了312之前的水平。截至6月27号,锁定在DeFi内的资产达到了16亿美元.
1900/1/1 0:00:00金色财经 区块链7月16日讯 美国当地时间本周三(7月15日),大批名人和大公司官方推特账户遭黑客入侵,这些账户都发布了一条比特币信息,承认只要向一个比特币地址打入1000美元.
1900/1/1 0:00:001. 以太坊链上资源紧张 牛市未到“大拥堵”已在途?区块链世界的头号公链以太坊,近期交易手续费再次暴涨.
1900/1/1 0:00:00金色财经近期推出金色硬核(Hardcore)栏目,为读者提供热门项目介绍或者深度解读。按:近日因美国监管执法部门要求,USDC发行方把一个USDC地址列为黑名单,冻结了该地址上价值10万美元的U.
1900/1/1 0:00:00Filecoin主网上线临近,除了抢“头矿”、云算力和投资布局外,交易所们也启动布局。金色财经对于目前交易所上线FIL期货、托管等相关产品的情况进行盘点.
1900/1/1 0:00:00