Cryptonews

形式验证与审计:为什么“我们检查代码”已经不够了

Source
CryptoNewsTrend
Published
形式验证与审计:为什么“我们检查代码”已经不够了

审计后我常常睡得很香。我不再这样了。当我第一次看到审计后协议因审计师错过的国家互动而损失 3000 万美元时,我告诉自己这是一个边缘案例。第二次,我把责任归咎于范围。第三次——大约是我那周读到的第五份验尸报告——我意识到问题不在于审计师。这是方法论。审计是人类阅读代码和编写测试的过程。人类会错过一些事情。测试错过路径。在处理真实资本的智能合约中,“我们可能得到了一切”并不是安全模型。这是一个愿望。目录 这种模式已经变得严酷可预测。协议筹集资金,委托一家受人尊敬的公司进行审计,接收报告,修复标记的问题,部署并向其社区宣布“经过审计”。几个月后——有时是几周后——钱就不见了。 Team Finance 在 2022 年 10 月损失了 1450 万美元。两家独立的审计公司审查了代码库。其中一项指出了脆弱的迁移功能。无论如何,合同都被利用了。 2026 年 4 月 18 日,Kelp DAO 的 LayerZero 桥被耗尽了 116,500 rsETH,约合 2.92 亿美元,约占该代币全部流通供应量的 18%。它成为 2026 年最大的 DeFi 漏洞。事后结论:没有智能合约被破坏。没有任何加密原语受到损害。合同完全按照书面规定履行。故障发生在链下验证者基础设施中——这是一种单 DVN 配置,可让攻击者伪造跨链消息。审计报告不可能发现这一点,因为合同代码没有任何问题。 2025 年,Web3 发生 313 起重大安全事件,总损失达到 33.75 亿美元。当审计变成一个复选框时——项目所做的事情是为了表明勤奋,而不是一个有意义地降低风险的过程——这个行业就出现了结构性问题。确实如此。让我准确地介绍一下智能合约审计提供的内容,因为行业往往会掩盖这一点。审计涉及一组安全研究人员阅读您的代码、运行静态分析器、编写自定义测试用例并记录他们发现的内容。最好的公司能够发现重入漏洞、整数溢出、访问控制问题、逻辑错误和危险的经济边缘情况。他们的报告详细且真正有价值。但审计受到人类注意力和审计人员考虑的场景的限制。没有任何审计能够详尽地探索合同中每一个可能的执行路径。一个重要的智能合约的状态空间——输入、存储状态、调用者上下文和执行序列的每一种可能的组合——对于任何人或模糊器来说都太大了,无法详尽地覆盖。模糊测试通过随机输入生成捕获大约 80% 的问题。剩下的 20% 隐藏在随机输入永远无法达到的数学边缘情况中。测试首次存款场景的审计员可能永远不会构造出 TotalSupply 为 1、totalAssets 为 type(uint256).max 的确切状态,从而产生通货膨胀攻击。审计回答:“我们发现错误了吗?”它不会,而且在结构上也不能回答:“不存在错误。”这不是对审计师的批评。这是该方法的数学限制。形式验证是一种根本不同的保证类别。形式验证不是让人类阅读代码并寻找问题,而是将智能合约转换为数学规范,然后使用自动证明者详尽地搜索任何违反这些规范的执行路径。证明者不会疲倦。它不会因为时间耗尽而错过边缘情况。它不会因为某个场景看起来不太可能而忽略它。它系统地探索规范定义的整个状态空间。如果证明者发现违规行为(规范认为不可能但代码允许的状态转换),则合约将无法验证。团队修复并再次验证。如果证明者没有发现任何违规行为,则它已经产生了数学证明。不是概率。置信度不高。证明在指定的属性内,代码不能以未指定的方式运行。关键词:在指定的属性范围内。形式验证证明您指定的内容。如果您指定了错误的内容,或者未能指定重要的属性,则证明不会涵盖它。这就是为什么编写精确的规范——不变量、状态转换规则、访问控制属性——与运行证明者一样重要。形式验证最有力的论据不是理论上的。这是经过多位人类专家审查的交付代码仍然包含的具体错误。 MakerDAO 的 DAI 是 DeFi 中最受审查的代码库之一,从 2019 年 11 月首次发布到 2022 年 5 月,它都违反了自己的核心不变量。这是协议基础账户中的数学错误

形式验证与审计:为什么“我们检查代码”已经不够了