以太坊 poa(以太坊EOS频爆漏洞)(1)

链得得注:大文观链,是链得得APP新推出的区块链技术分析系列栏目。由链得得APP作者马文佩伴随诸位用户,对区块链、数字货币市场中前端技术方案进行应用层讲解与热点事件的技术层分析。每个工作日与大家一同分享“链圈技术宅”的那些头脑日常。

今天中午,360安全卫士官方微博发布消息称, 360公司Vulcan(伏尔甘)团队发现了区块链平台EOS的一系列高危安全漏洞。经验证,其中部分漏洞可以在EOS节点上远程执行任意代码,即可以通过远程攻击,直接控制和接管EOS上运行的所有节点。

周鸿祎随后在微博表示,360从年初开始,已经在区块链安全方面做了很多研究,已经做了几个区块链安全解决方案,也包括EOS超级节点安全解决方案。

近几个月以来,市场上的公有链项目和虚拟币集中爆发出了一批漏洞,最严重的BEC被直接“归零”,其他遭受严重损失的项目还包括SMT等其他一大批沿用ERC20体系的项目。

实际上,在该漏洞被曝光之后,业界还发现了以太坊上多达十几个其他合约也使用了transferProxy这个引起BatchOverFlow 漏洞的函数,该漏洞让攻击者可以通过数据溢出的手段,根据需要创建天量代币,从而将整个代币系统击溃。

这次攻击发生在上个月,而就在上周,EDU和BAI也遭遇了黑客攻击。在EDU的智能合约中transferFrom 函数内,未校验 allowed[_from][msg.sender] >= _value 并且函数内 allowed[_from][msg.sender] -= _value; 没有使用 SafeMath,导致无法抛出异常并回滚交易,且由于合约没有 Pause 设计,无法及时止损。黑客利用该漏洞获得了30亿token并成功转手。BAI则表示受到了类似的攻击,而且这个问题可能依然会影响到所有ERC20项目。

这已经不是以太坊智能合约第一次出问题了,2016年,the DAO事件中,黑客利用the DAO智能合约中的漏洞,大规模盗取原the DAO智能合约中的以太币,对以太坊造成了巨大的打击。

这几次攻击事件让整个以太坊和ERC20体系遭遇了前所未有的重大打击。由于所有的漏洞都集中在智能合约上,智能合约又是区块链技术能否进入商业应用(或被称为区块链3.0)阶段的关键,以太坊和ERC20币价也在几天内呈现出下跌的趋势。

智能合约频频出现问题的原因很多,但主要可以归结为几点:

首先,智能合约是不可逆的,这意味着一旦智能合约被部署,基金会就无法升级或修改它们。因此在部署和使用智能合约之前,需要保证一切都不会出错。

其次,智能合约是可公开访问的,存储在智能合约里的内容对任何人可见,而且每个人都可以调用智能合约里的方法,这也让智能合约成为了区块链鸡蛋上的缝。

另外,只有上帝写的代码才没有bug。无论多么小心谨慎,让智能合约真正无懈可击几乎是不可能的。

最后,在以太坊和ERC20体系中,由于Evm本身的特性,智能合约往往会缺乏形式化验证。这也让智能合约的安全性受到了更大的挑战。

在外界纷纷猜测EOS是否出现了和ERC20类似的漏洞时,今天晚些时候,360更新了其技术博客,发布了该漏洞的具体细节。根据技术博客的内容,5月11日360就发现了这个漏洞,并在5月28日将漏洞报告给了EOS。29日,EOS修复了该漏洞,但根据反馈,目前修复了64位,32位仍未修复。

在博客中,360表示,这是一个std::vector函数溢出导致的漏洞。在libraries / chain / webassembly / binaryen.cpp(第78行)中,函数binaryen_runtime :: instantiate_module:

以太坊 poa(以太坊EOS频爆漏洞)(2)

在POC中,只需设置| offset | 字段设置为0xffffffff,函数就会溢出并崩溃。攻击者可以利用此漏洞在nodeos进程中实现远程代码执行,方法是将恶意合约上传到受害节点,并让节点解析恶意合约。在攻击中,攻击者首先会向EOS主网络发布恶意合约。EOS超级节点解析恶意合约,然后触发漏洞,攻击者即可控制解析合同的EOS超级节点。攻击者可以窃取超级节点的私钥并控制打包的内容。更重要的是,攻击者可以将恶意合约打包成一个区块并发布,最终导致整个网络中的所有节点都受到攻击者的控制。

TASChain创始人吴轶群告诉链得得,“这是小毛病,但会造成大问题。这种问题修复起来很简单,但造成的后果可能非常严重。”

量子链创始人帅初在朋友圈表示,此次漏洞应该和webassembly新的虚拟机和无gas模型有关,远程代码被vm编译后,被无限执行。他认为,该漏洞在支持虚拟机的合约平台上容易发生,智能合约无限的灵活性也留下了无限的隐患。任何一个小的共识协议的疏忽,都会有机会ddos整个区块链网络。而此次漏洞的根本原因是“ETH和EOS,都不是面向货币的设计,面向区块链平台的设计,复杂度很高,也蕴含更多安全隐患。之前unlimited btc,也是因为一个共识bug,网络就会被ddos瘫痪。”

快的创始人、泛城投资创始人陈伟星则在朋友圈炮轰EOS,称“EOS堪称区块链毒瘤,毫无理想主义的极致炒作圈钱者,区块链共识的最大破坏者”、“一个花几千万人民币就能搞定的技术真的有必要让大家炒的那么欢?”他还列举了EOS的四宗罪:

1.募集近30亿美元,完全不知去向;

2.ico一年365天,不知投向与目的;

3.dpos过度中心化,技术漏洞百出与过度包装;

4.绝大部分炒币与所谓超级节点来自国内,而超级节点本质是一群利益共同体的炒作;

本次漏洞事件EOS官方还没有将漏洞完全修复,360则表示手里还有不少EOS的漏洞。EOS会如何度过这次危机?我们拭目以待。

,