当前位置:网站首页 > 网络安全培训 > 正文

区块链项目SMT可能创造了一个历史性的危机

freebuffreebuf 2018-04-27 295 0

本文来源:i_春秋

image.png凤凰网WEMONEY讯 4月25日,据火币Pro公告,SmartMesh(SMT)项目方反馈4月25日凌晨发现其交易存在异常问题,经初步排查,SMT的以太坊智能合约存在漏洞。受此影响,火币Pro目前暂停所有币种的充提币业务。另据媒体报道,发现SMT与美图BEC代币存类似的安全漏洞,即可通过溢出攻击可以收到大量的代币。据了解,SMT已经上线火币、OKEx等多家交易所。

image.png

前几日,另一则代币BEC美蜜合约也出现重大漏洞,黑客通过合约的批量转账方法无限生成代币。天量BEC从两个地址转出,引发抛售潮。当日,BEC的价值几乎归零。Beautychain(美蜜)代币名为BEC,2月23日在境外交易所OKEx上线后其开盘涨幅高达4000%,一度收获280亿美元市值。4月22日下午,OKEx发布公告称,13时左右,BEC出现异常交易,称应BeautyChain (BEC)项目方的要求,暂时关闭BEC/USDT、BEC/BTC、BEC/ETH的交易和BEC的提现,具体开放时间另行通知。

 

这两则关于区块链项目的安全事件发生在短短几天时间里,给通过增加超过流通量的代币,造成通货膨胀,蒸发了上千亿市值。今天凌晨爆发的SMT合约漏洞和BEC如出一辙,为此,永信至诚Ar实验室(先进研究实验室)应急研究了SMT的合约代码,在此为各位区块链项目的研究者、运营者和参与者敲响警钟。

 

先说一下原理:

image.png

后来在我们严刑逼供下,Ar实验室的技术小哥哥终于拿一个计算器把问题讲清楚了,不过对于凡人来讲还是太难懂,所以我们重新打个比方:

 

正常交易会把交易金额转存到一个变量里(就好像是一个快递箱),正常箱子容量可以放100…(中间省略248个0)…0000个金币。发生正常交易时,A(转出者)通过箱子转出1000个金币给B(接受者),同时还会给挖出金币和记录交易的矿工一些佣金,譬如10个金币,所以箱子里放了1010个金币。这时候,A总共支出是1010个金币,B总共得到1000个金币,矿工得到10个金币佣金。交易完成。

2.jpg


(交易的时候调用了transferProxy,其中第三个参数是一个uint256类型的值,这是一个被定义成“无符号的整型”的变量,总共可以有256位,当数值超出256位时,就废了)

 但是这个箱子有个bug级别的设定,就是当它装满金币时,多放一枚,箱子就会进入到“溢出”状态,所有金币就都会进入到一个全新的维度空间。箱子就会变成一个空箱子,A没有金币转出,但是B却能收到满满一箱子的金币。


【不支持外链图片,请上传图片或单独粘贴图片】

一般代币发行和流动的总量是固定的,所以如果凭空变出一箱子金币,市场上的流通量就会变多。

原本10000个金币价值5000000,现在多了10000个金币,还是总价值5000000,所以每个金币价值就变成了250(我不是有意骂人的)。

image.png

image.png

这种情况在世界发展历史中出现过很多次,譬如1923年,一战之后的德国背负了大量的战争赔款,国家没有办法,只能增发货币,原来的黄金储量不变,但是货币一下多了千万倍。于是,人们手里的钞票变多了,但是钞票实际的购买力就变小了。所以后来如图片这样堆成小山的德国马克,总价值还不到1美刀,钞票于是沦落成小孩子玩具。

image.png

我们通常管这种现象,叫做“通货膨胀”。

膨胀.jpg

于是,标榜“匿名”“不可篡改”“安全”的区块链技术,终于爆发了第一次真正意义上的“经济危机”。而造成经济危机的原因不是发行方滥发代币,而是在黑客代币的智能合约中,找到了一个bug(漏洞就是漏洞,说什么bug),从而一下打开了潘多拉的盒子,凭空造出了天文数字般的代币。

11.jpg


那这次黑客利用这个漏洞造成了多大的增发呢?——上图是SMT项目的钱包地址,所有交易都会被记录下来。我们可以看到,这个项目总发行量是31亿代币,可以流通的是其中的49%,然而看到钱包交易的前几位,如第一位吧,拥有6.51330501959904E+58枚代币,远远超出了SMT的发行总量。这行数字“6.51330501959904E+58”到底是多少?

22.jpg

小爱解读一下,这个是科学计数法,一般在计算海量数据时才会用到,写作“65133050195990400000000000000000000000000000000000000000000”,

image.png

比阿佛伽德罗常数(注:物质的量的常数,1阿佛加德罗常数=6.022141x10^23)还要多一阿佛加德罗常数倍乃至更多。

image.png

所以,SMT项目因为黑客的增发,今天已经不能交易。造成这么大影响,有没有什么防堵和挽救的措施?

 

这个分两个维度来分析,第一个是从漏洞本身的维度,通过几行代码就可以封堵了。但是从造成的经济损失维度,因为区块链的匿名性和不可篡改性,除非锁定黑客利用之前的交易数据,然后以当时为起点,重新发一轮新币。总之,无论如何,这都是一个浩大的工程,和一笔不菲的学费。

 

截止到本文发稿之前,有博客爆出还有十几个项目都存在类似的漏洞,i春秋团队和永信至诚Ar实验室还会持续跟进。

 

我们总说自己生活在一个日新月异的世界里,因为技术的加持,我们每天都能感受到新的变化,感受到到未来世界的清新空气。但是浸润在多年攻防一线的永信至诚Ar实验室和以“培育信息时代的安全感”为己任的i春秋团队始终认为,没有一个系统是永远安全的,因为人是最大的漏洞,而且总会有更高维度的技术出现,像导弹打城门那样碾压现在所有的安全措施。因此,攻与防是一个长盛不衰的话题,安全也是一个动态的平衡。在一个技术驱动变革的时代里,一个人就可以凭借技术力量改变整个时代的面貌,尤其是区块链这种离钱非常近的技术,就更要如履薄冰。

所有对技术怀有憧憬和向往的企业和个人,如果想在这个日新月异的时代生存,就不得不加强自己在网络安全上的“免疫基因”,对新技术的应用怀有敬畏。才能让更多美好的技术改变我们的生活。

 

好啦,废话不多说,点击这里看看i春秋团队应急推出的《一行代码引发的区块链通胀危机》。

33.jpg

离钱最近,就离风险最近。


编辑:傲客

责任编辑:MAD小郭

有问题大家可以留言哦,也欢迎大家到春秋论坛中来耍一耍  >>>点击跳转

转载请注明来自网盾网络安全培训,本文标题:《区块链项目SMT可能创造了一个历史性的危机》

标签:安全资讯

关于我

欢迎关注微信公众号

关于我们

网络安全培训,黑客培训,渗透培训,ctf,攻防

标签列表