PoCo: Agentic Proof-of-Concept Exploit Generation for Smart Contracts
本文介绍了 PoCo,这是一个智能体框架,能够根据自然语言描述的安全漏洞自主生成可执行的、兼容 Foundry 的概念验证攻击代码,从而显著减少智能合约安全审计所需的时间和精力。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象你是一名建筑检查员(即智能合约审计员),刚刚在一座摩天大楼的设计中发现了一个危险缺陷。你知道如果有人按下某个特定按钮,电梯就会坠落。但为了向大楼业主和施工团队证明这一点,你不能只说“它可能会坠落”。你需要建造一个小型、安全的电梯模型,并在受控条件下实际让它坠落,以展示:“看?这是真实的,而且这就是如何破坏它的确切方法。”
在区块链世界中,这个“模型”被称为概念验证(PoC)。它是一个用于展示漏洞的代码片段。
问题:
手工编写这些“坠落测试”(PoC)就像蒙着眼睛试图建造一架复杂的模型飞机。这非常耗时,容易出错,而且审计员常常在与时间赛跑。如果他们无法快速构建模型,就可能在大楼建成之前无法证明其存在安全隐患。
解决方案:PoCo
这篇论文介绍了PoCo,即“概念验证”(Proof-of-Concept)。请将 PoCo 想象成不仅仅是一个简单的计算器,而是一个拥有特定任务的机器人学徒。
- 输入: 你(审计员)向机器人提供一份用 plain English(普通英语)写成的便条,描述问题。例如:“如果用户向零地址发送资金,手续费就会被卡住并消失。”
- 机器人的大脑(代理 AI): 与那些仅尝试一次性猜测答案的旧工具不同,PoCo 是一个“代理”系统。这意味着它像人类一样,在一个循环中进行思考、行动和学习。
- 推理: 它阅读你的便条并查看大楼的蓝图(代码)。
- 行动: 它尝试编写一个脚本来破坏电梯。
- 观察: 它运行脚本。它崩溃了吗?编译失败了吗?
- 修正: 如果失败了,机器人不会放弃。它会查看错误信息,找出问题所在(例如“我使用了错误的工具”),然后再次尝试。
- 输出: 最终,机器人交给你一个可工作的、可执行的脚本,成功演示了该缺陷。它已准备好被纳入正式报告。
他们如何测试它
研究人员并没有仅仅希望它有效,而是让机器人接受了一场严格的考试:
- 数据集: 他们收集了来自实际区块链项目的 23 个真实世界安全漏洞(就像收集了一批真正损坏的电梯)。
- 测试: 他们要求 PoCo 为每一个漏洞构建一个“坠落测试”。
- 基线: 他们将 PoCo 与另外两种方法进行了比较:
- “一次性”方法: 要求一个智能 AI 一次性写出完整代码,而不检查其工作。(这大多数时候都失败了,就像学生在数学考试中靠猜题一样。)
- “工作流”方法: 给 AI 一个僵化的、逐步的检查清单。(这更好,但当问题需要跳出检查清单时,它仍然会卡住。)
- 结果: PoCo 是明显的赢家。它在不同 AI 模型的69 次尝试中成功构建了 50 个可工作的“坠落测试”,而其他方法则表现挣扎。
“补丁”技巧
他们如何知道机器人的“坠落测试”实际上是正确的,而不仅仅是幸运的猜测?他们使用了一个名为基于补丁的验证的巧妙技巧。
- 想象施工团队修复了电梯(即“补丁”)。
- 研究人员拿机器人的“坠落测试”并在修复后的电梯上运行它。
- 逻辑: 如果机器人的测试未能破坏修复后的电梯,这意味着该测试实际上是有效的——它成功利用了旧的损坏版本,而修复是有效的。如果测试在修复后的电梯上仍然有效,则说明机器人未能找到真正的问题。
论文的关键要点
- 自主性是关键: 机器人探索代码、阅读错误信息并自行更改计划的能力,比仅仅使用可用的“最智能”AI 模型更为重要。即使是一个稍弱一些的 AI 模型,在拥有迭代自由时也能表现得更好。
- 细节至关重要: 审计员的便条越详细,机器人的表现就越好。然而,给机器人一个关于如何破坏它的僵化、逐步脚本有时会令其困惑。最好告诉机器人什么坏了以及为什么坏了,让机器人自己去 figuring out 如何破坏它。
- 安全性: 机器人在一个安全、隔离的沙盒(数字“车库”)中运行,因此它不会意外破坏真实的资金或真实的合约。
总结
PoCo 是一个工具,它将人类对安全漏洞的描述转化为一个可工作的、自动化的测试,以证明漏洞的存在。它节省了审计员的时间,减少了错误,并帮助开发人员更快地修复漏洞,从而使区块链生态系统更安全。该论文证明,一个能够“思考、行动和学习”的 AI 代理,远优于那些仅遵循静态脚本或仅尝试一次猜测的工具。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。