owasp区块链安全 TOP 2019

一、 高级可持续威胁
 
1. 风险描述
高级可持续威胁类问题往往出现在区块链领域的中心化团队上,比如:交易所、钱
包、矿池等。由于这些区块链团队在基础设施安全建设和安全运营上的欠缺,导致基础
设施存在安全漏洞,从而被攻击者利用,实施数字货币的盗窃或者破坏。
2. 危害描述
高级可持续威胁会导致区块链系统被入侵,权限被控制,最终导致资金被盗取,敏
感数据被泄露等系列严重问题。在 2008-2018 年间,就共有 37 起高级可持续威胁类
安全事件,导致的直接经济损失高达 16 亿美元,是区块链领域的第一大威胁。

 

案例 :

Mt.Gox 是区块链领域最著名的入侵事件之一。早在 2011 年 6 月,Mt. Gox 交易
所就遭到黑客攻击。据称,该公司的一名审计人员的电脑受到了攻击,黑客利用这台电
脑访问比特币交易所的内网,人为的将比特币的名义价值修改为 1 美分,然后从该交易
所的客户账户转移了大约2000枚比特币。2014年,Mt.Gox遭受了更严重的黑客攻击,
近 85 万的比特币被盗窃,攻击手法并没有被披露,但据 Mt.Gox 内部人员透露,其存
在内部组织不一致、程序安全性不佳、网站源代码泄露等严重的问题。甚至有黑客怀疑
他们是监守自盗,事后又渗透进去,可见安全性很差。这次的事件导致它们近 4.6 亿美
元的损失,并最终走向破产,CEO 也受到法律的制裁
 
二、 失控的币值通胀
 
1. 风险描述
比特币及其他区块链虚拟货币吸引大家的一个主要原因是其限定了铸币总数,从而
避免了法币通胀和持币者长期承受经济损失。但若铸币总数限制部分的程序设计和实现
有漏洞,则可能导致铸币总数失控,甚至超出设定发币总数多倍,致使币值失控通胀。
2. 危害描述
自区块链技术诞生以来,币值通胀类威胁导致了 10 亿多美元的直接经济损失,占
整个区块链安全事件经济损失的 29.55%,而其中智能合约层案件最为突出,单 BEC 的
币值通胀事件就损失了近 10 亿美元,直接导致了其价值归零。
 
案例
币值通胀类最典型的案例就是 BEC 安全事件。BEC 主要由于币值控制部分的代码
出现了整数溢出漏洞,导致出现无限铸币的情况。出现问题的代码如下图所示,红色框
中的_fee 与_value 参数分别代表转账费用和转账金额,这两个参数都可以由攻击者控
制。作者的本意是希望通过这行代码检查账户的余额是否足够支付转账金额和转账费用,
如果不够支付则退出函数不进行支付操作。但当_value 的值足够大(比如
_value=2^256-1),以至于_value+_fee 会产生上溢,_value+_fee 的值等于 0,这
样绕过了代码的检查,仍然会实施支付操作。而实际转账的 Transfer 函数不再检查余
额是否足够,以至于 value=2^256-1 时,Transfer(_from,_to,_value)也可以转账成功,
攻击者凭空获得大量的数字货币。
 
三、 失效的权限控制
 
1. 风险描述
由于权限控制在设计或编码过程中的疏忽和缺陷,导致本来应该限制使用范围的重
要函数或权限没有控制好范围,从而被攻击者调用这些重要函数或者使用权限实施攻击。
2. 危害描述
过去 7 年时间里,权限控制失效类问题导致的区块链安全事件共有 6 起,但导致的
直接经济损失达 2.02 亿美元。其中,最著名就是以太坊钱包 Parity 的库权限没有控制
好,被越权调用初始化函数,重置了钱包的所有者,导致了 1.68 亿美元的直接经济损
失。
 
四、 不安全的共识协议
 
1. 风险描述
共识协议由于存在某些设计之初未考虑到的漏洞,导致漏洞可能被攻击者识别和利
用,从而损害链上参与者的利益。
 
