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

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

VETH智能合约

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

?

根据链上交易显示:

攻击者利用自建合约

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

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

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

Binance与柬埔寨Royal Group签署合营企业协议:金色财经报道,在 2022 年东盟商业与投资峰会期间,Binance 宣布与柬埔寨 Royal Group of Companies 签署合营企业协议(Joint Venture Agreement),后者是该国龙头企业,双方将探索创建基于 Web3 应用程序的解决方案和平台,并利用 Binance 的技术知识和区块链平台能力来帮助推动特定社会阶层经济增长。(phnompenhpost)[2022/11/13 12:59:13]

详情如下:

柬埔寨探索其数字货币项目Bakong的跨境交易:柬埔寨国家银行(NBC)总干事和数字货币Bakong项目负责人Chea Serey星期三在接受《日经新闻》采访时透漏,NBC目前正在通过Bakong探索跨境交易,与泰国央行和马来西亚最大的银行Maybank密切合作。Serey解释说,Bakong跨境交易将为在国外的柬埔寨人提供一种“安全和有效的向家人汇款的方式”。她指出,新的付款方式将有利于许多移徙到马来西亚的柬埔寨妇女。此外,Chea Serey对比特币表达了怀疑的立场。Serey表示,加密行业需要监管和消费者保护措施,以避免价格波动的后果,他说:“这里没有基本面,如果你允许投资者进入,当价格暴跌时,谁来承担责任?”在Bakong启动时,Serey强调Bakong不应该被称为CBDC,而是一种支付和转账服务。(Cointelegraph)[2021/8/6 1:39:24]

△图1

柬埔寨发布“Project Bakong”项目白皮书 详细介绍其技术细节:柬埔寨国家银行发布了一份白皮书,详细介绍了即将推出的区块链支付系统“Project Bakong”的技术细节。白皮书中提到,Bakong项目将是一个封闭的系统,该系统将得到该国银行和金融监管机构的支持。但是,与其他国家目前正在执行的CBDC不同,Bakong项目不是一种本机数字货币。此外,Bakong还将用作P2P平台,包括零售支付和各种交易类型。(Techwireasia)[2020/7/1]

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

柬埔寨央行CBDC支付系统使用Iroha:据此前报道,柬埔寨国家银行(NBC)总干事Chea Serey表示,央行基于DLT的支付网络已经开发四到五年,将在2020年年底投入使用。据悉,柬埔寨央行的Project Bakong是一个CBDC付款系统。该系统使用的是Hyperledger Iroha。Iroha是包括初创公司Soramitsu和IT公司Hitachi等多家公司的产品,并且在设计时考虑了移动应用程序。Iroha以移动端为中心的方式可能吸引了柬埔寨的注意。The Block作者Mike Orcutt发表了一份深度分析报告,“根据Chea的说法,柬埔寨有机会通过扩大金融机构的互操作性,特别是该国各种‘电子钱包’提供商,将更多的人纳入其金融体系。她说,事实上,柬埔寨使用电子钱包服务的人比在商业银行开户的人多,电子钱包服务通常由科技公司提供。‘我们认为这是一个通过移动平台推进我们金融包容性的机会。’”[2020/5/22]

△图2

?具体攻击流程如下:

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-7:226ms