前段时间以太坊升级架构,君士坦丁堡的硬分叉一个升级代号,被爆出含有高危的网站漏洞,该漏洞产生的原因是由于开启了新的协议模式eip1283导致的,也是区块链漏洞当中危害较为严重的,可以让一些交易进行重入,一个转账可以导致写入2次,但该漏洞并不是确实的可以进行重入漏洞。以太坊区块链在发现该漏洞之后,紧急的停止了以太坊的硬分叉升级,并与上个星期五召开了内部会议对其漏洞进行修复,延期对以太坊的硬分叉升级。
区块链当中,以太坊属于比较大的虚拟币,位列于比特币,第二。关于该漏洞的详情我们来分析一下,关于这次以太坊的升级大家都可以提议,必须经过内部审核,才会通过提议,在这次的提议当中有个eip1283的升级建议, 以太坊的漏洞就是由他而生。
这个建议主要是对以太坊的操作码进行长久的保存数据以及更好的整理以太坊的交易手续费,便捷,快速,处理过程的逻辑更为人性化,大大节省了成本以及时间,使得该提议被提上了日程,以太坊也进行了采纳,公开与众,攻击者根据公开的一些细节,对其进行漏洞挖掘,才导致了今天发生以太坊漏洞。
区块链重入漏洞在同一个交易当中,1个买家1个卖家进行的合约交易,两种合约互相调用并产生了重复转账的一个漏洞,漏洞产生的根源并没有将转账当成一个事务处理来看待。我们来看一下下图:
我们模拟了一个合约,交易的虚拟币由deposits来存储,然后再推送到splits变量当中去分配这个存储比例。比如一个交易需要买家跟卖家一起去分配,首先会调用一个init函数去存储双方的一个交易钱包地址,然后使用deposit的变量通道来进行充值虚拟币到钱包地址,再使用updatasplit的一个函数进行分配虚拟币,整个过程就是这也,在这个过程当中卖家买家就可以转账虚拟币一次,哪么多次重入会导致攻击者进行。
关于区块链漏洞的修复建议
区块链漏洞的修复补丁,以太坊已经开始着手准备应对升级,对该漏洞的产生进行了详细的分析,据我们SINE安全观察,以太坊的社区正在跟大家讨论处理这个漏洞的问题,关于合约产生的漏洞还是该由合约的提议者去解决,不能一直让以太坊区块链去解决,关于合约的安全写法以及规则,正式化,会避免以后区块链漏洞的产生。
来源:oschina
链接:https://my.oschina.net/u/3887295/blog/3004312