如何正确进行审计?
- 原文链接:mirror.xyz/0x3Cc99bfc69...
- 译者:AI翻译官,校对:翻译小组
- 本文链接:learnblockchain.cn/article…
一旦我开始进行审计,单纯阅读代码对我来说有点不知所措。我曾相信有某种神奇的药丸、系统或框架,可以让我在一个月内成为 LSR。不幸的是,并没有神奇的药丸。
然而,在过去的 12 个月里,我不断尝试调整我的审计方法,以找出最适合我的方式,我强烈鼓励你也这样做。看看你有哪些空白,哪些可以改进,一旦你找到最适合你的方法,你就会获得成功。
今天我想分享一些帮助我高效处理审计的技巧。
审计技巧
将系统分解成小块
最初我认为审计 10k SLOC (ource Lines of Code 源代码行数 )和 1k SLOC 之间存在差异。然而,随着我进行的审计越来越多,我得出的结论是,你需要将系统分解成小块。
你需要学习如何有效地将系统分解成小块。
开始阅读代码,而不是先读文档
- 立即进入代码库并开始阅读。文档稍后再看。根据我的经验,尽快开始阅读代码要好得多。
识别合约的关键入口点
- 定义合约的入口点。是否有存款/取款/索赔/质押函数?简单浏览一下,了解合约的表面工作原理以及关键参与者是谁。
阅读代码时做出标记
- 开始阅读代码,做
@notes
/@audit
标记。如果你不理解某个功能的作用,可以查看文档,使用 AI 完全理解它。
多次阅读代码、重新审视
-
在第一轮审计后,你对审计的内容有了一些了解。这里是实际的游戏开始。第二次、第三次阅读合约,别忘了做
@notes
/@audit
标记。 -
假设几天过去了,你已经相当确定,可能你甚至发现了一些问题。但这并不是结束,你需要重新审视所有笔记并评估哪些是相关的。
划分流程
-
这里我们进入寻找漏洞的战场。即使你很确定自己审计了所有内容,肯定还有一些漏洞未被发现。现在,将协议分解成流程,并尽可能深入每个流程(根据时间而定)。
例如,我喜欢使用 Notion(我知道很多人讨厌它,更喜欢纯 vsCode),但我发现我需要重新调整我的思维方式,以证明发现是否正确。
我将协议分解成有意义的小块,并做两行记录。
ToDo Findings
- 是我从 vscode 笔记中筛选出的发现,计划纳入我的 PoC。PoC Findings
是实际的简要概念验证(不是最终版本,但能有力证明漏洞的存在)。
通过遵循这个简单的系统,我能够将系统分解成有意义的小块,并相应地分配我的时间。例如,存款流程 1 天,索赔流程 2 天,这完全取决于你的信心。记住 Zach Obront 说过的话:
你必须绝对确信没有漏洞留下。
审计三阶段
这种信心只来自于大量的工作和经验。但总结一下,你的审计方法必须分为三个阶段:
-
深入理解系统
-
审计。寻找漏洞。
-
最后一轮。用想法耗尽自己。
最后一点我想提到的是,每次接近审计时,你不能简单地投入代码,你仍然需要有某种有意义的策略。曾经,我看到过一篇来自 @jonataspvt 的文章,虽然我找不到确切的内容,但他展示了他对每次审计的小策略。我尝试根据我的需求重写它,现在我每次审计时都尽量遵循它。
我是 AI 翻译官,为大家转译优秀英文文章,如有翻译不通的地方,在这里修改,还请包涵~
版权声明
本文仅代表作者观点,不代表区块链技术网立场。
本文系作者授权本站发表,未经许可,不得转载。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。