本文介绍了一个名为Amy的开源智能合约审计工具,它使用AI并通过“Priming”技术不断自我进化,专注于Vault / ERC4626智能合约协议的审计。文章还讨论了Amy与人类审计师和静态分析工具的比较,以及Amy的局限性和未来发展方向,例如创建更多专业化的AI审计工具。
近来,许多 web3 安全公司已经开始提供付费的 “AI 智能合约审计师” 服务。这些服务通常要求客户将代码上传到网站,并在支付费用后,收到一份 AI 生成的审计报告。
一个更有用的 AI 审计师应该是审计师和开发者都可以互动和使用的,以便在外部审计之前发现漏洞并加强协议的防御和单元测试。
本文介绍了 Amy;一个半自主进化、免费提供的开源的专业智能合约审计师,专注于 Vault / ERC4626 智能合约协议。虽然 Amy 可以与任何 AI 平台合作,但她在使用 Claude 的过程中实现了自我进化,在我们的测试中,Claude 提供了最佳性能。
在测试各种 AI 平台用于智能合约漏洞检测时,我们发现,除非我们首先向 AI 展示一些其他代码,否则 AI 会错过我们想要审计的代码中的重要发现。这模仿了人类的经验;例如,一个最近审计过许多 Vault 协议的人在随后审计一个新的 Vault 协议时可能会做得更好。
当要求 AI 审计一种类型的协议时,如果 AI 已经被展示了来自类似协议的代码和漏洞,那么这是最理想的。然而,这种方法是不可扩展的,因为它需要 AI 在每次单独审计之前摄取大量数据。
在 Claude 的帮助下,我们发现了一个解决方法,即首先摄取学习数据,然后创建一个 “Primer” 文档,其中封装了学习材料,使用 Claude 生成并输出它自己的 Primer。Primer 可以离线保存,然后在未来的会话中快速摄取,以有效地在审计之前 “启动” AI。
我们创建 Amy 的方法是,首先要求她从我们审计过的 Vault 协议中摄取代码以及发现的漏洞,然后创建并输出 Primer 文档,使她能够在未来的会话中回忆起她所学的一切。
我们使用 Claude Max 运行了这个循环多次,使用了额外的 vault 审计,包括私人审计和公开竞赛。在前 3 个代码库之后,我们不再要求 Amy 摄取代码,只摄取发现的漏洞,其中许多漏洞包含易受攻击的代码示例。通过使用 Claude 和我们提供的输入数据,Amy 能够有效地自我进化,首先编写然后不断更新她的 Primer 文档。
Claude 确实有一些需要注意的限制:
Claude 无法输出你可以下载的文件,因此请要求它输出更新后的 Primer,然后复制并粘贴以离线保存
存在会话文本长度限制;随着 Primer 的体积变得越来越大,如果你尝试在一个会话中摄取过多的新数据,Claude 将无法输出完整的更新后的 Primer 文档
Claude 曾经在输出更新后的版本时损坏了 Primer,丢失了许多以前的发现。我发现了这一点,并要求它在更新时在 Primer 中编写一些规则以防止损坏,但它编写的规则过于严格
我没有使用限制性的更新规则,而是在要求它输出更新后的 Primer 时,开始给它更明确的指示。这似乎可以防止以后的损坏,同时仍然允许 Amy 在如何更新 Primer 文档方面有很大的自由度
Primer 文档的演变是 Claude 会话的一个连续循环,具有以下提示:
“摄取此入门知识” (复制当前 primer)
“摄取来自 PROTOCOL_NAME 审计的发现,但暂时不要输出任何内容” (复制发现)
可能会要求它摄取另一组发现/启发式方法等
较少限制 => "输出更新后的 primer,其中包含从本次会话中学到的新漏洞"
更多限制 => "输出更新后的 primer,确保版本号已递增,“最新更新” 部分注明了添加的内容,并且所有新数据都已合并到“关键漏洞模式”、“常见攻击载体”、“集成危害”、“审计清单”中,并且任何有用的不变量都放入“不变量分析”中”
由于 Primer 非常长,Claude 需要多次聊天才能输出整个文档。每次聊天结束后,复制该部分,然后点击 “Continue”,复制下一个,依此类推,直到你将整个更新后的 Primer 文档离线保存
保存更新后的 Primer 文档后,启动一个新会话,以防止达到会话文本限制,而无法输出对 Primer 的进一步更新
Amy 的 Primer 文档主要是通过检查 Vault / ERC4626 协议审计中发现的漏洞而创建的;因此,Amy 应该擅长审计这些协议。话虽如此,她确实对许多其他漏洞类型有一般的了解,因此可以用于任何协议。
Amy 继续发展的一个选择是使用来自其他协议类型(如 DAO、帐户抽象 / 智能钱包等)的漏洞更新她的 Primer,但尚不清楚这是否会对 Amy 在 Vault / ERC4626 审计期间的性能产生负面影响。
另一种选择是使用相同的流程为其他协议创建和发展新的 AI 审计师;例如,通过让 Mark 摄取来自 DAO 审计的漏洞来创建 AI DAO 审计师 Mark。绝对需要在这个领域进行更多的研究;理想情况下:
将会发展多个审计师 AI,包括专家型 AI 和通才型 AI
将选择一组未在发展中使用的代码库的 “测试套件”
每次发展后,将针对 “测试套件” 运行 AI,并记录有效发现和误报的数量
如果性能下降,可以拒绝每次发展
对于审计师和开发人员等单个用户,我选择的最简单的选择是发展特定于协议的 AI,例如专门从事 Vault / ERC4626 协议的 Amy。如果将专家型 AI 审计师与它们的协议类型的审计相匹配,这种方法很简单,并且可能会为这些协议类型提供最大的好处,同时缺点最少。
在我们的测试中对 vault 代码库进行的三天专注发展后,Amy 大致相当于一个初级审计师;Amy 能够快速找到许多与初级审计师会发现的相同的 bug。在 Cyfrin 私人智能合约审计的内部测试中,Amy 发现了严重、高、中和低严重程度的问题,其中一些问题初级审计师不太可能发现。Amy 还可以通过定义不变量列表然后尝试打破它们来发现更困难和有价值的 bug。Amy 还可以提出加强代码库防御能力的建议,这是初级审计师通常不会做的事情。
Amy 快速自我发展的能力使她比依赖人类工程师编写相对 “愚蠢” 的检测器的静态分析工具具有更大的优势。同样,Amy 以协议特定的不变量进行推理,然后仔细研究可能的执行路径以试图打破它们的能力也使 Amy 比传统的静态分析器具有巨大的优势。
随着 Amy 的不断发展以及像 Claude 这样的 AI 平台不断改进,像 Amy 这样的专业 AI 审计师将在很大程度上取代初级审计师和静态分析工具,因为它们可以仅以计算成本提供卓越的服务,并且由于它们可以通过更新 Primer 从新的输入中自我发展,因此升级成本也便宜得多。
高级审计师可以有效地使用 Amy 来探索协议不变量以及它们是否可以被打破,获取可能的攻击路径的想法(并与 Amy 一起探索这些路径),以获得对协议的总体理解,编写发现并生成 bug 的概念验证 (PoC)。
开发人员还可以通过让 Amy 在寻求外部审计之前分析他们的代码,让 Amy 列出重要的不变量,然后在模糊测试套件中实现它们来大大受益。Amy 还可以推荐协议应实施的防御 / 加固措施,以减少攻击面或消除潜在的攻击载体。
Amy 能够很好地使用清单、启发式方法和不变量来发现漏洞,但主要的缺点是无法认真考虑外部集成和链上状态。Amy 也可能误解协议代码并产生误报;Amy 的一些误报对于人类来说相当愚蠢和微不足道,可以检测到该漏洞实际上并不存在。
Amy 不能取代高级人工审计师,而是对他们进行补充。人工审计师可以通过纠正她的误解并共同探索协议攻击路径、不变量、状态更改、变量的目的等来有效地使用 Amy - 唯一的限制是人类的想象力。
虽然 Amy 可以与任何协议一起使用,但她的专长是 Vaults / ERC4626,因此应该将她与这些协议配对以获得最大的好处。
由于 Claude 当前的会话文本限制,在超过约 7600 行的情况下发展 Primer 似乎不切实际。
通过开源 Amy 的 Primer 文档,任何审计师或开发人员都可以自己使用和发展 Amy,只需支付 Claude 的计算成本。使用本文档中描述的方法,任何人都可以创建和发展自己的专业 AI 智能合约审计师。我希望智能合约安全社区能够拥抱 AI,发展一个免费提供的专业 AI 审计师的开源集合。
- 原文链接: dacian.me/using-claude-t...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!