区块链安全 以太坊漏洞分析与网站安全解决方案



             区块链是目前比较火热的话题,纵身而出的虚拟币也越来越多,比特币,以太坊,瑞波

币,莱特币,狗狗币,门罗币都是基于区块链而生的虚拟货币,在监管
以及匿名,安全方面受

到众多人的喜欢,很多虚拟币交易平台,以及交易所网站也
越来越多,国内像火币网,币安,

比特儿,币行网,可赢可乐都是目前较火的交易
所。
 

 
目前我们SINE安全在对虚拟货币进行安全检测以及安全分析,关于2018年以太坊被爆出的合约漏

洞,我们来详细的跟大家介绍一下,首先查看之前的以太坊代码,对
其仔细的人工检查发现该以

太坊漏洞主要是程序员在设计代码的时候,对合约安全
进行判断出了差错,导致攻击者利用绕过

判断进行攻击。
 
 
我们看下合约代码:截图如下
 
 
从上面的合约代码看出,代码的主要功能是对转币的函数,以及虚拟币账户的余额,用户授权

操作,以及提币操作函数的,在整个代码中使用判断来进行约束以太坊
币的交易状态,从第1

88行里还看到使用了一些场外交易中的外币功能,使用该函
数可以将外币统一起来提币到钱包

地址进行转账操作。那漏洞是怎样发生的呢?该
如何安全防范?我们接下来继续讲:
 
 
上面提到的函数是用户在转币的过程中,对传入的参数值没有进行金额的大小限制,不管多少金

额都可以转到用户的钱包中去,如果转币的金额达到5以上就会自动
的对虚拟币金额进行设置,

有一套以太坊自己的算法,将自身钱包余额加上这个金
额就等于目前钱包的所有金额,漏洞的发

生也在这里。

 
 
转账使用的是token机制,每个用户的token值都不一样,我们侧重的看下转账功能函数,由于转

账函数处理算法中出现安全问题才导致了漏洞的发生。看如下图:

 
 
 
上面的图片代码主要功能是转账,转币,我们看下代码里写的判断条件,当转币人自身的金额大

于转币的金额的时候,参数值会为1,并有个附加条件就是要满足这
个balances的值为0.能满足这

个条件的只有溢出参数了。我们来测试看下图:

 
 
达到这个条件就是 转币人的余额要小于转币的金额。每次转币都会导致账户多出很多币来,针对

于这种以太坊漏洞合约的程序员真应该好好的检查反省自己的代码
逻辑判断问题,由于判断条件

写的太过于疏忽才导致该虚拟币漏洞的发生,很容易
被攻击者用来入侵,转币等危险的操作。
 
 
 
关于虚拟币交易平台安全防护方面,建议程序员在设计代码过程中,多次的测试,在上线之前找

专业的网站安全公司进行安全渗透测试,对漏洞测试,漏洞挖掘,多
层面的找漏洞,直到没问

题,再投入到平台当中去,使整个虚拟货币更加的安全规
范化。
分享: