什么是智能合约审计及如何执行
智能合约是在虚拟机上运行并存储在区块链上的自执行程序。它们在满足特定条件后自动完成协议执行。智能合约支撑着交易的完整性,包括那些启动关键业务和金融服务的交易。智能合约审计是确保这些程序按设计工作的一个重要方法。
智能合约用于多种目的,包括协调业务流程、转移资产和启动服务等。这个过程很简单:一旦特定交易或请求的所有条款得到满足,合约就会相应地响应。
区块链的固有安全性使智能合约难以被攻破。智能合约不是部署在控制权集中于单一位置的集中式网络上,而是安装在去中心化网络上,控制和管理功能嵌入每个节点。用户文件和数据包含访问和安全代码,因此无论数据传送到何处,其凭证都是可用的。
这并不意味着智能合约没有问题。例如,如果合约存在编码问题或被黑客攻击,就必须用新合约替换。这正是智能合约审计发挥作用的地方。它确保在智能合约上传到区块链并使用之前,解决任何缺陷、错误或漏洞。
什么是智能合约审计?
由于智能合约在执行业务逻辑(通常是自主执行)和包含关键数据方面扮演重要角色,因此安全性至关重要。一旦智能合约上链,任何人都可以访问它。因此,任何缺陷也都可以被任何人访问。
智能合约审计评估智能合约的代码。这些审计可以是自动化的,也可以手动执行。最重要的是,它们应在将智能合约上链之前完成。审计从多个角度检查智能合约代码,以执行以下操作:
- pinpoint 编码错误、缺陷和劣质代码。
- 识别安全漏洞。
- 衡量可靠性和性能。
- 防止安全攻击。
- 识别逻辑错误。
- 发现存储、数据、内存、环境、日志和其他指标的问题。
成功的智能合约审计会修复可能发现的任何问题。在合约部署前识别并修复缺陷的组织可以更确信合约是可靠和安全的。
为什么需要智能合约审计?
一旦智能合约部署在区块链上,就无法更改。即使是像编码错误这样的小问题也可能导致安全漏洞、数据泄露和财务损失。以下是审计必要的原因:
- 安全确认和验证。识别并解决漏洞(如重入攻击和未经检查的外部调用),以防止被利用。
- 最小化财务损失。有缺陷和未经审计的智能合约已因漏洞和其他入侵事件使公司损失了数十亿美元。
- 代码完整性验证。审计确保并确认合约将使用最佳实践正确执行。
- 合规性。根据其上链的位置,当地司法管辖区可能要求智能合约满足安全和其他要求。
- 可信度和信任确认。审计结果验证智能合约是安全的,增强了投资者和用户的信心与信任。
谁执行智能合约审计?
智能合约审计需要不同于一般IT或系统及组织控制审计的专业知识。IT部门和内部审计部门可以自行进行智能合约检查,但专业的编码和逻辑技能是关键前提。
由于许多组织内部没有这种专业知识,或者因为他们希望第三方完成这项工作,他们可以聘请智能合约审计专家。这些公司拥有经验、知识以及专业软件,能够详细分析合约代码以识别潜在问题。
如何执行智能合约审计
智能合约审计的具体步骤因合约而异。通常,智能合约审计步骤包括:
- 定义审计并确保管理层的批准。这包括审计的范围和目标。在审计开始前获得管理层批准。
- 确定审计团队。假设员工具备适当的编码和分析技能,审计团队成员可以来自内部审计和IT部门。否则,使用外部智能合约审计公司。团队也可以同时包括内部和外部资源。
- 收集证据。这包括描述智能合约、其目的和活动、设计和开发方式、执行时的操作方式、测试结果及其他相关文件的文档。访问代码至关重要。
- 冻结代码。一旦证据收集完毕且可以访问代码,对所有代码更改实施冻结。这可以防止任何更改影响代码分析及整体审计的完整性和准确性。
- 执行自动化代码分析。此步骤是实际现场工作的开始。启动自动化工具检查代码中的异常和可能暗示安全漏洞的可疑代码。这些工具可以检查许多不同的标准。结果可能表明需要进一步分析。进行渗透测试以识别潜在安全漏洞也可能有用。
- 执行手动代码分析。自动化工具完成后,手动检查代码行,以发现工具可能遗漏的问题。参考智能合约文档以确定所写代码是否会按设计执行。手动审查与自动化测试相结合可产生最佳结果。
智能合约审计有助于预防许多智能合约漏洞。
- 修复任何已识别的问题。代码分析完成后,解决任何问题。这对于确保代码正确和安全尤为重要。在部署之前测试修复后的代码以验证其正常工作。
- 准备并交付智能合约审计报告。该报告(包括建议)应包含收集的所有证据、代码分析结果、修复和测试以及任何其他活动。如果需要更多的审计后工作,确定这些活动必须完成的时间并记录这些决定。
智能合约审计的成本是多少?
智能合约审计的成本基于几个因素,包括合约的复杂性、需要审计的代码行数、审计公司的声誉以及所需的周转时间。以下是基于Informa TechTarget互联网研究的一般费用细分:
- 简单合约(少于1000行代码):3000至10000美元。
- 中等复杂度合约(1000-5000行代码):10000至50000美元。
- 高度复杂合约(5000行以上代码),例如去中心化金融协议或定制去中心化交易所:50000至100000美元以上。
顶级审计公司可能收取溢价,加急审计通常成本更高。如果需要具体报价,CertiK和Quantstamp等公司会根据项目要求提供定价详情。
智能合约审计工具和审计公司
以下是根据Informa TechTarget互联网研究确定的智能合约审计工具和审计公司列表。
智能合约审计工具
- Manticore:基于符号执行的智能合约安全工具。
- Mythril:基于符号执行的安全分析工具,检测基于以太坊的智能合约中的安全问题。
- MythX:基于云的安全分析工具。
- Scribble:规范语言和运行时工具,将高级规范转换为Solidity代码。
- Securify v2.0:Solidity合约的验证工具。
- Slither:Solidity和Vyper合约的静态分析工具。
- SmartCheck:用于检测基于Solidity的智能合约代码中错误的分析工具。
智能合约审计公司
- CertiK:提供Web3智能合约审计。
- ConsenSys Diligence:提供智能合约安全和审计服务。
- Cyfrin:提供智能合约审计和研究。
- Hacken.io:提供智能合约审计服务。
- KPMG:提供智能合约审计。
- QuillAudits:提供智能合约审计。
- Solidified:提供智能合约审计。
如何选择智能合约审计工具
在评估和选择智能合约审计工具时,请考虑以下因素:
- 安全特性:工具应提供漏洞检测、形式化验证和模糊测试。
- 区块链支持:工具应支持所使用的区块链平台,例如以太坊、Solana和Polkadot。
- 自动化与手动审计:根据审计需求,考虑提供自动扫描的工具。非自动化工具需要由训练有素的专业人员进行手动审查。
- 支持社区:拥有活跃用户社区的工具可能更可靠且更容易修复。
- 财务因素:考虑免费工具与其他需要订阅或一次性付款的工具。
AI对智能合约审计的影响
以下是AI改变智能合约审计的一些方式。
积极影响
- 增强的漏洞检测:基于AI的自动化工具扫描智能合约中的安全漏洞和其他问题的速度比手动审计快得多。
- 使用自然语言处理的代码审查:AI检查合约文档并将其映射到实际代码,确保合规性。
- 通过机器学习实现安全:机器学习利用AI从过去的审计和评估中学习的能力,帮助改进风险评估和安全问题。
- 形式化验证改进:用于智能合约逻辑验证的数学证明的准确性可以识别可疑行为。
潜在风险
- 误报和漏报:在AI将无害代码错误识别为安全风险的情况下,需要人类专业知识。
- 可疑漏洞利用:攻击者可能使用AI创建恶意合约以绕过安全筛查。
- 自动化与人类专业知识:AI加速了审计过程,但组织可能仍需要引入能够分析复杂安全问题的专家。
Paul Kirvan, FBCI, CISA,是一位拥有超过35年业务连续性、灾难恢复、弹性、网络安全、GRC、电信和技术写作经验的独立顾问和技术作家。