智能合约屡现漏洞,该如何选择安全的币种?
智能合约屡现漏洞,该如何选择安全的币种?
大白导读:区块链,无疑是近两年最火热的头条词语。随着这项分布式存储技术的崛起,寄托于区块链技术的数字货币也成为了投资热门。除了比特币是基于自身的底层架构而来,现在市面上大多数数字货币,都是通过以太坊智能合约发出。这种方式,虽然让人们可以更为便利地进行融资,但是智能合约安全问题却成了重大的隐患。
发展了这么多年的互联网,都常遇到各类的黑客袭击事件。作为“新生宠儿”的区块链,又怎么会没人觊觎呢?有人会说,如果我们的数字货币在以太坊区块链上,除非发生51%攻击,不然被盗的可能性很低。没错,这对以太坊主网来说确实如此,但是 不代表智能合约不会有问题。
比如7月8日, AMR项目被爆出智能合约中的漏洞可以让黑客无限生成代币 ,而由于该项目当时已经上线交易所,黑客可以通过这些“假币”进行砸盘获利, 这也就意味着黑客可以“无限印钞”,最终导致的是普通投资者的巨大损失。
一、导致代币增发的“整数溢出”漏洞是什么?
该项目的智能合约中,整数溢出的重大漏洞,使得黑客可以凭空打造出无限的AMR代币。
所谓的整数溢出,就是说如果两个8位变量A和B按位相乘,结果超出8位,超出位将被丢弃,只保留后8位长度。 该漏洞中产生溢出的变量名为totalTokensToTransfer,该变量类型为uint,在Solidity中,uint长度为256位,所以只要累加超过2^256-1大小的数,将会导致整数溢出。
例如以下的公式,在发生整数溢出的时候,最前面的“1”就会被丢弃,那么整个totalTokensToTransfer的值就会被置零。而totalTokensToTransfer表示转出代币的总量,并且为了保证转出的代币不能超过自己的余额,合约中也进行了校验。
整数溢出原理
如果发生了整数溢出,就会造成以下代码第198行的情况,totalTokensToTransfer=0。换句话说,这时候程序会认为你的转出代币总量为零,只要你的余额中有少量代币,就可以绕过代码第203和205行的验证,从而完成转账。然而 事实上,totalTokensToTransfer是个非常大的数值,只不过这时候代码无法检验出来而已,从而黑客就可以“凭空”造出无数代币。
整数溢出攻击后的代码
这类智能合约的漏洞,其他项目方也曾出现过。例如SMT和BEC的漏洞,就和AMR的漏洞非常类似。它们都是 由于没有进行大数保护,从而造成整数溢出,形成了“无限印钞”的现象。
针对智能合约中,没有大数保护的漏洞,其解决方法其实很简单。很多代码是因为直接使用普通的加减乘除符号,但缺少了整数溢出判断,从而造成数据溢出的隐患,而使用library SafeMath可以彻底解决数据溢出的问题。因此,只需要彻查智能合约代码,把其中的“+” “-” “*” “/” 换成library SafeMath,就可以彻底解决数据溢出的问题。
二、整数溢出攻击的受害者都有谁?
其实不用说,代币被溢出漏洞攻击导致增发,所有持币者将遭受损失,这其中就包括,项目方和投资者。
黑客为啥会攻击项目呢?道理很简单,项目代币已经上线交易所,且有不错的交易深度。如果黑客能够无限获得代币,也就意味着可以无限砸盘,从交易所直接获利。
比如SMT项目,在4月25日发生了智能合约漏洞事件后,SMT币价大幅降低,因此暴跌近20%,而且从此一蹶不振,币价持续走弱。 所以这类漏洞事件,不仅会对投资者造成影响,也会对项目方造成信任危机,甚至直接导致代币归零。
好在SMT在被攻击之后,作出了积极的回应。 首先是相关交易所停止了交易,并冻结了“假币”及大额砸盘者的账户,从而防止黑客将资产转移 ;其次是SMT基金会冻结同等数量的SMT“真币”,以保证外面流通的代币总量不变;最后暂停SMT交易直到智能合约重新校验完成。
SMT价格趋势
BEC(美链)同样在被“溢出”漏洞攻击后,遭遇黑客抛售“假币”砸盘的悲惨命运。BEC市场瞬间蒸发64亿人民币的市值,使得BEC价格接近归零。最后交易所中止了交易,并且选择了交易数据回滚,尽可能地降低因此造成的损失。
BEC价格趋势
三、如何应对合约漏洞?
智能合约漏洞不断,除了这类 整数溢出 的漏洞,还有“ 重入攻击 ”,当年大名鼎鼎的THE DAO就被黑客利用这种漏洞攻击而导致大量的以太币被盗走的。重入攻击原理其实也不复杂:以太坊网络可以调用外部合约,但是外部调用存在被攻击者劫持的风险,并在被攻击的合约上进行恶意操作,从而导致资产被盗。所谓“重入”,就是黑客在外部合约的任意位置“重新输入”了其他代码执行, 代码被黑客篡改了 。除此之外,还有 重放攻击、重排攻击、短地址攻击 等等。
面对如此多的被黑客攻击的事件,我们是否能从中吸取教训,尽量减少这种攻击事件及减少投资的损失呢?
对于项目方而言 ,毫无疑问需要去审核项目的代码, 不仅是项目团队自身审核,更需要专业的第三方安全机构来审核 ,并且给出专业的检验报告 。同时,项目方最好能设立专门的“保险资金”,来应对此类由于安全问题而造成的损失。
对于交易所而言 ,应该在代币上线交易所之前,就对其代码的安全性进行审核。对于上线的代币,应该实时监控各类代币是否有大额链上转入的情况。如有异常,应该立刻锁定对应账户进行排查。如果已经发生砸盘现象,需要做到快速冻结对应账户,防止其将资产转移,必要时进行数据回滚,最大化降低损失。
对于投资者而言 ,在投资之前,如果没有相应的判断能力,建议选择那些已经经历过长时间检验的市值靠前的币种,相对来说它们存在重大漏洞的风险比较小。如果选择投资“新币”,代码的安全问题是一个不可忽视的问题,投资者最好是具备相应的识别能力,同时需要项目方给出相应的智能合约检测报告,以及确保项目方设立了专门的“保险资金”,从而减少投资风险。
如果遇到“整数溢出”这类攻击,项目方应拿出对应数量“真币”来锁定,确保整体流通量不变;同时联系交易所暂停交易并冻结嫌疑账户;之后代码的修复以及代码全面的审核,避免重蹈覆辙。如果是有担当的项目发,还应该在二级市场进行回购,保证代币价格的稳定。这些方法虽是“亡羊补牢”,这样能尽可能减小投资者损失以及重建投资者的信心。
对于整个行业而言 ,代码审计应该形成行业规范,面对不进行代码审查的项目方,交易所就不应该给予上线机会。不提供第三方代码审计报告的项目,投资者也应该敬而远之!
区块链技术发展时间不长,但是速度却很快。 然而跑得太快,很多时候就意味着风险 。 如果项目方在想着追赶风口时,却忽视了最重要的“基本功”, 连关键的代码安全都无法保障,最后的结局可能是“欲速则不达”!
『声明:
文章为作者独立观点,不代表白话区块链立场,亦不构成任何投资意见或建议。』
이더리움 가격 분석 : ETH / USD 200달러 이상으로 회복 가능?
주요 하이라이트• 이더리움 가격은 미국 달러 대비 168달러에서 지지를 얻은 후 상향 조정되기 시작했다.• ETH / USD의 시간별 차트(크라켄을 통한 데이터 피드)에서 183달...
지닉스,암호화폐 펀드 ‘ZXG 1호’ 공모 마감 … 경쟁률 12대 1 ...국내 최초의 암호화폐 펀드 공모, 접수 2분 만에 공모 금액(1,000ETH) 돌파
국내 최초의 암호화폐 펀드 공모, 접수 2분 만에 공모 금액(1,000ETH) 돌파펀드 투자만으로 개인 참여 어려운 유망 ICO 프로젝트에 간접 투자 가능세계 최초 암호화폐 펀드 ...
[Masterpiece YouTube+] 예스맨 가즈아 / 비탈릭발언? / 궁금증해소 / XRP내용 / 정확도 높은 차트방송 / BITCOIN / ETH / XRP - 예스맨
Korea No.1 Chart analysis and News Yotuber - YES MEN예스맨의 비트 코인 방송 채널에 오신 걸 환영합니다.◈초보자를 위한 비트코인 등 암호 ...