您的位置:首页 > 其它

区块链开源安全漏洞分析报告

2017-01-03 09:37 513 查看


区块链技术已经不容置疑的成为科技和金融领域炙手可热的新技术。今年 6
月,包括中国代表在内的来自 90
个国家的央行及监管机构代表齐聚华盛顿美联储总部,共同探讨区块链技术的发展和应用。全球对区块链的兴趣已经不再局限于某个机构内部,开始了大规模的协同探索。

但是继The Dao事件心有余悸之后不久前数字货币又发生被盗事件。以太坊和Augur早期投资者沈波的账户被黑客攻击,导致Poloniex的Augur市场REP价格从0.0035个比特币跌到0.0001个比特币。

区块链技术的安全是被关注的重点问题,一旦相关软件存在漏洞,将造成巨大的财产损失。为此,国家互联网金融安全技术专家委员会官网上最新发布了一则非常重要的报告——区块链开源软件源代码安全漏洞分析。

2016年10月,国家互联网应急中心聚焦区块链领域的知名开源软件,综合考虑用户数量、受关注程度以及更新频率等情况,选取了
25 款具有代表性的区块链软件,结合漏洞扫描工具和人工审计,进行了安全检测。从结果来看,开源区块链软件存在着不容忽视的严重安全风险。

报告指出,测试选取了 25
款具有代表性的区块链软件,包括Dogecoin、Ripple、Litecoin、Dash、Ethereum
Wallet等,结合漏洞扫描工具和人工审计,进行了安全检测。本次检测在代码层面发现高危安全漏洞和安全隐患共
746 个。由于这些软件多数与资产、货币交易相关,一旦出现漏洞,可能会导致财产损失的严重风险。

 

安全漏洞情况

报告中指出本次检测从这些项目的代码层面总计发现高危漏洞 746
个,中危漏洞 3497
个。图1展示了被测项目中检出的中高危安全漏洞情况,图中还用红色折线图展示了每千行包含漏洞数。从中可以看出,本次选取的区块链软件都存在不同程度的安全问题。



图1
区块链开源软件项目中高危漏洞情况
在所有被测软件中,总体而言安全风险相对较为严重的是区块链支付网络 Ripple,包含高危漏洞
223 个。 值得注意的是,该软件很可能是本次检测的区块链相关软件中名气最大、用户最多、使用最广的软件。 据悉,截至发稿,该软件所在公司已获得包括Google、埃森哲等在内共计
1 亿美元的投资, 同时一些大型银行已经宣布将加入其支付网络,其中包括渣打、西太银行、澳大利亚国家银行和上海华瑞银行等。 考虑到该软件直接处理金融资产,且拥有如此大规模的用户,一旦这些漏洞被黑客利用,将会造成不可估量的损失。

总体安全风险排名第二的是 Ethereumj
项目, 该项目是基于区块链的分布式应用平台 Ethereum
的 Java
实现。 检测表明,该项目包含高危漏洞 110
个,具有较高的安全风险。

在所有被测软件中,漏洞总数最多的是基于区块链的金融服务软件 BitShares, 其最新版本包含中高危漏洞高达
669 个,其中高危漏洞
4 个,中危漏洞
665 个; 虽然已经比早期版本(BitShares-0.x
包含高危漏洞 25
个,中危漏洞 1236
个)有了明显改善, 但仍然存在较大的安全风险。

从漏洞分布密度来看,区块链浏览器 Bitcoin Block Explorer
的漏洞密度最高。 其软件规模较小,仅有 984
行代码,但是平均每 11
行代码就存在一个高危漏洞。 需要说明的是,该软件 2015
年 9
月后就停止更新和运行了,目前其源代码主要被用作学习和参考。 为避免引入不必要的安全风险,关注该项目(Github star数量为
141)的开发者应知悉其代码中的可能存在的安全隐患。

 

高危安全漏洞分布

图2展示了被测项目中高危漏洞大类的分布情况。

数据表明,大多数漏洞为“输入验证与表示”类漏洞,该类漏洞主要是由于对用户输入未做充分验证导致的, 一旦攻击者构造恶意输入,可能造成任意命令执行、任意文件读取等严重安全问题。
“代码质量问题”类漏洞也出现较多,产生的主要原因是开发人员安全意识不足,代码编写不够规范, 此类漏洞会导致内存溢出、资源耗尽等安全隐患,严重情况下会导致系统运行异常、甚至系统崩溃。 由于区块链软件往往直接运行于金融领域等重要系统中,一旦系统崩溃将带来不能容忍的巨大损失。
“安全特性”类漏洞也占据了一定份额,这类漏洞主要涵盖身份认证、权限管理、密码管理等方面的问题, 攻击者可利用该类漏洞实现越权访问,窃取隐私信息等。



图2
被测项目中高危安全漏洞的分布情况(按大类划分)
图3进一步展示了被测项目中的各种具体的高危级别安全漏洞的分布情况。在被测的
25 个项目中, 最多的两类漏洞是不安全的
JNI(16.22%,121
个)和不安全的随机数(21.72%,162
个)。



图 3
被测项目中高危安全漏洞的分布情况(按具体漏洞划分)
对于区块链软件来说,加密功能是维护整个开放数据库(账本)安全的核心功能, “不安全的随机数”问题将严重降低软件抵御加密攻击的能力,导致如易于猜测的密码、可预测的加密密钥、
会话劫持攻击和 DNS 欺骗等严重漏洞。

 

安全漏洞总体分布

与高危漏洞相比,中低危漏洞在实际运行环境中的危害相对较小,
但仍能在一定程度上反映出项目的代码质量、开发人员对代码安全问题的重视程度等。
图4展示了被测项目中包括中低危漏洞在内的所有级别安全漏洞大类的分布情况。



图4
被测项目中的全部安全漏洞的分布情况(按大类划分)
与高危级别的漏洞分布情况相比,代码质量类问题所占比例大幅提升。
这类问题虽然不会导致直接的严重安全漏洞,但仍然存在着明显的安全隐患,一旦被利用,
也可能导致程序崩溃等严重风险。此外,项目还存在相当数量的 API 使用不当问题, 例如不安全的使用字符串处理函数、忽略特定
API 的返回值等。未按照约定使用
API, 可能导致程序运行发生意想不到的异常问题,从而影响程序逻辑正确性或者系统稳定性。

图5进一步展示了被测项目中的各种具体的安全漏洞的分布情况。 出现最多的两种漏洞分别是未使用的局部变量(13.94%,1181
个)、 不安全的字符串处理函数(13.20%,1118
个)。



图5
被测项目中的全部安全漏洞的分布情况(按具体安全漏洞划分)
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息