收集、分析智能合约审计报告
审计报告
调研结果
收集了来自42家公司的2382份pdf格式的审计报告,主要针对的是智能合约
总结了审计报告的主要内容并以MetaTransaction的审计报告为例介绍了各个模块
审计报告主要内容
以审计公司 ABDK.consulting 对 0x) 项目的 MetaTransaction审计报告为例,介绍审计报告一般包含的主要内容
审计方法
介绍审计过程中采用的方法或审计的流程
该审计报告主要进行了四个方面的分析
- 常规代码检查:检查代码风格是否清楚、一致,具体检查缩进、变量命名、缺失注释等问题
- 实体使用分析:分析代码中的实体(例如变量、函数、类等)的使用情况和模式。了解代码中的实体是如何被引用、使用和修改的,以及它们在不同上下文中的行为和依赖关系
- 访问控制分析:对于能够被外部访问的实体,检查访问控制是否恰当
- 代码逻辑分析:分析特定函数的正确性和效率,检查代码的行为是否符合预期、算法是否正确
审计对象
一般会给出被审计项目的基本介绍、代码、项目结构等信息
源代码:Comparing development…feat/MetaTransactionV2 · 0xProject/protocol (github.com) 以及 feat: Multiplex + MetaTransaction integration and MetaTransaction Multi-Fee Support [RFQ-795] [LIT-870] by patrick-dowell · Pull Request #665 · 0xProject/protocol (github.com)
审计对象的项目结构
审计结果
主要包括发现的漏洞类型、数量以及漏洞的修复情况
根据危害等级,一般将漏洞等级分为:
- Critical:严重
- Major:高危
- Moderate:中危
- Minor:低危
本报告发现了1个严重漏洞、1个高危漏洞、1个中危漏洞、17个低危漏洞,其中5个已经修复,仍有15个低危漏洞尚未被修复
漏洞详细信息
审计报告一般会对发现的漏洞进行描述,包括漏洞的分类、漏洞的危害、漏洞在合约中的位置、如何触发漏洞、以及如何修复漏洞
以发现的严重漏洞CVF-1为例,审计报告中介绍了该漏洞的具体信息
- 漏洞分类为 缺陷
- 两个modifier
refundsAttachedEth
和doesNotReduceEthBalance
可能产生冲突 - 漏洞位置:该漏洞出现在
MetaTransactionsFeatureV2.sol
合约中 - 建议的修复措施:将
refundsAttachedEth
和doesNotReduceEthBalance
合并作为交易退款的标识符 - 0x项目的解决方法:删除
refundsAttachedEth()
,将executeMetatransaction
设置为notpayable
审计报告来源
共计42家审计公司公开发布的审计报告,具体名单如下
其他资料
Etherscan目前认证了60家智能合约审计公司
中山大学郑子彬老师的团队花费了44个人月,分析了1322份开源的审计报告