龙空技术网

如何避免ERC20 Token智能合约代码的安全漏洞!

Jerry的技术与思维 134

前言:

当前姐妹们对“edu漏洞挖掘”可能比较珍视,各位老铁们都想要分析一些“edu漏洞挖掘”的相关资讯。那么小编也在网摘上汇集了一些关于“edu漏洞挖掘””的相关文章,希望我们能喜欢,你们快快来了解一下吧!

最近,由于工作需要,研究了下了ERC20 Token的智能合约代码,吓了一跳,因为网上(比如百度)看到的智能合约代码,大部分都是有安全漏洞的,对于很多项目,随便找一个不靠谱,不求甚解的程序员,然后百度下ERC20的智能合约代码就发布了,带来的危害是极其大的。

我们先看下回顾下,几个由于ERC20智能合约代码有安全漏洞而被发生盗币情况的几个项目:

一、漏洞分析

1. EDU

etherscan地址:

edu漏洞.png

EDU的智能合约中的transferFrom函数中,没有校验 allowed[_from][msg.sender] > _value ,并且函数内没有使用safeMath,导致攻击者不需要私钥即可转走指定地址的所有EDU代币。

2. 美链BEC

etherscan地址:

美链代码.png

这个漏洞直接导致美链归零,因为攻击者的帐号不会转出任何BEC,但是接收方却可以接收到大量的BEC,查询下token holders,发现两个地址的持有量远远超出100%好多好多数量级

BEC token holders.png

当然其实还有更多的智能合约代码有问题,其他已知的有,但是其实还有更多没有被发现出来。

image.png

二、为什么会出现这么多安全漏洞?

以太坊发币确实很简单,简单到网上找个教程就可以发币了。但是其实区块链还是个新事物,对于程序员也是如此,这里没有贬低程序员的意思,毕竟笔者也是程序员 ,并且写了很多年代码。但是这个世界太浮躁,喜欢不求甚解的拿来主义。

你如果通过百度搜索关键字:以太坊发token教程,结果如下

image.png

如果你是一个想做事情的项目方,找了一个不靠谱的程序员,按照这篇文章的代码去发币,那么恭喜你,归零之路等着你

类似搜索关键字:erc20 token标准

image.png

这些文章都是阅读量很大的几篇文章,并且被大量的人进行转载和引用,如果你的程序员看到了这些文章,没有经过自己的思考,会发生什么,可想而知了!!

三、已知的以太坊智能合约有哪些?

笔者经过了解,以太坊智能合约安全漏洞问题主要包括以下几个方面:

1. 代码编程规范漏洞

错误的权限声明、冗余的回调函数和可预测的随机数等将会存在被恶意利用的危险,导致违背原始设计的交易发生。

2. 代码编程规范漏洞

错误的权限声明、冗余的回调函数和可预测的随机数等将会存在被恶意利用的危险,导致违背原始设计的交易发生。

3. 整型溢出漏洞

整型上溢/下溢会导致非法的交易,造成巨大的经济损失,前面讲的美链BEC就是这个问题导致,其实很多项目都是这个问题

4. 可重入攻击漏洞

没有理解fallback函数,异常的调用重入造成交易失败或不可控制的转账行为。著名的以太坊分叉就是这个漏洞因为盗币而导致的

5. 执行顺序依赖漏洞

不正确的语句执行顺序可以绕过异常状态检测,从而引发错误的转账行为。

6. 时间戳依赖漏洞

依赖时间戳的智能合约其执行结果可能会被操纵,从而导致错误的业务逻辑。

重要提示:

国外有大神:Dr Adrian Manning,已经把solidity智能合约很多的安全问题都做了介绍和分析了,建议要写智能合约的开发者都去好好读一下,原文链接如下:

另外,要特别感谢慢雾科技对本文做了翻译,方便中国的读者,翻译后的链接如下:

四、总结和建议需要开发者提高安全意识,智能合约发生漏洞是致命的,并且还不可篡改,不像传统的软件,出现bug可以修复重新更新代码上线。需要深入去了解solidity语言的特性和运行机制。拿来主义是有前提的,拿来的东西是你了解过的,是确定性的,是无误的。对新的事物,不确定的事物一定要去学习和了解,就像投资一样的,对于不懂的东西千万不能去碰,不要看到别人成功了,有妄念觉得自己也能和别人一样成功。

标签: #edu漏洞挖掘