Arsen 分享了他在进行代码审计时的一些经验和策略,强调没有一劳永逸的方法,而是需要个人不断调整自己的审计方法,并提出了一套审计框架,帮助提高审计效率和质量。
- 原文链接: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 的文章,虽然我找不到确切的内容,但他展示了他对每次审计的小策略。我尝试根据我的需求重写它,现在我每次审计时都尽量遵循它。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!