2018年区块链智能合约安全审计白皮书_31页_3mb
报告摘要
区块链智能合约安全审计白皮书(2018年)总结
核心内容概述
本白皮书由区块链安全研究中心(由上海交通大学网络空间安全学院、中国信息通信研究院泰尔终端实验室、上海掌御信息科技有限公司联合成立)发布,旨在分析以太坊智能合约的安全漏洞类型及严重等级分布,并通过案例说明各类漏洞的危害性,以提高行业对智能合约安全问题的关注和防范意识。
白皮书基于区块链智能合约安全检测平台(www.sjtubsrc.net)内31276份智能合约的检测数据,对九大类安全漏洞进行了统计分析,并介绍了BSCSCS平台的快速扫描引擎和深度检测引擎的工作原理与功能。
主要观点
- 以太坊智能合约数量迅速增长,但其安全风险也日益凸显,尤其在开发不规范和测试不充分的情况下,易引发重大经济损失。
- 九大安全漏洞类型中,权限控制漏洞占比最高,达到46.97%,其次是逻辑设计缺陷(16.22%)和错误使用随机数(10.38%)。
- 3级漏洞占比最高,达到48.65%,代表高危漏洞,需优先处理。
- 检测平台BSCSCS具备快速扫描与深度检测能力,能够对开源与未开源合约进行安全审计,并提供漏洞评分与修复建议。
关键信息
检测数据
- 检测智能合约总数:31276
- 代码行数:9407593
- 函数数:371655
- 交易笔数:87608190
- 检测漏洞类型:call安全漏洞、条件竞争漏洞、重入攻击漏洞、权限控制漏洞、数值溢出漏洞、事务顺序依赖漏洞、账户冻结及绕过漏洞、逻辑设计缺陷漏洞、错误使用随机数漏洞
- 数值溢出漏洞:未在本次样本中被监测到
漏洞严重等级分布
| 漏洞严重等级 | 数量 | 占比 |
|---|---|---|
| 1级 | 36292 | 9.53% |
| 2级 | 159299 | 41.82% |
| 3级 | 185355 | 48.65% |
漏洞类型分布
| 漏洞类型 | 数量 | 占比 |
|---|---|---|
| 权限控制漏洞 | 178925 | 46.97% |
| 逻辑设计缺陷漏洞 | 61798 | 16.22% |
| 错误使用随机数漏洞 | 33809 | 10.38% |
| call安全漏洞 | 41268 | 10.83% |
| 条件竞争漏洞 | 13602 | 3.57% |
| 重入攻击漏洞 | 2743 | 0.72% |
| 事务顺序依赖漏洞 | 9488 | 2.49% |
| 账户冻结及绕过漏洞 | 1593 | 0.42% |
九大漏洞类型分析
1. Call安全漏洞
- DAOMethodCall:外部调用后状态变化,可能导致重入攻击。建议:检查参数、先改状态、引入互斥锁。
- DelegateCallWithUserInput:用户输入可能修改存储位置,建议使用 library 关键字构建库合约。
- UnsafeCallTarget:调用不受信任地址,建议进行地址和数据内容检查。
2. 条件竞争漏洞
- TODAmount、TODReceiver、TODTransfer:转账时由于条件竞争,可能将代币转至攻击者账户。建议:检查转账数量和接收者地址,设置 gas 上限。
3. 重入攻击漏洞
- DAO、DAOConstantGas:转账发生在扣款前,且 gas 量固定。建议:使用 transfer 函数、先改状态、引入互斥锁。
4. 权限控制漏洞
- UnprivilegedSuicide、UnrestrictedEtherFlow、UnrestrictedWrite、UseOfOrigin:未限制的自毁、转账、写入和使用 tx.origin 可能导致权限滥用。建议:限制权限、使用 require 检查。
5. 数值溢出漏洞
- IntegerOverflow:算术运算未做边界检查,可能导致代币数量异常。建议:使用 SafeMath 库。
6. 事务顺序依赖漏洞
- DivisionBeforeCallvalue、DivisionBeforeMultiply:先做除法再做乘法或转账,可能导致不可预测结果。建议:检查算术逻辑,避免四舍五入影响。
7. 账户冻结及绕过漏洞
- LockedEther:合约无法取出以太币。建议:检查存取逻辑。
8. 逻辑设计缺陷漏洞
- MissingInputValidation、UnhandledException、WriteOnly:未验证输入、未处理异常、参数仅可写。建议:验证输入、使用 require 检查异常、配合 events 记录参数。
9. 错误使用随机数漏洞
- UnsafeDependenceOnBlock、UnsafeDependenceOnGas:依赖区块或 gas 生成随机数,易被预测。建议:使用安全伪随机数服务(如 Oracize、BTCRelay 等)。
典型案例分析
- Parity 钱包漏洞:由于 library 合约被删除,导致多重签名钱包余额被冻结,损失约 3000 万美元。
- TheDAO 漏洞:由于转账发生在扣款前,导致攻击者分离资产,损失约 3000 万以太币。
- BEC 漏洞:整数溢出导致大量代币被转出,市场价值几近归零。
- Fomo3D 游戏漏洞:奖励池因溢出攻击变成负数,损失约 6 万个 EOS。
- TopToken 合约漏洞:主要问题集中在权限控制、逻辑设计缺陷和错误使用随机数,其中错误使用随机数漏洞最多,共14个。
建议与防范措施
- 开发者应提高安全意识,避免使用未验证的代码,合理使用安全库(如 SafeMath)。
- 项目方应制定统一的合约安全标准,严格执行,使用形式化验证方法进行审计。
- 数字资产交易平台应加强项目审核与自身安全防护,要求项目方提供安全凭证。
结束语
本白皮书强调了区块链智能合约安全的重要性,并指出当前行业在安全意识、测试规范和人才储备方面存在明显短板。通过自动化检测工具(如 BSCSCS)和专业审计,有助于提升智能合约的安全性,降低安全风险。
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载