
安全检测的价值指什么
区块链安全检测价值相关术语如何理解,可以从三个问题入手:保护什么、检查什么、结果能说明什么。这里的价值指发现风险、支持修复和验证安全要求的作用,不指代币价格或投资回报。本文聚焦区块链基础概念与智能合约安全,不对具体项目作安全认定。
防篡改与合约安全
NIST《区块链技术概述》将区块链描述为分布式、篡改可察觉且具有抗篡改能力的数字账本;在网络正常运行的条件下,已发布交易通常不能被更改。
防篡改描述的是记录保护能力。判断合约是否安全,还要检查它允许什么操作。例如,错误的权限规则也可能被网络按代码执行并记录下来。记录可靠与业务规则正确属于不同的检查对象。
访问控制与安全不变量
以太坊开发者安全文档涉及权限设计、程序检查、测试和独立审查等措施,强调审计不能发现所有缺陷。这些措施分别提供不同角度的安全证据。
访问控制回答“谁可以做什么”。所有者模式集中管理敏感操作,角色权限按职责分配操作能力,多重签名要求多方批准。评价这些设计时,应关注权限实际归属及其组合效果,账户数量多并不直接证明权限安排安全。
安全不变量是预期始终成立的规则,例如某种供应量约束。require通常检查输入或操作前提,assert检查内部应当成立的条件,revert用于主动中止并回滚当前调用中的状态变更。检查语句的价值取决于规则是否完整、准确。
检测方法及适用条件
静态分析在不实际执行合约的情况下分析代码;动态分析观察执行行为;模糊测试通过生成大量输入寻找异常。单元测试适合验证明确场景,但未覆盖的边界条件仍可能存在问题。
形式化验证需要先明确安全性质,再证明模型满足这些性质。理解其结果时,应查看证明范围和假设。某条性质得到证明,不能直接推导出整个系统不存在任何漏洞。
常见问题:通过检测是否就安全
通过检测意味着在指定范围和方法下取得了相应结果。阅读报告时,需要核对代码版本、覆盖模块、发现的问题及修复复核情况;代码或权限配置变化后,原结论的适用性需要重新判断。
漏洞数量也不能单独衡量检测价值。一个能绕过关键权限的问题,可能比多个低影响问题更重要。更有解释力的结果应说明触发条件、影响对象、修复依据和仍未覆盖的范围。