用户课堂|智能合约解读(二)什么是整数溢出漏洞?如何检测智能合约?

用户课堂是RatingToken团队专门针对用户需求而设计的新栏目。通过上期用户课堂的解读,大家已经对什么是智能合约及智能合约漏洞有了初步了解,本期将重点阐述智能合约中经常被利用且严重影响资产安全的高危漏洞类型“整数溢出”。

1.什么是“整数溢出漏洞”?

计算机语言中整数类型都有一个宽度,也就是说,一个整数类型有一个最大值和一个最小值。

当2个整数计算时,结果大于最大值或小于最小值就是溢出。举一个小例子说明一下:在区块链里面都是无符号整数,最小的就是0。

比如最大值为a,最小值为0 。在最大值和最小值之间如果发生以下计算:

a+1=0或者 0-1=a

此时就称为发生了整数溢出。

整数溢出的原理

计算机中整数变量有上下界,如果在算术运算中出现越界,就会出现两类整数溢出。超出整数类型的最大表示范围,数字便会由一个极大值变为一个极小值或直接归零,这叫“上溢”,即上面例子中提到的a+1=0;超出整数类型的最小表示范围的话,数字便会由一个极小值或者零变成一个极大值,即上述0-1=a,这叫做“下溢”。

所谓物极必反就是这个道理。我们哲学中常常讲到的“度”在此处就是个很典型的示范。

整数溢出漏洞有什么后果?

“整数溢出漏洞”之前也已经被爆出过很多次,属于极度危险等级漏洞;漏洞引起的事件类型包括:超额铸币、超额购币、随意铸币、高卖低收、下溢增持等等;例如可导致原交易发起人使用0个或者少量的币就可以给其他地址转入大量的代币,也就是我们常常听到的代币无限增发。

用户课堂|智能合约解读(二)什么是整数溢出漏洞?如何检测智能合约?_第1张图片

先举个简单的例子:

A山里的一群猴子只会从0数到9,数完9之后就从头开始数0。有一天从B山跑来一只猴子叫桃桃,他发现了这个问题。桃桃来到A山居住,每次向管家爷爷要10只桃子。管家爷爷只会数到9,第10只桃子他就数0。这样一来桃桃每次拿桃子的记录为零。但是两个月后储备的桃子全没了,管家爷爷的账本中记录的是桃桃一共拿了0只桃子,但实际上桃子已经被他拿光了。

读了这个小故事以后你是不是感觉有点不妙?有这个觉悟说明还是很警惕的。确实,黑客就是这样来实现空手套白狼的增发操作。

用户课堂|智能合约解读(二)什么是整数溢出漏洞?如何检测智能合约?_第2张图片

黑客利用类似的机制凭空向一个账户中转账入很大数额的代币,而合约中的逻辑只要求他花费很小的代价,这样一来就为漏洞攻击大开方便之门。

今年也发生了很多由整数溢出造成的资产安全事件:

例一

2018年4月22日,黑客对BEC智能合约发起攻击,凭空取出大量BEC代币并在市场上进行抛售,BEC随即急剧贬值,价值几乎为0,该市场瞬间土崩瓦解;

例二

2018年4月25日,SMT项目方发现其交易存在异常,黑客利用其函数漏洞创造了大量SMT币,火币Pro随即暂停了所有币种的充值提取业务。

此类事件数不胜胜数,还有Ammbr(AMR 无限生成代币),以及最近发生的 OPL。一句话总结:整数溢出很严重,后果很可怕!

2.如何快速检测智能合约?

短时间内,多个智能合约被曝出安全漏洞且被黑客攻击,可见“智能合约”漏洞已经成为影响区块链安全的重要因素。除了被曝出的代币外,已上所的智能合约代币或处于众筹期的智能合约代币,存在的安全隐患也不容忽视。大家在投资代币或项目时要提前规避风险,选择专业的平台检测智能合约安全性,比如RatingToken

这里小编打广告真的毫不心虚。你别不信,先往下看:

RatingToken将智能合约漏洞分为三个方向:高危漏洞、中危漏洞、低危漏洞。

高危漏洞

合约代码中可能存在整数的上下溢出,攻击者可用于盗取资金、恶意转账等;有此类漏洞提示的项目风险较高,比如 SMT, BEC, EDU等事件都是由整数溢出问题造成的;

中危漏洞

交易金额无法篡改,但在调用外部合约上存在漏洞,攻击者可用于双花攻击、恶意转账;

低危漏洞

体现在合约撰写不规范,部署的时候导致更多费用的问题,给调用方造成经济损失,存在优化的空间。

以“净化币圈”为口号的RatingToken帮你一键检测智能合约,快速鉴别优质区块链项目。使用RatingToken小白也能快速检测智能合约,没有什么复杂的操作,你就能轻易获得智能合约风险解析:

具体步骤为:

1.打开官网地址(文末点击“阅读原文”);

2.搜索框内输入项目名称或智能合约地址。

只需这两步,即可一键快速检测该合约评分、排名及风险分布,获取风险详情解析。

如今漫漫熊市,投资更要谨慎。学会了如何快速检测智能合约,下一步投资就先来测测这个项目到底几斤几两吧,所谓知己知彼才能百战不怠!

下期我们会详细解读DApp的相关知识,欢迎大家持续关注

免责声明:内容仅供参考,不作为投资建议。

欢迎关注公众号RatingToken,了解更多内容。

你可能感兴趣的:(用户课堂|智能合约解读(二)什么是整数溢出漏洞?如何检测智能合约?)