区块链安全100问 | 第七篇:智能合约审计流程及审计内容
零时科技零时科技区块链安全100问正式上线,以通俗易懂的语言形式为大家讲解区块链行业知识,以及区块链生态应用存在的安全问题,让更多人了解区块链及区块链安全。
前言
当前区块链技术和应用尚处于快速发展的初级阶段,面临的安全风险种类繁多,从区块链生态应用的安全,到智能合约安全,共识机制安全和底层基础组件安全,安全问题分布广泛且危险性高,对生态体系,安全审计,技术架构,隐私数据保护和基础设施的全局发展提出了全新的考验。
PART01-智能合约审计流程介绍
为了检查合约的安全性,一般会测试多种攻击,模拟多种攻击场景,通过标准审计流程进行安全审查,以确保合约是否安全。
正常审计流程应包括前期应用审计的需求沟通,比如审计合约内容、审计时间、审计预算等;确定审计需求后需要签订协议、达成共识;然后安全团队开始安全审计,以及审计报告的输出,开发团队针对报告中的安全问题进行修复,安全团队协助修改后的复测,确保安全问题已修复,提升合约的安全性。
智能合约代码审计方式:
- 了解智能合约协议的逻辑运转流程
- 分析智能合约逻辑设计规范和设计目的
- 工具测试智能合约存在的安全风险
- 测试针对智能合约的常见攻击手法
- 根据项目流程进行模拟算法漏洞测试
PART02-智能合约常规漏洞有哪些?
1)以太坊智能合约
- 重入攻击
- 浮点数和数值精度
- 非预期的Ether
- 整数溢出
- 重入攻击
- 浮点数和数值精度
- 默认可见性
- Tx.origin身份验证
- 错误的构造函数
- 未验证返回值
- 不安全的随机数
- 时间戳依赖
- 交易顺序依赖
- Delegatecall调用
- Call调用
- 拒绝服务
- 逻辑设计缺陷
- 假充值漏洞
- 短地址攻击
- 未初始化的存储指针
- 代币增发
- 冻结账户绕过
- 合约Gas 优化
- 变量覆盖
- 恶意后门
2)EOS合约
- 权限校验漏洞
- 转账通知伪造漏洞
- Apply函数权限校验漏洞
- 整数溢出漏洞
- 权限校验漏洞
- 转账通知伪造漏洞
- Apply函数权限校验漏洞
- 弱随机数种子漏洞
- 冻结账户绕过漏洞
- 拒绝服务漏洞
- 代码逻辑漏洞
- 假 币攻击
- 回滚攻击
- 重放攻击
- 恶意后门
PART03-智能合约审计报告的结构
1)审计报告的封面:
审计报告的封面中体现审计对象的名称、审计团队及报告的发布日期。
2)审计概述及项目背景:
概述和项目背景进行细致划分,使得审计报告更加清晰明了,其中项目背景对项目简介和审计范围做了详细介绍。
3)合约架构分析:
通过目录结构和合约详情说明该项目合约文件及对应合约的主要方法参数等。
4)审计详情:
在审计详情中通过风险分布、风险审计详情重点介绍合约审计过程中存在的相关风险,其中包括风险名称、漏洞描述、风险等级、安全建议、修复状态及审计结果等信息。
作为关心项目方安全的投资者,通过以上几个部分基本可以了解到如何审阅项目;剩下的部分则是审计团队安全审计的工具介绍、免责声明及安全审计团队的基本信息。
- 智能合约审计报告不是验证代码安全的法律文件;没有人能100%确保代码在未来不会发生错误或产生漏洞。审计团队对项目的审计报告只表示审计团队对项目进行过安全评估,这仅仅是保证你的代码已被专家校订过,基本上是安全的。选择权最终掌握在项目方及投资者手中。
- 区块链安全100问正在持续更新,欢迎大家后台评论留言自己的观点。