我们在约 40MB 的二进制文件中隐藏了后门,并让 AI 结合 Ghidra 尝试找出它们
Hacker News 摘要原标题:We hid backdoors in ~40MB binaries and asked AI + Ghidra to find them
Quesma 团队进行了一项实验,他们在大小约为 40MB 的二进制可执行文件中隐藏了后门,并测试 AI 代理结合 Ghidra 等工具是否能发现这些恶意代码。虽然 Claude 等 AI 模型展现出了专业逆向工程的能力,但目前还无法用于生产环境。表现最好的模型 Claude Opus 4.6 仅能发现 49% 的明显后门,且误报率很高。
实验背景与意义
数字设备的安全威胁日益严峻,从供应链攻击到固件漏洞,恶意代码的检测变得至关重要。传统的二进制分析是一个漫长且乏味的过程,需要将机器码转化为汇编语言,再转化为伪 C 代码。由于编译过程会丢失原始代码的结构、变量名和函数名,分析者面对的是诸如 FUN_00130550 这样毫无意义的名称。Quesma 与逆向工程专家 Michał Kowalczyk 合作,创建了名为 BinaryAudit 的基准测试,旨在评估 AI 在这一领域的实际表现。
实验设计与方法
研究人员选择了几个开源项目作为基础,包括 C 语言编写的 lighttpd 网页服务器、dnsmasq 网络服务器、Dropbear SSH 服务器,以及 Rust 编写的 Sozu 负载均衡器。他们在这些项目中手动注入了后门,例如允许攻击者通过未公开的 HTTP 请求头执行命令。
实验中,AI 代理无法获取源代码或调试符号,只能通过 Ghidra、Radare2 和 binutils 等开源工具分析二进制文件。AI 需要确定文件是否存在后门,并指出含有恶意代码的函数起始地址。
成功的案例:lighttpd 后门检测
在一个 lighttpd 服务器的案例中,研究人员注入了一个通过 X-Forwarded-Debug 请求头执行 shell 命令的后门。Claude Opus 4.5 在 5 分钟内完成了以下识别过程:
• 识别共享库:模型识别出二进制文件及其依赖的 26 个共享库。
• 搜索敏感模式:通过 strings 命令查找 shell、bash、exec 等关键词,起初并未发现异常。
• 检查导入函数:模型使用 nm -D 列出导入函数,发现 liblighttpd2-shared.so 库调用了 popen() 函数。
• 深度分析:模型利用 Radare2 反编译器定位到调用 popen() 的具体函数 li_check_debug_header。
• 确认后门:通过分析伪代码,模型确认该函数会读取特定请求头并执行攻击者提供的命令,最终成功定位后门。
失败的案例:dnsmasq 逻辑合理化
即使是明显的后门,AI 也经常漏掉。在 dnsmasq 的测试中,研究人员添加了一段只有 7 行的代码:如果收到包含特定选项的 DHCP 数据包,则执行其内容。
Claude Opus 4.6 虽然在初期就发现了 /bin/sh 字符串,并追踪到了包含后门的精确函数,但它却通过逻辑推导说服了自己。它认为这段代码是 dnsmasq 用于执行租约脚本的正常功能,从而忽略了风险。这种“脑补”行为是当前 AI 代理的一个严重缺陷,它们缺乏区分恶意逻辑与正常功能的高级直觉。
核心挑战与限制
实验揭示了 AI 在处理复杂二进制分析时的几个主要瓶颈:
• 大海捞针:二进制文件包含数千个函数,而后门往往只有十几行代码,AI 容易在无关的良性代码中迷失方向,耗尽上下文窗口。
• 高误报率:AI 经常产生幻觉。在测试纯净的二进制文件时,模型在 28% 的情况下会报告不存在的后门。Gemini 3 Pro 甚至曾虚构一段不存在的代码逻辑,声称某个配置选项会导致命令执行。
• 开源工具差距:虽然 AI 可以熟练操作 Ghidra 和 Radare2,但这些开源工具在处理 Go 语言编写的大型文件时效率极低。相比之下,商业软件 IDA Pro 的表现要好得多。
• 环境依赖:安全敏感机构无法将机密二进制文件上传到云端,因此未来可能需要针对恶意软件检测进行微调的本地模型。
结论与展望
目前,AI 还不能作为端到端的自动化恶意软件检测方案。Claude Opus 4.6 的成功率为 49%,Gemini 3 Pro 为 44%,Claude Opus 4.5 为 37%。虽然准确率尚不足以投入实战,但 AI 已经极大降低了逆向工程的门槛。
对于没有深厚逆向背景的开发者来说,AI 可以辅助进行初步的安全审计。随着上下文工程的优化和对商业逆向工具访问权限的开放,AI 在底层优化、硬件调试和代码移植等领域的潜力将进一步释放。所有相关的任务和基准测试结果均已在 GitHub 的 quesmaOrg/BinaryAudit 仓库开源。