SMT(StartMesh)合约漏洞反思
在官方发布公告后,国内最大交易所huobi.pro紧急发布公告暂停所有币种的充提业务:
而就在这条消息发布之前,我还入手了2000多个STM,傻傻的我不知道什么时候竟然归零了。
中午下班吃饭时,心想今天抄底进了一波STM,等会儿挂出去赚顿饭票。打开火币APP,上面找不到了STM了,什么情况?翻看了一遍韭菜群,发现不是我一个人楞逼了,而是一大群炸锅的蚂蚁。
官方的解释是被黑客盗币了,给出了异常交易地址,火币也展示了异常“假币”交易记录地址。苍蝇不转无缝的蛋,事出必有因,到底是什么导致了SMT此次漏洞?
这事也得从STM最近的一系列演讲活动以及规划4.30上主链的消息说起。SMT项目从3月初就一路上涨,多次带跑huobi.pro涨幅榜,SMT/ETH交易对从低处到达高位翻了5倍还多,算得上上火币上的龙头项目(当然我更希望是BTM,因为我是比原铁粉)。4月17日STM团队在新加坡的一场大会演示把SMT的知名度推上了巅峰,SMT的生态项目MeshBox(MESH)在新加坡演示了其硬件盒子无网通讯功能,标志着全球第一款Mesh网络盒子离落地越来越近,随着很多空气币项目的跑路,资金会越来越集中于优质的龙头项目,因而会有大量的资金涌入SMT。
树大招风恐怕就是这个理,国际黑客也盯上这个“明星”项目,也想分其一杯羹。本月22日中午,黑客利用了以太坊ERC-20智能合约中的BatchOverFlow漏洞中数据溢出的漏洞攻击了美链BEC,使其损失达63亿多。而STM这个“大明星”和BEC一样,都是基于以太坊ERC-20 智能合约,因此,这个漏洞可能根本不需要花费时间去寻找破解,直接利用现有的技术攻击即可,竟然,同类攻击再次起效了。。忽然想起,今天看到余弦大boss说的一句话,“区块链生态安全是一场真枪实弹的战争。”
这场真枪实弹的战争差点让美链归零(其实和归零差不多了),也差点让STM的网络盒子梦想落空,还好,STM团队较为迅速,立刻执行救援,才缓解危机。据事后官方统计,此次由ETH智能合约漏洞生成的“假币”总数为65,133,050,195,990,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000.891004451135422463,由黑客地址转至交易所的“假币”总数为65,300,289,在交易所交易的“假币”有16,638,887(待最终确认)。虽然官方有说对于这些“假币”未被交易的进行冻结处理,对于已经流通于交易所的“假币”, SmartMesh基金会将拿出对等的SMT数量冻结及销毁,以弥补所造成的损失,保持SMT的总数保持在3,141,592,653的数值,但数字货币的安全依然让人胆战心惊,如此庞大的数量,韭菜们也伤不起,投资人也伤不起吧。
盗币事件发生后,区块链安全公司PeckShield利用自动化系统扫遍了以太坊智能合约并对它们进行分析,结果发现有超过12个ERC-20智能合约都存在这个安全隐患。通过以上事件,可见币圈风险有多高,通过以太坊智能合约“发币”容易,若不做好严格的代码审计和安全防护,亿级资金的损失只在一瞬间。
对于开发者所要思考的是,如何让自己写的代码少犯这种低级错误。溢出造成的bug,是极其低级的。对于一个有多年经验的开发者,或者技术水平高一点的技术团队,这些错误应该早在code review的时候就被发现了。此外,除了开发团队有责任,测试团队更应该拉出去打八十大板,这些问题怎么在测试的时候没发现呢,只能说明test case不全面。
为什么会出现同样的低级错误呢,结果显而易见,因为彼此的代码都是通过抄袭得来的,这样的币和空气币其实也没有什么区别,只不过是通过多一层包装解决了一些开源或者普通投资者关心的事情罢了,区块链的世界本身就是一个新生事物,大家对于如何判断代码抄袭或者空气币的门槛比较高,所以对于山寨币的投机,应该谨慎再谨慎,虽然伴随着百倍甚至千倍的收益,但归零风险实在是太高了。
Congratulations @joyven! You have completed some achievement on Steemit and have been rewarded with new badge(s) :
Award for the number of comments
Click on any badge to view your own Board of Honor on SteemitBoard.
To support your work, I also upvoted your post!
For more information about SteemitBoard, click here
If you no longer want to receive notifications, reply to this comment with the word
STOP