如何正确进行审计?

  • Arsen
  • 更新于 4天前
  • 阅读 480

Arsen 分享了他在进行代码审计时的一些经验和策略,强调没有一劳永逸的方法,而是需要个人不断调整自己的审计方法,并提出了一套审计框架,帮助提高审计效率和质量。

一旦我开始进行审计,单纯阅读代码对我来说有点不知所措。我曾相信有某种神奇的药丸、系统或框架,可以让我在一个月内成为 LSR。不幸的是,并没有神奇的药丸。

然而,在过去的 12 个月里,我不断尝试调整我的审计方法,以找出最适合我的方式,我强烈鼓励你也这样做。看看你有哪些空白,哪些可以改进,一旦你找到最适合你的方法,你就会获得成功。

今天我想分享一些帮助我高效处理审计的技巧。

审计技巧

将系统分解成小块

最初我认为审计 10k SLOC (ource Lines of Code 源代码行数 )和 1k SLOC 之间存在差异。然而,随着我进行的审计越来越多,我得出的结论是,你需要将系统分解成小块。

你需要学习如何有效地将系统分解成小块。

开始阅读代码,而不是先读文档

  1. 立即进入代码库并开始阅读。文档稍后再看。根据我的经验,尽快开始阅读代码要好得多。

识别合约的关键入口点

  1. 定义合约的入口点。是否有存款/取款/索赔/质押函数?简单浏览一下,了解合约的表面工作原理以及关键参与者是谁。

阅读代码时做出标记

  1. 开始阅读代码,做 @notes/@audit 标记。如果你不理解某个功能的作用,可以查看文档,使用 AI 完全理解它。

多次阅读代码、重新审视

  1. 在第一轮审计后,你对审计的内容有了一些了解。这里是实际的游戏开始。第二次、第三次阅读合约,别忘了做 @notes/@audit 标记。

  2. 假设几天过去了,你已经相当确定,可能你甚至发现了一些问题。但这并不是结束,你需要重新审视所有笔记并评估哪些是相关的

划分流程

  1. 这里我们进入寻找漏洞的战场。即使你很确定自己审计了所有内容,肯定还有一些漏洞未被发现。现在,将协议分解成流程,并尽可能深入每个流程(根据时间而定)。

    例如,我喜欢使用 Notion(我知道很多人讨厌它,更喜欢纯 vsCode),但我发现我需要重新调整我的思维方式,以证明发现是否正确。

    我将协议分解成有意义的小块,并做两行记录。ToDo Findings - 是我从 vscode 笔记中筛选出的发现,计划纳入我的 PoC。PoC Findings 是实际的简要概念验证(不是最终版本,但能有力证明漏洞的存在)。

通过遵循这个简单的系统,我能够将系统分解成有意义的小块,并相应地分配我的时间。例如,存款流程 1 天,索赔流程 2 天,这完全取决于你的信心。记住 Zach Obront 说过的话:

你必须绝对确信没有漏洞留下。

审计三阶段

这种信心只来自于大量的工作和经验。但总结一下,你的审计方法必须分为三个阶段:

  1. 深入理解系统

  2. 审计。寻找漏洞。

  3. 最后一轮。用想法耗尽自己。

最后一点我想提到的是,每次接近审计时,你不能简单地投入代码,你仍然需要有某种有意义的策略。曾经,我看到过一篇来自 @jonataspvt 的文章,虽然我找不到确切的内容,但他展示了他对每次审计的小策略。我尝试根据我的需求重写它,现在我每次审计时都尽量遵循它。

我是 AI 翻译官,为大家转译优秀英文文章,如有翻译不通的地方,在这里修改,还请包涵~

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Arsen
Arsen
江湖只有他的大名,没有他的介绍。