2. 危害描述
在总共 160 个安全案例中,有 15%(24 个)是共识机制漏洞导致的安全事件,远
高于本 Top 10 中其它类型的安全事件,可见这类漏洞是攻击者最为关注的。导致的直
接经济损失为 3823 万美元,与被攻击的区块链规模较小,使用范围较窄有关,往往处
于在虚拟或还没发展壮大的时候(比如:Krypton)或者是衰落的时候(比如:ETC)。
共识机制本身的健壮性受到了很大的影响,容易被攻击。
在共识类案例中,以 51%共识攻击最为常见。而不同类型的共识协议在面对 51%
攻击的抵抗力又有所差别,虽然 POW 和 POS 两种共识协议在规模较小时都容易被攻
击,但是 POW 类共识协议比 POS 类更容易被攻击,从攻击的角度来看,租用 51%算
力的成本往往比控制 51%权益的成本更低,更可控。
 
案例
Krypton 是一个基于以太坊的区块链,2016 年 8 月的时候被 51%攻击了,这次的
攻击分为两部分,一部分用至少 51%的算力回滚交易,以实现同一个币支付两次;另
一部分是用 DDOS 攻击网络中的多个节点。这次攻击者从 Nicehash 租用额外的哈希
能量,并且至少租用了 4 个矿池来实施攻击。我们由此可以看到,矿池的出现让算力实
现了中心化,同时这些算力资源还是可以被任意租用的,这也使得攻击门槛大为降低。
因此相比 POW 类共识协议,一般来说 POS 类共识协议更为安全。
 
五、 考虑不充分的程序逻辑

 

1. 风险描述
由于软件设计和编码的错误原因,存在没有考虑到的异常分支,导致程序逻辑可以
被攻击者利用,以至于陷入设计者未预期的流程,造成重大损失。
2. 危害描述
很多区块链安全研究者都把这类会导致重入的程序逻辑问题列为头号风险,主要还
是因为当年的 The DAO 事件(损失 6000 万美元)影响太大。不过,除了 2016 年的
The DAO 事件外,此后并没有发生其它有比较严重损失的案例,其它的 4 个案件总共
也只损失不到 7.14 万美元,这就是我们把这类事件只排在第 5 的原因。
 
六、 不严谨的业务策略
 
1. 风险描述
目前比较突出的一种业务策略类问题是利用高额的以太费用和技术手段让以太坊
堵塞,从而获得游戏中的大奖。但根据场景不一样,会有许多不一样的业务问题,这些
也都会对产品的公平性,乃至产品的生存造成重大影响,需要特别注意!
2. 危害描述
目前各类区块链游戏是人气比较高的,因为区块链的去中心,更有利的确保了游戏
规则公正公平,吸引了不少玩家。但如果业务策略设计有漏洞,就容易导致公平性丧失,
游戏奖励被特定的人利用漏洞来获得。2018 年共发生了 2 起业务策略漏洞类的安全事
件,共导致了 359 万美元的直接经济损失,都发生在 FOMO3D 上。
 
七、 校验不严格的交易逻辑
 
1. 风险描述
交易的校验逻辑不够严密,以致攻击者可以构造假的交易行为,但却被校验方验证
通过,误认为真的交易行为。或者提交了真的交易操作,但是通过时间差,黑名单等因
素,让交易操作产生回滚来实现,实际上的交易动作并没有完成,而商家仅验证是否有
交易行为的话,就可能导致资金上的损失。
2. 危害描述
这里问题通常包含两大类——假转账类问题和回滚类问题,截止 2019 年 1 月共发
生了 26 起,损失金额 233.72 万美元,大多数在于校验方的校验逻辑存在问题,从而
可以被攻击者绕过校验,以假的充值行为却获得真实的数字货币入账;或者通过时间差,
黑名单等因素让之前的交易操作回滚,从而欺骗商户获得商品。从古典互联网的安全案
例来看,这类漏洞很常见,也是容易造成大额经济损失的漏洞,预计在区块链领域也不
例外。
案例
北京时间 2018 12 19 日凌晨, EOS 网络中,包括 BetDice Royal Online
Vegas 在内的数个游戏 DApp 遭受黑客攻击,损失数十万枚 EOS 通证。 本次事件是
由于部分游戏 DApp 为增强游戏体验,自建节点运行 DApp ,游戏的奖励结算完全基于
本地 EOS 节点的交易记录。由于自建节点的交易存在回滚的可能,黑客就利用了 BP
自建节点的交易时间差完成了回滚攻击,无成本赢得奖励。
 
