详解VETH智能合约被攻击事件

2020年6月30日下午5:46,Beosin-OSINT威胁情报系统发现

VETH智能合约

遭受攻击,被盗919299个VETH。成都链安·安全实验室第一时间对本次事件进行跟踪分析。

?

根据链上交易显示:

攻击者利用自建合约

通过Uniswap将0.9ETH兑换为138VETH,之后对VETH智能合约

发起攻击,在攻击完成后自建合约进行自我销毁。

本次攻击成本仅0.9ETH,约合200美元。交易

详情如下:

期权交易平台Aevo开始提供LDO、PEPE、SUI、ARB等代币相关的期权交易:5月15日消息,链上结构化产品Ribbon Finance推出的期权交易平台Aevo开始提供与替代加密货币 (altcoins) 相关的期权,Aevo 用户现可以交易与 Lido 的 LDO、Pepecoin (PEPE)、Sui 的 SUI、Arbitrum 的 ARB、Litecoin (LTC)、Aptos (APT) 和其他代币相关的期权,这些代币之前只能通过场外交易平台 Ribbon Finance 进行交易。上月消息,期权交易平台Aevo主网正式上线,首先支持用户交易ETH期权。[2023/5/15 15:04:07]

△图1

在盗币成功之后,攻击者将盗取的VETH通过Uniswap换成了16ETH。如下图所示:

Arbitrum生态AMM协议Chronos TVL一日内上升1.7亿美元:金色财经报道,Defillama数据显示,基于 Arbitrum 的去中心化交易所(DEX) Chronos在一天内吸引了超过 1.7 亿美元的资金进入该平台。Chronos 于 4 月 27 日推出,是一个所谓的 (3,3) 交易所,它使用质押作为为其代币增值以实现价值存储状态的主要方式。

此前,Arbitrum生态AMM协议Chronos发布代币分配与空投细则。[2023/5/4 14:42:45]

AEX:平台资金受控状态或将持续,将采取“软性兑付”策略:12月12日消息,加密交易所 AEX 今日发布公告,由于平台从今年 7 月起受到监管机构调查,平台部分高管被采取强制措施等客观原因,平台部分资产目前处于受控状态,无法提供正常服务,且强制措施可能无法在短期内解除,经各方讨论,决定采取“软性兑付”的策略。

策略包括从 Uniswap AUSD-USDT 交易对中回购 AUSD 确保 AUSD 处于通缩状态、将一定数量的 USDT 添加到 Uniswap AUSD-USDT 交易对提供流动性确保该交易对流动池AUSD的承兑能力持续提升等。

此外,AEX 预计不久后还会发布《平台情况说明及解决方案2》,以增加客户的选择空间和兑付效率。[2022/12/12 21:39:13]

△图2

SBF:尚未对竞标Celsius的可能性进行深入研究:10月12日消息,在 DC 金融科技周上,SBF 表示,我们可能会或可能不会最终参与 Celsius 的破产事件,但我认为我们已经做出了目前会采取的大部分举措,Celsius 仍处于排他期,该公司可能会提出自己的重组计划,一旦失效将面临拍卖。此前有消息称,SBF 对参与 Celsius 竞拍感兴趣。(The Block)[2022/10/12 10:32:01]

?具体攻击流程如下:

1.攻击者创建攻击合约,通过Uniswap将0.9ETH兑换成138VETH;

2.调用VETH合约changeExcluded函数,支付128VETH手续费,使mapAddress_Excluded的值为true;

3.调用transferFrom函数,因mapAddress_Excluded的值为true,可以直接进行转账;

4.攻击完成后,攻击者通过Uniswap将盗取的VETH兑换成16ETH。

漏洞原理分析

此漏洞产生的主要原因是changeExcluded函数修饰符为external,使得任何人都可以调用该函数来绕过transferFrom函数内部的授权转账额度检查,将合约的VETH代币盗走。

首先分析transferFrom函数,在函数内部先进行!mapAddress_Excluded的判断,按照正常逻辑,该结果为true后,将进行授权转账额度的检查。但是转账函数_transfer的调用放在if语句体外,这就导致攻击者可以通过将mapAddress_Excluded的值设置为true而绕过授权转账额度的检查,直接进行VETH代币转移。transferFrom函数源码如下图所示:

△图3

通过分析修改mapAddress_Excluded值的代码发现,在changeExcluded函数内实现了对其值的修改,且该函数修饰符为external,可供外部调用。changeExcluded函数源码如下图所示:

△图4

在未对该值进行设置时,mapAddress_Excluded的初始值为false,最后if判断结果为true,进入if语句体,调用_transfer进行转账,要求支付转账金额为:mapEra_Emission/16即128VETH,然后mapAddress_Excluded的值被设置为true。emission的值如下如所示:

△图5

总结

此次VETH被盗事件,漏洞出自VETH合约而非Uniswap,VETH合约代码的函数访问修饰符的错误使用导致任何人都能绕过授权转账额度的检查,以极低的成本发起攻击。

成都链安·安全实验室在此提醒:各大智能合约运营商,在合约正式部署上线前应做好充分的代码审计工作,即使是一些简单的代码错误也会财产损失。

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

银河链

[0:0ms0-2:164ms