• 摘要:有人把区块链分为强调技术属性的“链圈”,还有强调金融属性的“币圈”。

    各位朋友,下午好,我是北京链安COO王延巍,很高兴在这里与大家分享我关于区块链安全的一些看法。

    我个人是从2006年开始从事移动互联网方面的安全工作,此后还从事过一段时间的海外投资工作,主要作美国市场的ETF,今年还在中信出了一本相关书籍。有人把区块链分为强调技术属性的“链圈”,还有强调金融属性的“币圈”,我算是过去的经历都有涉及,今天也是结合起来向大家介绍一些区块链安全的东西。

    说到区块链安全,从用户体验角度与传统安全最大的区别,我觉得就是给用户带来的直接经济损失更大,特别在过去一年多的时间,大家对区块链的主要接触方式还是Token,是币,就更是这样,每一起安全事故都是直接的经济损失。

    比如传统安全上,一个服务的服务器被拖库了,也就是数据库被黑客取走了,对于用户来说感觉也有紧张,数据被盗啊,但是这种危害并不直接,更不会影响你使用服务。但是如果一个交易所被攻击,一段合约代码的漏洞被利用,那就不得了了,用户的Token被盗或者归零都是直接的经济损失。

    2018年,一个统计口径来看,以事件发生时的经济损失折算法币来看,全球区块链行业安全方面的经济损失超过了35亿美元,Token被盗相关的安全问题损失就达15亿美元,请注意这些损失不像一些传统安全事件是影响方面的估算,也不光是厂商损失,大部分就是我们个人用户直接的损失。

    所以,区块链安全问题的特点就是痛感很强,大家本来担心“跑路”、“收割”这样的“安全问题”就够头疼了,这一般用户更防不胜防的技术安全问题更是让人猝不及防。

    2018年的区块链安全问题也有其规律特点,比如交易所安全问题贯穿始终,事实上对线上服务的攻击是一种传统安全问题。为什么黑客盯着交易所搞,原因很简单:币在那里,区块链尽管强调去中心化,但是在币圈大家还是围绕中心化的交易所交易,币集中于此,黑客自然要把这里作为主战场。

    同时,特别在早期,交易所间还缺乏协同机制,所以一个交易所被盗币,马上可以通过区块链匿名的特点“洗钱”去其它交易所销账变现,甚至走OTC的方式,难以追回损失。

    另一方面,在2017年到2018年初疯狂的行情下,万所大战,大家都赶着上个交易所去赶风口,投资者关心的也是新的交易所糖果“甜不甜“,有没有啥好处。安全?这个时候谁重视安全??甚至带着漏洞的交易所代码在业内传播,很多交易所几乎就是裸奔,所以一段时间黑客攻陷交易所如砍瓜切菜一般容易,攻不攻主要看黑客们的“性价比”评估。

    当然,现在情况有所改观,大型交易所越来越重视安全,而流量也在向头部交易所聚集。同时,交易所间的协同机制也在提高,一些安全事件发生后,我们也看到很多交易所也及时去冻结一些涉及销账的账户。像去年年末的日本交易所Zaif被盗后,就马上形成了一个行业反应机制,包括被盗Token的流向,其它交易所的跟进都很迅速。

    我们判断,未来交易所的安全重点还是传统的安全反渗透、漏洞检测等技术方案,以及整个行业的机制上的配合。北京链安在这方面也在做些工作,比如在溯源上,就正在做一些研究,后面也会有相关内容向大家汇报。

    而在更纯粹的区块链安全上,到2018年上半年,其实从2017年开始,一个热点就是基于以太坊的智能合约安全,其中的关键问题又是整型,或者说整数溢出的安全问题。这很有意思,写代码的朋友都知道,检查溢出是一个基本的边界条件和异常检查工作,在币圈,竟然因为这样的基础问题引发了一系列现象级安全事件。

    比如美链事件,大家应该都非常熟悉了,就因为一步运算没做可以防止溢出的安全运算引发整型溢出问题并被攻击者利用生成大量Token去交易所抛售引发币价暴跌。我们知道美链当年上市后,是曾经暴涨40倍的项目,接着暴跌,再这么来一下瞬间价值归零,真的是一行代码毁所有。

    但是大家可能也发现了,去年下半年开始,这类安全问题很少听到了,为什么?其实和交易所类似,一度蜂拥去以太坊上部署合约的都图什么,大家都懂的。而且你会发现大家的合约除了Token名称之类属性调整了下,几乎一样,都是围绕啥transfer之类的方法打转转,说白了,代码上大家都是在相互“借鉴”。

    但是早期,很多人“借鉴”的代码本身是有瑕疵的,就好像我们抄作业,结果炒个错的,还接着互相抄,结果很多合约都会带上这样的问题,这就方便黑客了。只是黑客也要评估价值,费劲利用你溢出问题没收益的事儿他们也不做,所以真正被攻击的也只是部分合约。

    但是随着相关安全问题不断暴露,甚至爆雷,后来的开发者也更加注意,大家“借鉴”代码时也会更加小心,所以慢慢的这个行业在这方面的安全问题也慢慢少了。当然,从安全性考虑,我们还是建议开发方要选择安全公司进行安全审计,同时用户也最好选择上币强制安全审计的交易所交易上面的Token。

    但是,安全问题从来不会停,到了2018年下半年,新的安全问题发生了,那就是EOS。我们知道,EOS上现在最流行博彩应用,这里我们不去做道德上的判断,只说现实是这样,而巧的是,也正是这类应用暴露了EOS的天然设计问题,所以安全问题频频爆发。

    博彩其实就是讲究一个概率,而制造概率就需要用到随机数,现实生活中我们制造随机数我们可以扔骰子,或者轮盘啥的,但是在计算机的世界就是用程序实现。但是计算机又讲求逻辑,不能像人一样随意扔,所以通常采用的是“伪随机”,需要一些“种子”数来随机,比如当前的时间。但是以太坊和EOS都不支持随机数的直接生成,这是为什么?

    假设合约里可以生成随机数,那么该合约执行结果就是完全具备随机可能了,其他节点完全无法直接验证该执行结果是否合法。不诚实的节点直接可以自行随便指定一个数字,或者不停重新计算,直到该节点得到一个对自己有利的数字,再打包到区块中。因为字节码在不同的节点的虚拟机验证执行过程上,得到的随机数都是不同的,虚拟机完全无法的确定该结果是否合法。

    在官方不提供直接获取随机数背景下,公链上的开发者自行根据公链上能取到的各种变量,自行开发伪随机数生成器(pseudo-random number generator),简称 PRNG。有漏洞的PRNG就为以后的安全问题埋下了隐患。所以在博彩类DApp中,这类问题目前还很难从随机数产生机制上完全杜绝,关于这方面,更专业的内容大家可以看看我们的安全专家Hardman此前的分析:https://mp.weixin.qq.com/s/1aFPE6_yUhrv54M5qQTDig

    好了,我们做个阶段性总结,回顾2018年,我们常听到的,数额常常特别巨大的安全事件发生于交易所被黑;一度喧嚣一时但是目前渐渐沉寂的是智能合约整型溢出的安全问题;而最具争议和话题性的是近期火爆的EOS博彩DApp安全问题。那么接下来呢?或者还有什么用户场景下的安全问题还需注意?

    在我们看来,手机C端安全将是非常值得大家关注的安全隐患之地。提到C端,前端时间有篇文章《区块链没有C端》,从区块链技术角度来看,有道理,因为在我看来区块链作为底层技术,特别在互联网、实体经济接下来的应用中,它确实会最早用于不是用户直接可以感知的领域。

    比如区块链发票,其实对我们来说就是个电子发票,区块链技术带来的种种好处在后台,我们本身感知不到,但是以后如果它普及起来,当你以后报销,电子发票还要打印这步省去后,实际上就在享受区块链给C端的好处。

    但是毕竟区块链的特点在一些用户场景下会带来C端用户使用习惯上的特点,以及用户体验的变化,比如安全问题,前面说了,区块链很多安全问题就是传统安全问题,但是因为区块链在币圈金融属性的特点,痛点不一样,就构成了区块链独特的安全问题。

    那么作为用户,我们作为C,也不是直接自己架个节点去参与区块链吧,也是通过浏览器、手机App接触区块链场景,币圈更是大量这样的场景,而在这个过程中,手机App无疑是重要的一环,而这个过程中,很多安全意识还是用户缺乏的。

    我们举一个最近的例子,12月27日,钱包Electrum遭到黑客攻击,其用户累计近250个比特币被盗,过程是怎样的?

    Electrum是一个轻钱包,该轻钱包加入了一些新特性,如服务器使用SSL进行身份验证来防止MITM攻击。所以跟其他的比特币轻钱包不同,Electrum无法与不同版本的比特币全节点进行直接通讯,每次启动会连接到其自有服务器(electrum server)进行通讯,而这服务器之间通过p2p进行通讯。

    而用户是可以自己搭建electrum server的,所以本次事件中,黑客预先在P2P网络埋伏了大量的electrum server。由于平时在线的electrum server并不多,所以黑客假设的electrum server在其中的比例可不少,网络中也就大量混入了黑客的有害节点

    用户使用钱包转账时,当手续费不足或者缺少输入的时候,钱包会弹error框给用户。黑客正是利用了这个弹框,当electrum轻钱包用户连接到黑客的malicous节点,malicous节点便会拒绝帮用户广播转账消息,然后返回自定义的错误消息,即提示用户去一个黑客设定的假冒的“更新”地址下载伪造的钱包。

    接下来的过程我们可以想见了,用户使用被篡改的钱包,隐私信息泄露,被盗币,这其实是一个典型的钓鱼式攻击,只不过与常见的网站钓鱼相比,多了一步,结合特别场景,更加隐蔽,具体过程有兴趣的朋友可以在这里进一步了解:https://mp.weixin.qq.com/s/D5xklPA9V4ObwpFvUkKLdA

    以上过程的钱包主要是一款PC端钱包,但是在手机端,特别安卓手机,同样有类似问题。由于安卓系统是一个开源平台,所以其应用文件的格式也是开源的,这就造成了这样开放体系下的应用很容易被篡改。如果一个安卓系统的 App没有做安全保护措施,就可以被黑客利用开源的工具方法进行反编译,从而获得成源代码,然后对部分代码或者业务环节进行篡改,再编译打包成盗版的App。这个盗版的App如果被发布到各类应用市场,或者社区等渠道上,很难和正版的App区分开。


    图1

    如图所示,某区块链App将用户交易数据的加密秘钥明文存储在了代码中,这样就很容易被黑客重新打包进行篡改,截获明文交易信息。

    去年8月, Android平台被捕获到了一类电子货币木马“剪贴板幽灵”。该木马通过不断监控用户手机剪贴板中的内容,来判断是否是电子货币的钱包地址,如果是钱包地址,则替换成从云服务得到的攻击者的钱包地址,实施盗窃。当用户把复制的钱包地址粘贴到转账地址栏的时候,原先的钱包地址已经被木马替换成了攻击者的钱包地址,造成用户的财产损失。

    曾有一款名为PickBitPocket的木马,伪装成比特币钱包应用,且成功在Google Play应用商店上架。在引诱用户下载后,不法分子就会将用户付款地址替换成自己的比特币地址,以此来盗取用户账户下的比特币。此后,类似案例又出现了多次,而在商店以外的APK下载渠道,这类安全问题更是防不胜防。

    那么怎么应对这样的安全问题,我们从两个层面来说,首先是开发者,这需要开发者开发区块链相关App的时候,本身有安全意识,特别在一些涉及密码、密钥、助记词、交易的环节进行专门安全防护和异常判断处理。

    在这方面,北京链安也有相应的技术方案,比如我们提供针对区块链开发者的安全SDK,你无需进行额外的安全模块开发,直接嵌入这个SDK就可以了,里面会有很多安全功能接口,比如:

    App篡改保护、调试保护,系统漏洞检测,虚拟环境保护,监听保护,网络传输保护;另外还提供了一些安全相关功能,比如高强度的加密解密接口,兼顾了加解密的强度和性能,开发者需要加解密的时候调用就可以了。

    对于个人用户,我们首先建议各位通过官方或者正规途径下载App,起码可以避免你被山寨App侵害。当然,不同App的安全能力可能不同,所以我们提供了一个方案是一个区块链安全App:链安助手


    图2

    它在启动时就可以扫描你手机的安全运行环境,发现一次基本的安全问题就会马上提示你注意在这些问题排除前谨慎使用区块链方面的应用,特别是钱包、交易所这样的App。


    图3

    接着,你就可以在我们的链安助手内启动你的区块链App了,请注意这个启动可不是简单的把你的App调起来运行就完了,它实际上是将你的App在链安助手打造的安全沙箱内启动,那么这里就涉及一个问题了,什么叫沙箱。

    沙箱,英文是sandbox,又被称为沙盒,其实广义上讲是一个概念,我们都听说过沙盒游戏对吧,在金融监管上也常提打造监管沙箱。那么在安全技术领域,它指的是在你的手机构造了一个运行环境,这个环境下App可以正常运行,同时隔离了外界的安全隐患,给你的App加了一层“金钟罩”。

    目前,我们的链安助手的沙箱功能已经兼容支持很多区块链应用,我们也在不断提高,力争支持市面上主流的App,我也欢迎更多厂商加入链安助手安全圈,更多用户使用它来构造安全的区块链运行环境。

    总之,区块链安全问题值得大家重视,特别在我们所说的“币圈”,但是大家也不必对此恐慌,只要平时注意树立安全意识,通过官方渠道使用主流产品,配合一些安全工具的使用,还是可以有效防范安全问题的。

    同时,区块链行业安全问题的解决,根本也确实在市场参与的服务提供厂商,北京链安也希望在这方面为行业井上一份力量。

    好了,今天我的分享也到这里了,我主要介绍了区块链上过去一年的安全问题趋势,以及C端安全隐患,还有我们北京链安对安全问题的看法和方案,希望对大家有所帮助,也期待我们对客户和用户提供更多帮助,大家可以去我们的官网:http://www.chainsguard.com/ 了解我们,体验我们的服务和产品,谢谢大家,谢谢各位宝贵的时间。

    文章来源:Hubox

    原始标题:Hubox大咖开讲 第六期

    原始作者:Hubox

    声明:本内容系陨石财经编辑转载,版权归原作者所有,转载目的在于传递更多信息,并不代表陨石财经赞同其观点和对其真实性负责。如涉及作品内容、版权和其他问题,请在30日内与陨石财经联系,我们将第一时间删除内容。

提交成功!

提交失败