Newshot
Account

R2Land 中的迷思

Translation(model translation, not the source's own text)

文章标题:Myths in R2Land

正文: Mythos 凭借 OpenBSD、FreeBSD 和 FFmpeg 中的老漏洞登上了头条。

Mozilla 的 AI 辅助加固工作始于 2026 年 2 月,Firefox v150 在 4 月 21 日发布了 271 个 Mythos 修复。这大约是 100 多名开发者两个月的工作量。

10 月 10 日,Anthropic 的 OSS Scanner 发布,允许开源项目运行他们的漏洞扫描器并私下收到提交的报告。

由维护者来审查、修复、测试并发布这些报告,我认为这种方式算是一种不错的协议,也是一种将这一强大工具免费带给开源软件的有益方式。

看到公告后,我立刻启动 codex,做了我能做的最省事的一件事:提示它替我填写 Anthropic 的表单,并向他们的 oss-scanner 仓库提交一个 PR,把 radare2 纳入他们的审批审查流程。

两周后,凌晨 1 点,我收到一封邮件,372 份写得完美、结构良好的报告通过邮件送达,附有复现器、ASan 崩溃日志、复现步骤、CWE 细节和 Markdown 说明。我测试了每一份报告,在这一批里没有发现任何误报。

我早已获得 OpenAI Daybreak 的早期访问权限,并在今年早些时候修复了所有漏洞,所以 Mythos 确实找到了更多!

在多年活跃的漏洞研究和对一个主要由我维护、超过 1M LOC 的代码库的良好编码实践之后,使用静态代码分析和动态插桩、用 valgrind 和 ASan 进行模糊测试,我对发现的数量和质量印象深刻。

该项目的安全准则规定,任何已知漏洞须在 24 小时内公开披露并修复。

这是一个挑战,主要考虑到 radare2 是由一个人作为业余项目维护的

我认为我用 GPT6.1 构建的提示词对 Mythos 找到一些非常小众的点帮助很大,但他们的私有 harness 值得大加称赞:它如何用 AddressSanitizer 构建 r2、运行它、烹制复现器并验证发现。

我需要一个计划,显然也需要更好的工具。

所以我通知了我所在的 NowSecure 公司,为我分配几周时间专注于修复它们,而在 4 天之内我修复了其中大约 200 个。感谢 Opus 5.5 和 DeepseekFlash。

补丁的质量

Anthropic 在报告中附带了建议的补丁。漏洞是真实的,但补丁往往需要返工:

  • 他们修复的是症状而不是根本原因。
  • 他们忽略了修复中重要的设计决策。
  • 他们在附近的代码中留下了类似的漏洞。

复现器证明某处有问题。选择正确的修复仍然需要理解代码本应如何工作。

漏洞类型

报告涵盖了越界读写、格式化字符串漏洞、命令和 ANSI 转义注入、沙箱逃逸、路径遍历、信息泄露、逻辑和网络信任问题、认证绕过,以及拒绝服务,包括分配炸弹。远远超出了 90 年代经典的栈溢出。我不得不排定优先级并开始削减列表。

组织公告

我在本地 radare2 源码树中创建了一个目录,并在 README.md 中记录了其结构和工作规则:

  • Attic/ 存放已解决的报告。
  • TODO.md 跟踪已完成和待处理的工作。
  • status.sh 显示有多少发现已修复、多少仍待处理。
  • Findings/ 包含完整的报告集。

每个发现都带有自己的文件:


        0$ find ANT-2026-1YX7HRIB/
ANT-2026-1YX7HRIB/
ANT-2026-1YX7HRIB/REPORT.md
ANT-2026-1YX7HRIB/patches
ANT-2026-1YX7HRIB/patches/1.patch
ANT-2026-1YX7HRIB/repro.d
ANT-2026-1YX7HRIB/repro.d/hostile.rapatch
ANT-2026-1YX7HRIB/repro
0$
      

REPORT.md 文件以这样的头部开头:


        0$ cat ANT-2026-1YX7HRIB/REPORT.md
==================================
ANT-2026-1YX7HRIB  [high]  CWE-693  authz
rapatch2 -s sandbox bypass: patch files can run r2 and shell commands
Location: libr/main/rapatch2.c:58  in rapatch_file()
Commit:   3f7b70a89ef13e367b63791c21782ad57edbca4b
==================================
      

有了这个头部,任何 agent 都很容易创建一个脚本来生成 json,然后使用 jq 单行命令查询数据,但模型和人类更喜欢 markdown,所以它构建了几个引用 ID 的表格,使得将它们作为待办列表跟踪、用 vim 写我的注释等变得容易。

现在我想我可以直接构建一个基于 sqlite 的工具来处理所有这些,而且我可能会消耗少得多的 token。

哪些智能体?

需要明确的是,我做了大量的手动审查和测试,但 3 个 harness 在这个过程中帮了我很多:我使用了 Claude 搭配 Opus 5.5、Codex 搭配 GPT-6.1 Astra,以及我自己的编码 agent PocketMai,搭配 DeepSeek Flash。

但提示工程已死,对吧?

我倾向于问很多问题,flash 模型在这方面很棒,在不到 5 秒内我就能获得见解并澄清 TLDR。我讨厌阅读 AI 生成的垃圾内容,而问题的描述方式可能比 bug 本身更难理解。

我还使用自定义提示,这些提示会扩展成更长的指令。在审查代码后,我会附加我自己的问题和观察,以便 agent 理解我的关注点、优先级以及需要再次查看的部分。

这些是我在 pmai 中使用的一些提示,也可以通过 radare2-skills 获得:

  • $tldr:使用短句、表情符号和要点总结最后一条消息。
  • $qa:提出 10 个利基的简短问题,并进行研究,用一个表示是/否的表情符号回答它们。
  • $review:审查更改的正确性,包括安全性和内存安全之外的问题。
  • $logic:查找逻辑 bug。
  • $pattern:从补丁和复现器中提取 bug 模式,然后在代码的特定区域搜索类似问题。

循环

在单独的工作树上运行 harness,并生成一次子代理通常是不够的。

那些提示可以放入一个无限循环中:调查一个发现,修复它,审查修复,并在其他地方搜索相同的模式。跟进一份 Anthropic 报告可能会发现另外四个 bug。

我手动检查了每一个新发现。最初的 372 份报告增长到大约 1,500 个发现,包括重复项和需要更广泛重新设计的问题。这有很多要处理,但它也让我更清楚地了解代码需要在哪里工作,以及接下来哪些更改值得做。

报告

在这个数量级上,咨询工作本身就成了一个项目。对于每个案例,我需要审查报告、复现 bug、评估其影响、确定引入它的提交、检查修复是否覆盖相关案例,并全部记录下来。

没有更好的工具,我无法做到这一点,所以我写了 gsadv:一个用于注册安全咨询、请求 CVE 以及使用不同 agent harness 分析报告的 TUI。

这个工具显然需要它自己的文章!

推动 r2 前进

AI 正在为 r2 带来更多贡献者,以及审查他们贡献的新颖更好的方式。它帮助我们发现更多 bug、探索替代方案,并基于我们实际可以测试的代码做出更好的设计决策。

也许我太老了,不能只在第一个提示后盲目合并每个提交,或者在没有人参与循环的情况下自动化,但确实它显然带来了不同,将软件开发的繁重工作提升到另一个水平,帮助我学习新技能并专注于重要的事情,而不是花几天时间手动测试我想到的 5 个不同选项的性能影响。

R2Land 中的迷思

这加快了整个流程,从想法或 bug 报告,到测试、基准测试、重新设计以及审查每一处更改。仍有很多工作要做,但这些工具有助于我们让 r2 保持更新,并推动它朝着目标前进:成为用于智能体逆向工程的最佳软件。

The translation is machine-generated and individual terms may be off. Nothing is rewritten or cut; the original is authoritative.

Published by Lobsters
This site only summarises and aggregates; copyright stays with the original author. Headlines and summaries follow the source — where they differ, the original wins.
Read the original ↗