八、 脆弱的随机数机制
 
1. 风险描述
这里指的不仅仅是伪随机函数的问题,而是整个随机数生成机制不够安全,导致可
以被攻击者提前获取或猜测到随机数的结果,以实施攻击。
2. 危害描述
随机数问题也是近期比较常发的安全事件,特别是随着一些智能合约类游戏的爆发。
随机数作为游戏公平性的保证,一旦有漏洞就会导致游戏机制被破坏,就可以从中获利,
所以常常被各种攻击者盯上,以至于 2018-2019 年就发生了至少 15 起案件,包括 2018
年非常火热的 Last Winner 和 Fomo3D 项目,部分 DAPP 还因为安全事件而关闭。
虽然总的损失金额不大,只有 194 万美金,但跟这些游戏的规模都还不大有关系,黑
客在这些游戏早期就开始关注并开始攻击窃夺资金,以至于他们没有机会长大。另外,
攻击数量多也说明弱随机数攻击的门槛不高,以至于很多黑客都可以发起攻击,所以区
块链开发者需要特别注意弱随机数带来的安全风险。
 
九、 存在缺陷的激励机制
 
1. 风险描述
激励机制是区块链的重要环节,但若开发者设计的激励机制存在可以被利用的漏洞,
就可能会给开发者或用户带来损失。
2. 危害描述
激励机制跟报酬的多少直接相关,因此会被很多的攻击者盯上,带来不少的安全风
险,有漏洞的激励机制将会给团队带来巨大的经济损失。Eligius 矿池遭受的“块代扣
攻击”就让他损失了 120 万美元。攻击方利用了矿池激励机制的漏洞,参与分红,但
是不做贡献,挖到了矿就自己藏起来,给一起挖矿的矿工和矿池都带来了损害,长期来
看矿池的吸引力也会受到影响。
 
案例
2014 年的时候,Eligius 矿池遭受“块代扣攻击”,损失了 120 万美元。块代扣攻
击是指,一个恶意的矿工可以运行一个自己开发的挖矿软件,该怎么挖怎么挖,但是碰
到真正解的话就扣下不提交给矿池,因为从矿池方看来,他们似乎正在为矿池工作,并
继续得到分配的报酬,而实际上,并不是真正的为矿池做有益的贡献。对矿池和矿工来
说,在不同的激励机制下,他们受到的危害也不一样。如果矿池是按照工作量给钱的,
那么这种攻击不会伤害其他矿工,却会从矿池老板那里白领报酬。如果矿池是按比例分
账的,那么块代扣攻击就危害其他矿工的利益,因为他分酬劳而不做贡献。
由于 BTC 挖矿机制的设置,这种攻击并没有办法让攻击者独吞扣下的挖矿奖励,
因为他挖的是矿池指定的块,而这些块的奖励只能指向矿池。所以这类的攻击还不算多,
但我们在设计其它激励机制的时候一定好仔细考虑,以防出现可以被利用的漏洞,造成
重大损失。
 
十、 日志记录和监控不足
 
1. 风险描述
日志记录和监控的问题对区块链团队和公司来说非常很重要。如果没有足够的日志
记录和监控,被攻击的过程中,你会不知道,不能及时止损。发生安全事件后,你没有
办法调查,也没有办法改进以避免再犯同样的错误。所以日志记录和监控不足的问题也
很严重!
2. 危害描述
缺少日志和监控会让黑客攻击变得更肆无忌惮,因为你无法发现攻击行为,无法知
道是哪里存在安全漏洞,也就没有办法找到修复的方案,整体的安全风险处于失控的状
态。
3. 实际案例
比如前文提到的 Mt.Gox(案例 1-1)等安全事件,黑客的攻击路径和手法并没有
清晰的披露出来,若排除交易所本身不愿意披露这个因素外,更大的可能是交易所本身
并没有完善的日志记录和监控,以至于无法复盘整个攻击流程,无法确切的知道黑客攻
击行为的细节。
 
 

你可能感兴趣的:(区块链,网络安全)