内容 | 万涛 IDF极安客实验室联合创始人
整理 | Aholiab
说起区块链,虽然为人大肆谈论,却一直绕不过一个令人尴尬的问题——关于数字资产的丢失、被盗问题屡见不鲜,包括之前币安的安全事件也引起了业界的轰动。
那么,区块链安全的现状到底是什么?区块链与加密货币究竟存在哪些安全问题?如何构建安全的智能合约?IDF极安客实验室联合创始人万涛认为,如果不顾安全大谈区块链都是「耍流氓」;如果以安全的名义去鼓吹区块链,却没有实质的行动,则属厚颜无耻。近日,万涛给「区块链大本营」讲了区块链安全的那些事儿。
那一夜,黑客耍了所有人
2018年3月7日深夜,不少用户发现自己币安账户中持有的各种各样的代币、数字币被换成了比特币。据网友反馈,被盗的账号中不少人以为这是币安系统错误导致的,还试图从币安客服那里得到解释。当他们还没有反应过来的时候,黑客已经开始了他们有组织、有预谋的行动。
因为大量代币被市价抛售,导致绝大部分币种开始下跌,市场中不明真相的散户也开始了恐慌性抛售。在币安比特币的交易对中,只有10余个币种处于正常状态,其他币种均在下跌。
在上涨的币种里,VIA(维尔币)成为了黑客影响市场的新目标:黑客操纵的账号在1小时内用1万个比特币拉爆了VIA(拉爆,即BlockBeats:币值在极短的时间内升高数倍)。
在引发恐慌性抛售之后,黑客将被盗账户中持有的比特币全部高价买入VIA,从22:50分的0.000225美元直接拉升到0.025美元,整整拉了110倍!整个过程中,黑客一共消耗了约10000个比特币。
按照正常逻辑,此时黑客手中的其他帐号就可以把自己手中持有的VIA高价卖出,换成比特币分散到安全的账号,然后提现离场。这一过程类似于庄家恶意拉盘又砸盘,但黑客并没有这样操作。
此时,币安已经注意到了异常情况,为了防止黑客提币,暂停了币安平台上所有的提币行为。这样一来黑客即便是把币值拉升了100倍,也无法提币。
当你看到这里的时候,是不是觉得币安的安全防护已经到位,黑客没有办法提币离场?
Too Young!所有人都想错了,因为在这场攻击中黑客压根就没想提币离场,一场宏大的收割计划其实早就结束了。
早有预谋的黑客当然会想到交易所会立即停止所有账户提现来挽回损失,所以他们来了一出「声东击西」——攻击币安,但最大的利润并不从币安上获取。而是来自于:之前在全世界各个交易所上早就挂出的「数字货币和代币做空单」。
币安是全球交易量第二大的虚拟货币交易所,这个市场中的任何波动都将快速地影响到其他交易所,大的包括:OKEx、火币、Bitfinex、Upbit等,小的包括各种二三流交易所。币安交易所中突然出现绝大多数币种的下跌,一定会影响到其他交易所的投资者的投资行为,进而影响虚拟货币价值的涨跌。
目前,已经有不少交易所上线了做空交易。黑客的真正目的是通过在开通做空交易的市场上挂空单,等到币值下降的时候,直接收割一波离场。这样操作,根本不需要冒着风险从币安提币,在市场下跌的那一刻,就直接完成了利益收割。
如果黑客一味地在币安上交易,是存在无法提币成功的可能性的,这会导致整场攻击功亏一篑。但黑客选择的是将利用币安这个大的中心化交易所的信用背书,来影响其他交易所。因为大量空单分散在成百上千家交易所,根本无从查起。而黑客本质上也并没有「盗取」任何人的数字货币,只是帮大家「换了换种类」而已。
看到了吗,在这次事件中,黑客的攻击已经「去中心化」了 。
关于这一点,业界已经达成共识:这场入侵的潜伏时间非常长,黑客也表现的非常有组织、有耐心。因为从黑客的行为来看,他们已经做好了多手准备,如果可以提币,那么立刻提币走人;如果不能提币,依旧可以去隔壁交易所卖出或做空收割。
被打成「筛子」的交易平台
币安不安的事件,也许未来回头看,在区块链、数字货币安全历史上具有里程碑意义,意味着区块链安全领域,已有非常专业的「玩家」入场,未来的攻防对抗,会变成怎样的惊心动魄?
其实,自比特币诞生以来,数字货币被盗事件就层出不穷。对于普通投资者而言,除了数字货币投机风险外,不受监管的数字货币交易所也会带来较高的安全隐患。尤其是近几年,数字货币在价格和交易量上均呈爆发式增长,交易所成为黑客盗取和勒索的首选。
以下是比特币历史上比较有名的攻击事件:
2014年2月,当时全球最大的比特币交易平台Mt.Gox出现巨额比特币盗窃事件,轰动一时。由于被窃取的比特币数量高达85万枚,市价约为4.8亿美元,使得Mt.Gox负债激增,最终陷入破产。受此重大利空影响,比特币价格短期下滑近40%。
2015年1月,欧洲比特币交易平台Bitstamp由于部分操作钱包出现泄漏,导致近19,000枚比特币被盗。按照当时比特币270美元一枚计价,损失约500万美元。
2016年8月,数字货币交易平台Bitfinex遭遇黑客攻击,近12万枚比特币被盗,损失高达7000万美元。受此事件影响,比特币当日跌幅一度超过20%。
2017年4月,韩国数字货币交易所Youbit首遭黑客入侵,丢失了约4000枚比特币。同年12月19日,该交易所再次发生黑客盗窃事件,损失了近17%的总资产。尽管Youbit并未透露涉及资产总额,但该交易所不堪重负,已经宣布破产,用户现金资产和数字资产结算将按照所有破产程序进行。
2018年1月,日本最大比特币交易所之一的Coincheck遭遇史上最大的数字货币被盗事件。根据声明,此次被盗新经币(NEM)总数达5.23亿个,涉及用户约26万个。按照全额补偿价格计算,补偿金额总计达463亿日元,约合4.26亿美元。由于损失过大,这一突发事件导致当天数字货币整体行情下挫10。
所以,安全业界有人提出:所有不顾安全大谈区块链的都是耍流氓。
玩区块链,该如何防范安全风险?
数字货币被盗和交易所安全事件发生的如此频繁,以至于成为公众质疑其底层技术区块链安全性的理由。那么,让我们来盘点一下区块链技术可能存在的区块链安全风险。
钱包风险
所有主流数字货币都有对应的数字资产管理工具——钱包。以比特币为例,目前支持比特币的主流钱包就有数十种,而且还分「软件和硬件」、「在线和离线」、「PC端和移动端」等形态。
由于历史数据、网络同步和使用不便等问题,个人运行和维护庞大的比特币客户端来管理资产非常笨重,也不现实。越来越多的数字货币资产管理厂商开发了钱包应用或硬件。
这个世界上,总有一些人因为运气不佳或其它因素导致忘记了初始密钥或丢失了硬盘,导致数字资产从网络上永久消失。这样的案例很多,近来的新闻或段子里也常常看到。
同样,这个世界上也总有那么一些人因为粗心大意,导致钱包密钥文件泄露,让自己损失惨重。在 Twitter 上,曾有人演示使用AWS S3资源扫描工具,发现了多个比特币钱包密钥文件wallet.dat,并且可以公开下载!任何人下载该文件将其导入到比特币客户端,都可以对加密数字资产进行转账操作!
所以切记,财不外露,wallet.dat文件更不能外露!
主流的交易所或钱包管理软件,都提供复制或扫码方式获取收款地址,但如果电脑终端被植入了木马,那么拷贝或执行转账的过程中,收款地址也存在被替换的风险。
除了「密语」、密钥和钱包地址等安全问题外,钱包App本身也存在较大的风险。在使用数字货币钱包时,应选择官方推荐的钱包软件,坚决不使用不明厂商开发或社交网络中来源不明的钱包软件。
挖矿风险
除了购买比特币,获取比特币最基本的方式是运行比特币客户端记账软件,成为网络区块链网络中的一个节点。通过参与区块链网络计算,维护全网数据,从而获得比特币奖励——俗称「挖矿」。当然,以现在比特币全网的挖矿难度,普通个人电脑是无法通过挖矿获得收益的。即便是专业的矿机也需要数月才能回本,更不要说中间还需要付出高昂的电费成本。
为此,互联网上诞生了「矿池」。个人用户在挖矿过程中将挖矿客户端连接到更大的矿池服务器。与其他个人矿工抱团挖掘比特币。当大矿池挖掘到比特币时,按照算力贡献对不同的客户端进行获利分成。绝大多数矿池会提供用户专用的挖矿软件和钱包地址。
以门罗币(XMR)挖矿程序为例,个人矿机使用者在客户端运行如下程序:
待执行完程序后,挖矿程序加入矿池mro.example.org进行挖矿。如果挖到门罗币,矿池将进行门罗币奖励,直接发放到地址YOUR_WALLET_ADDRESS。
以下是主流的比特币挖矿行业形态:
个人购买实体矿机(奖励分成):连接→矿池(基于算力奖励)→区块链网络;
个人购买合约矿机(奖励分成):投资→云挖矿公司(统一负责矿机)→区块链网络
通过简单的分析可知,挖矿产业形态存在如下风险:
矿池服务器域名被劫持,客户端加入了假的矿池进行挖矿;
如果挖矿服务器中病毒,挖矿过程中钱包地址会被替换;
挖矿软件本身异常,偷换钱包地址;
矿池服务器被黑,导致挖矿所得加密货币被转移。
如今,越来越多的黑客也开始将攻击目标锁定在矿池服务器。类似「挖矿平台被黑客入侵:价值4.6亿比特币被盗」这样的新闻,屡见不鲜。
那么,如何避免挖矿风险呢?我的建议是,挖矿软件容易被绑定病毒,用于盗窃虚拟币钱包,请务必从官方可靠渠道下载软件,使用专门的挖矿电脑,不要在上面放重要信息(特别是虚拟币钱包)。另外,矿池有倒闭和跑路的风险,请务必尽最快的速度将矿池挖矿所得转移出来。
单靠个人电脑无法挖掘更多的数字货币,只有利用无限的互联网资源才能创造更多的价值。所以从2017年开始,结合挖矿的黑客软件和木马病毒正一步一步向企业网络中渗透。被成功入侵的服务器会24小时不间断为黑客挖矿。那些安全措施不足,防御手段欠佳的企业,他们的服务器安全将遭受更大的挑战,一旦防御失败,将彻底沦为替黑客谋财的矿工。
曾经遇到过某企业服务器每到半夜都会满负荷运行,所有的资源都被耗尽,但是运维人员一旦登录服务器,系统又都恢复正常。经过多次调查,最终发现该服务器被植入了黑客木马程序,用于门罗币挖矿。
虽然企业信息并没有被泄露,但原本用于业务的计算资源被挖矿软件占用,这本身就是一种浪费和损失。如今,黑客进入你的系统再也不是搞破坏和做炫耀了,而是用服务器去挖矿,让服务器做成摇钱树。他们甚至还会帮你「优化」服务器,提升计算能力,榨干你的最后一个计算单元!
代码实现上的安全
好的设计架构可以提高系统的安全性,但架构要实现必须要通过代码。在软件实现的过程中没有做到严格的编码安全,仍然存在风险和漏洞。相对于面向全网公开的比特币核心代码,钱包类App软件、交易所网站代码等更容易出现应用安全漏洞。如果不能及时识别和修复安全漏洞,最终将导致用户资产被黑客攻击窃取。
诸如交易所风控治理、钓鱼、社会工程学欺诈勒索等我们认为的「传统安全问题」,在区块链技术和应用中也会不可避免的遇到。
区块链自身风险
计算网络的安全性
由于区块链的「去中心化」特性,因此不用担心针对单点的网络拒绝服务攻击。但短时间内大量的超小额(如:0.0001BTC)垃圾交易会迅速填满区块,使得其它转账信息无法及时确认,并最终导致整个区块链网络转账延迟。
「51%算力」问题
基于算力证明进行维护的比特币网络,一直以来有一个重大的理论风险:如果有人掌握了巨大的计算资源(超过全网过半的算力),他就可以通过强大的算力篡改区块链上的账本,从而控制整个共识网络,这也被称为「51%攻击」。
虽然这种攻击发生的可能性不是很大(掌握这种算力的人本身就可以通过挖矿获得巨大受益,再去冒险篡改账本很容易暴露自身),但理论上:一旦这种攻击被发现,比特币网络其他终端可以联合起来对已知的区块链进行硬分叉,全体否认非法的交易。
以太坊就安全了?目前已知的安全问题
以太坊(Ethereum)是一个开源的有智能合约功能的公共区块链平台。区块链上的所有用户都可以看到基于区块链的智能合约。但是,这会导致包括安全漏洞在内的所有漏洞都可见。
如果智能合约开发者疏忽或测试不充分,而造成智能合约的代码有漏洞的话,就非常容易被黑客利用并攻击。并且越是功能强大的智能合约,就越是逻辑复杂,也越容易出现逻辑上的漏洞。同时,智能合约语言Solidity自身与合约设计都可能存在漏洞。
大家也许还记得,2016年6月17日发生了在区块链历史上最沉重的一次攻击事件之一。由于以太坊的智能合约存在着重大缺陷,区块链业界最大的众筹项目TheDAO(被攻击前拥有1亿美元左右的资产)遭到攻击,导致300多万以太币资产被分离出TheDAO的资产池。
2017年7月21日,智能合约编码公司Parity放出警告,称1.5版本及之后的钱包软件存在漏洞,据Etherscan.io的数据确认有价值3000万美元的15万以太币被盗。
2017年11月8日,以太坊Parity钱包再出现重大Bug,多重签名漏洞被黑客利用,导致上亿美元资产被冻结。
业界盘点的以太坊目前已知的安全漏洞如下:
鉴于以太坊的运行时间还不到3年,如上漏洞可能只是所有漏洞的冰山一角,为保证业务在区块链上安全可靠的运行,保护数字资产的安全,采用以太坊做为区块链技术方案时必须对智能合约代码进行充分测试。
最近有安全团队揭露以太坊「偷渡」漏洞导致的「全球黑客疯狂投币」,也值得大家予以重视和关注。
5招构建安全的智能合约
第一招,对可能的错误有所预判。
任何有意义的智能合约或多或少都存在错误。因此你的代码必须能够正确地处理出现的Bug和漏洞。比如始终保证以下规则:当智能合约出现错误时,可以停止合约(「断路开关」);预先考虑管理账户的资金风险(限制(转账)速率、最大(转账)额度);提供有效的途径来进行Bug修复和功能提升。
第二招,谨慎发布智能合约。
尽量在正式发布智能合约之前发现并修复可能的Bug。对智能合约进行彻底的测试,并在任何新的攻击手法被发现后及时进行测试(包括已经发布的合约);从Alpha版本在测试网上发布开始,便提供Bug赏金计划(类似互联网安全行业常见的SRC漏洞奖励);阶段性发布,每个阶段都提供足够的测试。
第三招,保持智能合约的简洁。
复杂会增加出错的风险。简介是指:
确保智能合约逻辑简洁;
确保合约和函数模块化;
使用已被广泛使用的合约或工具(不要自己去写随机数生成器);
条件允许的话,清晰明了比性能更重要;
只在你系统的去中心化部分使用区块链。
第四招,保持更新。
在任何新的漏洞被发现时检查你的智能合约;
尽可能快地将使用到的库或工具更新到最新;
关注并主动尝试最新的安全技术。
第五招,清楚区块链的特性。
特别小心针对外部合约的调用,因为你可能执行的是一段恶意代码,然后更改控制流程;
清楚你的Public Function是公开的,这意味着它可以被恶意调用;
清楚Gas的花费和区块的Gas Limit。
区块链技术和应用的发展给安全行业带来很大的创新机遇和机会,同时也带来极为严峻的挑战。
在涉足区块链的时候,一定要记得文章开头的那句话:
不顾安全大谈区块链都是「耍流氓」;以安全的名义去鼓吹区块链,却没有实质的行动,则属厚颜无耻!
CSDN区块链大本营招采编2名:
1. 对区块链技术有一定的理解,对大公司动态有极强敏感性,且有深度剖析的楞劲儿。
2. 出稿速度快,具有每天报题和出稿的能力。
3. 有能力采访行业高端人物,能将其观点进行深刻呈现。
4. 相关媒体经验2年以上。
5. 英语6级以上,能快速编译。
6. 本科以上
待遇:
绝不低于行业水平,只要有才,我们愿意给你一切资源
邮件发送:[email protected]
邮件注明:姓名+区块链+采编应聘