揭密IOTA主网暂停、bZx与SIM被黑背后玄机,做到这些可提高账户安全
算力说: 全球疫情危机,分布式办公,仅2月份以来,已经发生多起交易所、主流公链与热门DeFi项目bZx甚至个人的数字资产被盗。在数字资产领域,安全是一个永恒的话题。本期算力大学请来区块链安全专家,慢雾科技创始人余弦,分享数字资产安全保护的重点。余弦从私钥的使用、项目安全的判断、硬件钱包的选择等角度解读了如何保护数字资产的安全,其表示,从私钥和钱包等管理上,都有非常多的细节会产生漏洞。
我们这次讲的是一些交易所、公链、钱包和个人的安全事件,更重要的是之后我们如何更好地保护自己。我们希望这个分享能够让大家知道可能的威胁会发生在哪。有可能我们现在参与这个直播的听众,不仅是个人,也有一些交易所,或者说承包甚至做供应链的,希望也能够通过我的这个分享得到一些启发。
1 私钥、钱包、SIM卡被黑,近期安全事件暴露出的安全漏洞
先脱敏谈一下最近一个月披露出来的一些安全事件。
第一个是意大利的加密货币交易所Altsbit被黑, 虽然说金额比较小,而且是一家比较新的交易所,但是这家交易所本来资金量就比较少,盗取的资金量其实占了他们大概有一半左右,所以他们宣布倒闭。
第二个是IOTA,我们注意到这个事件主要是因为IOTA因为此次事件整个主网暂停了。
大家可以想象一下,一条很知名的公链,它能够把主网暂停,是什么会导致他们去做这种事情?
这个影响在我们看来是一个非常深远的事件,但是这个事件在国内除了像我们有主动去跟进,并且把它给披露出来,并在推特上跟官方以及社区里面的相关的一些人有相关的互动以外,基本上也没有看到其他的安全团队去应急这个事情。
当时我们发现了它被黑的原因是因为官方钱包发布了新版本,内置了一个交易模块,等于钱包内有一个交易所的功能。
这样的一个钱包,它的桌面版本使用的是一个非常知名的JavaScript的开发框架。他进入第三方也是通过JavaScript的一个远程调用的方式嵌入的。这样的话会导致一个问题,如果第三方他被劫持或者说他被黑了,JavaScript的内容被改了之后,是可以直接影响IOTA的钱包,因为它的整个的运行环境都是JavaScript。
所以说基本上可以认为第三方出问题了,用户只要打开这个钱包,并联上网,你的私钥,你的密码以及你可能操作的一些相关的信息,都是有能力对这个恶意的JavaScript代码给获取。这个是一个非常真实的攻击案例。我们也输出了中文跟英文的研究报告。
接着是bZx,bZx是一个DeFi项目,其实在它被黑之前,我们听的都非常少,毕竟在国内也不是宣传的特别多,用的人也是比较少。我们是因为它被黑了一次之后,接着又被黑了第二次,我们才非常去在意它为什么会被黑?
其实根本的原因在于整个经济模型,风控上是有缺陷的。 包括这些协议上的一些资金的互相流动等等在我们看来是一个系统内跟系统外整体的一个经济模型上的风控缺陷。所以这个事情在我们在理解上,它不是一个非常传统的,比如说像之前智能合约出现的像一出漏洞,或者说一些权限过大,越权等等这样的一个非常简单的漏洞。
这次的波动是一个整个经济模型上系统内跟系统外结合起来才能够出现的一个攻击事件。在他们被攻击之前,其实已经有其他的团队给他们提醒过,可能会有这样的问题。但是这些做地下黑客的,比较奉行的一个执行法则就是干起来。就是你要做出来,让人看到,你要真的能做到,而不是说它可能会有什么样的问题。
当然这样一个提前预警也是好的,只是说很多时候官方他们会觉得他们非常熟悉,智能合约,非常熟悉DeFi的世界,反而过于骄傲。真的被干起来之后,所有人才知道原来这种理论上的风险,却会真实发生。这个是bZx给我们带来的一个启示。
它在我们看来是一个去中心化这个标签的代表。但是,无论去中心化还是中心化,都有相关风险。
最近一次的话,大家印象应该是非常深刻的,就是前几天周末的时候,这个叫Josh Jones。我们也做了相关的推测。当时他是在Reddit上说他被盗了,大概是1500多枚比特币,还有近6万枚的BCH。 他说是他的SIM卡被黑 ,SIM卡是手机里面非常重要的一个模块,如果SIM卡被黑掉,比如说我的SIM卡被黑客做了一个复制,等于拥有我这个手机号了,可以接收到任何信息,比如说相关平台的验证码就可以直接导致我在这个平台上的这些资金的风险会受到影响。
为什么他说SIM卡被黑我们会比较相信,是因为在去年的时候,Coinbase交易所的用户有好些个都是因为SIM卡被黑,导致他们在Coinbase上的资金被盗,这个在我们看来可以归结为同一类的风险,就是第三方。
其实跟之前说的IOTA的感觉非常像,IOTA是因为钱包嵌入了第三方的交易所的组建导致被黑的。 这个和Coinbase和Josh Jones被黑都是因为第三方 。
SIM卡攻击手法,其实是挺流行的,但是在国内大家可以不用太担心,因为国内已经度过了早期运营商各种混乱, 甚至运营商内部做恶这些情况,包括我们相关的一些法律以及监管,大家的手机号不会轻易被别人给复制。
放在我们国家大概10年前,这个现象还是挺普遍的。但是在国外运营商的实力,不一定有我们国内的这么强,大家都都知道我们国家基建的水平是非常强的。而很多海外运营商属于私人企业在运作,技术实力等等都不一定那么高,包括相关的一些内部协议,可能都是很古老的版本,以及风控管理上可能都比较落后,确实会存在海外的手机号被社会工程学等方式复制。
这个我们是会去提醒, 如果是海外的用户,除了用手机号作为双因素之外,最好还用像谷歌身份认证器这类二次认证的APP,或者一些硬件级解决方案。
以上是最近这一个月公开披露的一些事,其实还有很多未公开的。
如何管理你的私钥?
最近一个月我们看到很多的问题,其实内外都会有。比如说内部大家都知道,私钥即身份。私钥里面有非常重要的资产,这里面涉及到三个关键点, 从私钥的生成到存储以及使用这三个环节,如果有任何一个环节没有警惕,就有可能随着时间的推移,当某些风险暴露出来的时候,想往回或者说去调查,这个的可能性都是非常低的。
我们一般提到私钥的话,还会提到像多签,包括现在很流行的一个算法叫做安全多方计算,但是在早期的时候,其实很多人他们管理一些重资产的需要的时候,尤其是有一些币种,他对多签的支持上,并不是让人觉得非常的放心。
比如以太坊,大家都知道以太坊的流行的多签方案是通过智能合约来实现的。但是多签的智能合约历史上也是出过安全问题,不能百分之百去相信通过链上智能合约的方式达到多签绝对安全这个目的。
即使不通过智能合约,我在协议集上,在链下去做多签的生成,也不能保证是绝对的安全。但是这里面我们会更加的放心。原因是这样的方式在历史上已经经过无数次的校验,如果出问题的话,基本上大家可以认为整个公链或者说这些知名的公链的基础设施出现非常非常大的问题。这个时候就不是某些个案了,绝对是一个非常大范围的事件。
所以从概率以及从相关的代码审计上,包括使用频率上,很多人会比较喜欢类似于BTC这样的原生透明的解决方案,而不是由第三方写出来的多签智能合约,虽然这些智能合约也通过了安全审计,但是我们对智能合约以及智能合约底层的虚拟机,本身我们就不是很信任。
所以在早期,有很多人的私钥生成是属于非常石器时代的方式。 说当私钥生成之后,比如说私钥或者说助记词,通过多份的抄送、抄写,就是有多人掌管。这几个人刚开始可能会非常互相信任,比如说三个人,任意两个人拿到私钥,或者说助记词的片段,他们就能够组成一个完整的私钥。
但这里面第一个问题,就是生成私钥的时候,由谁来做的?他做的这个环境是否是安全的?他说他做完之后把它给删了,删除的这些数据,这些东西是有一定的办法能够恢复的。这里面没有解决第一步的时候的可信问题,会埋下一个值得质疑或者说怀疑的种子。这些问题由于早期,想调查清楚是非常难的。
接着是存储,怎么把私钥放在一个安全的地方。
另外一个是使用,你最终还是要使用,你要把这些币打出去,或者说你要转移等等。你只要用,你无论直接还是间接,你都会有联网的可能性,或者说你当时的操作环境是否安全?
最近几个内部的案例,其实很多都是围绕私钥的,刚才说的私钥在区块链层面上非常核心,也是非常基础,非常底层的一个东西。
在整个系统层面,比如交易所或者钱包,要跑起来,有各种业务模块,比如币币交易、法币交易、钱包间的跨转、充值、体现等等。包括现在的一些新玩法,比如合约交易、杠杆以及你可能会有资金托管,你可能用的是第三方。
我们看待安全问题的时候,当一个事物越往上层,越面向用户的时候,整个的安全的复杂度就放大了。所以我们也发现有不少被黑的,或者说被盗币的案例,是出现在比较上层的风控缺失,或者相关管理平台被黑掉。
很多人可能会觉得我的管理平台,黑客怎么能够看到?实际上你只要触网,你的电脑就有可能会因为被植入木马或者说病毒导致这些相关平台的权限可能被盗。
当我们做一个被黑事件或者说被盗币事件剖析的时候,我们的做法绝对是从上到下拆分很多层,很多模块,我们会采用最简单的方式,叫做排除法。每一块、每一块的排除,最终确定它的根源是在哪。
但这个过程实际上非常耗时,有最耗时的大概是耗时两个多月,我们才把真相给发现。当时我们整个团队知道真相的那一刻,眼泪都快掉下,瞬间觉得索然无味。
我们深刻知道任何事件,在我们看来就像是破案,需要用排除法把任何的可能性列出来,然后把它给逐一排除掉。 而且很多时候很多人的描述是有问题的,你要去推敲,他的记忆可能也是有问题的,甚至他可能是故意使坏,你都要去推敲。
在链上追踪的时候,最终有一个比较有意思点在于, 最终这些币他一定会兑换成法币出来,只是一个时间长短的问题。
我可能几年之后,等风波过了我再来兑也行,你最终会兑换成法币出来。我们发现的很多案例它是急于把它给兑换出来。
如果我们是地下黑客,无论通过怎样的手法,是通过这些交易所钱包的漏洞把币给盗了,还是说把各种用户钓鱼把他币给盗了,还是说通过勒索软件把你的服务器和你的电脑加密了,你必须支付我比特币或者门罗币等等。那无论怎么样,我盗了这些币,我会想办法把它给变现出来。
这里就涉及到你的币会到交易所里面去,进入交易所之前,现在越来越多职业的做法是会经过一个混币平台。这些混币平台的存在,对于其他的需要去洗币的人来说,是一种博弈。我在里面洗的这个资金,每一次我肯定不能多,这个不能多意味着我的速度就会慢,另外一个我可能会多找几家一起去洗,原因是如果你这家万一被搞了,我在你上面洗币的所有证据链都能查到,甚至你上面还会记录我的IP等等。
这些方式如果在一些超级力量面前,都不是特别有效。 所以大家可以看到洗币也是一门艺术,它不容易,动静越大,也有可能会被暴露。
最终你从混币出来之后,要进入到一些知名的交易所,因为他们有法币通道可以出来,这里又涉及到你在这个交易所上的身份、账号问题。职业的黑客是绝对不会拿自己的身份去注册这些交易所,他们的各种KYC,各种身份甚至视频识别,都可以是假的。
3 如何判断这个项目安不安全?
这也是我们说的这个第四点,需要核心成员,他们对安全的态度要坦然开放, 有问题那就承认错误,而不是仅仅喊喊口号。
比如我们看到有很多项目方,他们的官网上写,我的安全非常强、非常棒。甚至是宙斯级的,感觉各种名词形容词都会出来,当然这些口号实际上是没什么意义的。我们知道他的问题可能会出现在哪,因为我们是一个很专业的安全团队,对于那些专业地下黑客来说,他们当然也能够知道,他们是可以把你这个口号定成未来你打脸的重要的依据。
第五,对安全工作充满敬畏和尊重。 其实这个东西我觉得不仅是对安全,在这个行业内,无论做什么,整个产业链上上下下,中间环节每一个人都要充满敬畏,包括应有的尊重。
4 选择怎样的硬件钱包才安全?
最近我们也审了一些硬件钱包,做完这些硬件钱包的审计之后,我们做了一个总结,怎样的一个硬件钱包是安全且强大的。1. 支持的主流币种最好是要足够的多;
这也不是绝对的,我们只是为了从省心的角度去考虑,因为一个人的手上的硬件钱包,原则上不会超过两种,因为你太多了也不一定是个好事,而且真安全也不是说绝对的安全,真安全硬件钱包其实也非常少。
2. 硬件层面使用的相关硬件模组都是国际顶级标准且生产及发货供应链也是顶级;
做硬件钱包的很多的团队,对硬件的各种芯片、模组和元件等等,绝对不是完全的顶级、专业。这时候就得依赖于很多本身就是国际顶级的标准,哪怕你不会做,你要用好嘛。包括你选择的供应链,你的生产,包括你发货,都是要选择这些优质顶级的。