如果天空是黑暗的,那就摸黑生存;如果发出声音是危险的,那就保持沉默;如果自觉无力发光的,那就蜷伏于墙角。但不要习惯了黑暗就为黑暗辩护;不要为自己的苟且而得意;不要嘲讽那些比自己更勇敢热情的人们。我们可以卑微如尘土,不可扭曲如蛆虫。——季业
“除此之外我们也可以通过设立黑客奖金池、黑客基金或者项目特别顾问等方式来激励白帽黑客主动挖掘漏洞,帮助平台持久安全地运行。 ”——EOS团队如是说道。
曙光女神眷顾前的漫漫长夜
2018年5月29日,一片黑云笼罩了怀胎长达一年的准备出生EOS这位受万千宠爱的新生婴儿,似乎,突然之间,所有看好它的人,被黑云挡住了曙光。那一天,360公布了其发现EOSIO严重漏洞的消息。新闻一出,如雷贯耳,一系列相关跟进事件迅速成为区块链领域内的舆论热点。伴随着越来越多的质疑和失望的声音,EOS仿佛不太被幸运女神眷顾着,甚至币市,引起恐慌,到处都是砸盘的声音。那么,EOS是不是真的要难产了?倒不如,我们从技术角度对此次事件进行客观复盘与分析,一探究竟,并再次对区块链安全进行探讨。
1. 黑云究竟来自哪里?
根据目前网上公开资料,包括博客、代码记录等,我找到了一些蛛丝马迹,首先对本次安全事件的技术过程进行一个简要梳理:
北京时间5月28日 360公司Vulcan(伏尔甘)团队联系主导EOSIO开发的Daniel Larimer(即bytemaster,以下简称BM)并报告了发现的高危安全漏洞情况。
5月28日 BM在github的eos项目上新建了一个需要跟踪的问题(Issue)。同天,该问题所描述的bug被修复;该问题关闭。
5月29日中午,360公司在其官方微信公众号上公布了区块链平台EOSIO的高危安全漏洞的消息。
同天晚些时候,360公司在其公司博客“奇虎360技术博客”上公布了该漏洞的细节内容。
2. EOS这个新生婴儿本身缺陷
奇虎360技术博客的报告“EOS节点远程代码执行漏洞 — EOS智能合约WASM函数表数组越界”
EOS问:“这是什么意思?”
内存问题引起程序崩溃
C++程序指针一旦访问到相应内存区域,即有可能对其进行相应的操作,就好比,黑客打破了别人的防火墙,所以如果控制不当,访问到原本的“界限”之外,就会产生越界的问题:如果访问到数据区域,则可能会引起程序崩溃或读取、修改到原本不应访问到的信息;如果访问到代码区域,则可能注入或改变原有正常代码。所以代码和数据这两个脆弱的地方很容易受到细菌和病毒感染,引起EOS小宝贝身体的疾病。
回到本次EOSIO的这个天生缺陷分析,根据360的这份身体检查报告我们可以看到:当检查代码失效后,如果offset变量被任意设置一个地址,例如0xfffffff,则会引起segmentation fault的错误而导致程序崩溃;而如果对合约进行精心设计,攻击者可通过对内存越界写入的方式来执行恶意代码,正如360报告中附加的视频所示。这里说的是有一些病毒会伪装成好的细胞,躲过免疫机制,进入EOS宝贝,肆意攻击。
同时,如果能将风险控制在单机范围内,那对全局来说影响还是相对可接受的。但正是由于恶意代码可以是一个区块链上的合约,因此EOSIO将合约打包成区块后会在整个网络中传播,使得所有节点均可被此恶意代码控制,即整个网络都受到致命影响。EOS还有其他兄弟,一旦伪装的很像,发生了数据上的冲突,他们肯定会闹矛盾,就像被操纵的娃娃一样,不能正常的进行合约打包。
3. EOS娃娃的前车之鉴,成了区块链安全的新代言,如何构建呢?
从本次漏洞结合近期以太坊ERC20漏洞等安全事件,都让我们在合约问题上面,就像在暴风雨前行。更因为这样,要看到别样的风景,我们必须披荆斩棘,区块链安全生态不仅仅需要项目团队、开发人员,更需要多方的通力合作。只有从这些问题上建造足够坚固的防御门,漏洞问题才能根本上保证使用的财产安全,EOS才能在温室下茁壮成长。
保护好EOS,我们责无旁贷
3.1. 完善代码安全审查机制
ERC20漏洞事件和EOSIO的缓冲区溢出事件,都是可以通过有效的代码安全审查机制来避免。以ERC20漏洞为例,经过核查,使用ERC20协议的项目竟然有20余个都存在类似的问题。作为投资者都是希望项目方赶紧写白皮书,赶紧募资,赶着上交易所,很少人会去沉下心来,会检查一下自己婴儿身体是不是出现了状况,初生婴儿本来毛病就多,发育得太快,不会适得其反?开发人员是不是应该反思反思?
区块链作为一个分布式的去中心化系统,代码一旦部署将很难更新,需通过硬分叉或者软分叉来对代码进行升级,成本高,并且需要社区达成共识。无论是btc又或者eth都进行过相应的分叉,都是对区块链生态的重大破坏。所以在项目发布之前,充足的测试和代码审核变得十分关键和必要。
3.2. 发展白帽黑客激励机制
有细菌去破坏EOS这个新生宝贝,自然也会有细胞去保护它。随着各类数字资产的市值越来越高,黑客们从中套取的收益也越来越客观,相比之下,白帽黑客们却穷酸的多。这种巨大的收入差导致越来越多人加入的黑客的阵营,而白帽黑客们则为数稀少。通过激励白帽黑客来抑制或者是平衡黑客越来越肆无忌惮的破坏行为或许将成为一种有效的手段。通过设立黑客奖金池、黑客基金或者项目特别顾问等方式来激励白帽黑客主动挖掘漏洞,帮助平台持久安全地运行。政策上也应该给予白帽们一定岗位就职,并且发布一些法律条文,减少黑客入侵的常态问题,充分利用技术社区发布空间和资源,保证了用户活跃程度之余也让他们对于自己投资的项目有更近一步的了解,这也是开发者和用户的交互,这不正是我们所需要的吗?
回归本文开头,EOS最近进去主网开启阶段,大家都迫不及待这位含着金钥匙出生的宝贝会怎样,它是金子,还是涂着颜料破旧铁料,我们拭目以待!
可我依然相信,未来,eos还会跌跌撞撞,直到足够坚强!
我是pulsar,我愿和你谈一辈子不分手的恋爱!
网友评论