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

  • A+
所属分类:技术

chatGPT账号
2020年6月30日下午5:46,Beosin-OSINT威胁情报系统发现VETH智能合约(0x75572098dc462F976127f59F8c97dFa291f81d8b)

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

根据链上交易显示:攻击者利用自建合约

(0x47ed415006c6f8052fff05fe983f31d6d24b8fdb)

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

(0x75572098dc462F976127f59F8c97dFa291f81d8b)

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

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

(hash:0xdd1120a90ed4112b634266d6a244b93ca86785317bc75f0e170ab0cd97c65224)

详情如下:

△图1
在盗币成功之后,攻击者将盗取的VETH通过Uniswap换成了16 ETH。如下图所示:
△图2
▷具体攻击流程如下:1. 攻击者创建攻击合约,通过Uniswap将0.9 ETH兑换成138 VETH;

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

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

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

 

漏洞原理分析

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

 

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

△图3
通过分析修改mapAddress_Excluded[msg.sender]值的代码发现,在changeExcluded函数内实现了对其值的修改,且该函数修饰符为external,可供外部调用。changeExcluded函数源码如下图所示:
△图4
在未对该值进行设置时,mapAddress_Excluded[excluded]的初始值为false,最后if判断结果为true,进入if语句体,调用_transfer进行转账,要求支付转账金额为:mapEra_Emission[1]/16(跟进mapEra_Emission[1]的来源emission,得知其值为2048*1018)即128 VETH,然后mapAddress_Excluded[excluded]的值被设置为true。emission的值如下如所示:
△图5

总结

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

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

免责声明

发文时比特币价格:$9921

当前比特币价格:[crypto coins=”BTC” type=”text” show=”price”]

当前比特币涨幅:[crypto coins=”BTC” type=”text” show=”percent”]

免责声明:

本文不代表知点网立场,且不构成投资建议,请谨慎对待。用户由此造成的损失由用户自行承担,与知点网没有任何关系;

知点网不对网站所发布内容的准确性,真实性等任何方面做任何形式的承诺和保障;

网站内所有涉及到的区块链(衍生)项目,知点网对项目的真实性,准确性等任何方面均不做任何形式的承诺和保障;

网站内所有涉及到的区块链(衍生)项目,知点网不对其构成任何投资建议,用户由此造成的损失由用户自行承担,与知点网没有任何关系;

知点区块链研究院声明:知点区块链研究院内容由知点网发布,部分来源于互联网和行业分析师投稿收录,内容为知点区块链研究院加盟专职分析师独立观点,不代表知点网立场。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的电报
  • 这是我的电报扫一扫
  • weinxin
chatGPT账号
知点

发表评论

您必须登录才能发表评论!