news 2026/5/30 22:54:25

花费超 1 万美元,用 AI 代理检测编译器代码,轻松发现数百漏洞!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
花费超 1 万美元,用 AI 代理检测编译器代码,轻松发现数百漏洞!

为乐趣而非利益寻找编译错误

过去十年,作者在谷歌、Waymo 和 OpenAI 从事机器学习编译器相关工作。过去一周,作者经历了职业生涯中最令人不安的事情之一:一个下午花费超 1 万美元,让 AI 代理对编译器代码进行检测,在 LLVM 中发现数百个可能存在的漏洞,包括许多编译错误,至少有一个问题相当严重。

个人项目:在 LLVM 中寻找漏洞

2026 年 1 月,作者开展个人项目,尝试在 LLVM 中寻找漏洞。作者和 Codex 合作编写了一个模糊测试器,基本思路是生成随机程序,让其通过编译器部分流程,检查编译后的程序是否与原始程序执行相同操作。作者花了几周时间,在 LLVM 的 instcombine 中发现并修复了五个漏洞。之后,模糊测试器找到新漏洞的速度变慢,作者便失去了兴趣。

转战 ptxas 编译器

2026 年 5 月中旬,作者作为承包商加入 SemiAnalysis,决定尝试将同样的技术应用于 NVIDIA 的底层编译器 ptxas。作者预计这次成果可能不如对 LLVM 进行模糊测试,原因有:模糊测试器可能陷入“困境”,闭源编译器修复漏洞较繁琐;使用 ptxas 需从头到尾运行整个编译器,可能降低发现漏洞的可能性;使用 LLVM 可添加检测信息,而对 ptxas 进行模糊测试时作者未使用相关模式,只是进行纯粹的无向模糊测试。然而,三天内作者就发现了 40 个 ptxas 编译错误的程序,一周后这个数字增加到约 80 个。

模糊测试器编写容易的原因

据作者所知,这是 ChatGPT 5.2 和 5.5 之间的差异造成的。作者全程通过与大语言模型(LLM)交流来编写模糊测试器,LLM 承担了修改模糊测试器、最小化测试用例等繁琐工作,作者只需使用 `/goal` 让它循环运行。

在 LLVM 的 AMDGPU 后端寻找漏洞

作者尝试在 LLVM 的 AMDGPU 后端寻找漏洞,速度与在 ptxas 中发现漏洞的速度大致相同。后来,作者改用 SemiAnalysis 的 Claude 账户,发现 Opus 4.7 和 ChatGPT 5.5 在质量上没有区别。

报告漏洞与修复情况

作者将发现的漏洞报告给了 AMD 和 NVIDIA。截至撰写本文时,AMD 已经修复了其中五个漏洞,由于其编译器是开源的,作者可以立即应用这些修复。

让 Claude 通读 LLVM 代码寻找漏洞

作者的 ptxas 和 AMDGPU 模糊测试器开始变慢,作者让 Claude 通读 LLVM 代码来寻找漏洞。Claude 每四分钟就能发现一个漏洞,相比之下,此时模糊测试器要花几个小时才能找到一个新漏洞。作者对 x86 后端也做了同样的操作,结果发现漏洞的速度几乎达到了每分钟两个。

漏洞的重要性与成本

自动查找漏洞面临“这些漏洞重要吗”的问题。代理发现的漏洞平均严重程度低于模糊测试器发现的漏洞,但有一个极其可怕的情况,LLVM 会将原子存储操作转换为两个非原子存储操作,通过模糊测试很难发现这个漏洞。通过与 LLM 交流编写的模糊测试器成本相对较低,而让大量子代理读取代码的成本较高,作者在几个小时内就花费了超过 1 万美元。尽管通过这种方式发现的漏洞平均严重程度低于模糊测试发现的漏洞,但代码检查能够发现一些通过模糊测试很难发现的漏洞类别,对作者来说很有价值。

总结与思考

作者认为这不仅仅是“有了足够多的子代理,所有漏洞都能轻易被发现”这么简单,也许教训是:五个月前不可能做到的事情,现在只是“代价高昂”而已。作者预计在接下来的几个月里,预算不足的人与有预算的人在探索可能性空间上的差距会越来越大。最后,作者思考了六个月后 SemiAnalysis 愿意为令牌支付多少钱,以及那些没有预算或者不愿意支付的个人和公司的生活会变成什么样。同时,作者不确定给 Opus 5.7(甚至 4.7)足够的令牌,它能否通过读取汇编代码来发现 ptxas 的漏洞。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 22:53:37

36V转5V,3.3V降压芯片,大电流方案需注意LDO后级耐压与散热

36V 转 5V / 3.3V 电源方案选型指南。将 36V 降至 5V 或 3.3V 为后端 MCU、传感器、通信模块供电时,设计人员面临以下核心挑战:输入输出压差大:36V 到 3.3V 的压差高达 32.7V,若采用线性方案,压损几乎全部转化为热损耗…

作者头像 李华
网站建设 2026/5/30 22:53:36

强力解决方案:手机号码定位系统如何重塑企业验证流程

强力解决方案:手机号码定位系统如何重塑企业验证流程 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_mirro…

作者头像 李华
网站建设 2026/5/30 22:52:13

当Android遇上QNX:一次高通Hypervisor Display框架的实战调试与问题定位

当Android遇上QNX:高通Hypervisor Display框架的深度调试实战 去年在车载信息娱乐系统开发中遇到一个棘手问题:屏幕突然卡死,但系统日志没有任何明显错误。通过抓取SurfaceFlinger的backtrace,发现它卡在了ioctl调用上。这让我意识…

作者头像 李华
网站建设 2026/5/30 22:50:56

避坑指南:HBase 2.x 环境搭建与Java连接那些常见的“坑”及解决方案

HBase 2.x 实战避坑指南:从环境搭建到Java连接的全流程解决方案1. HBase环境搭建的常见陷阱与解决方案搭建HBase开发环境时,开发者常会遇到各种"坑"。以下是几个典型问题及其解决方案:Master节点初始化失败日志中出现PleaseHoldExc…

作者头像 李华
网站建设 2026/5/30 22:49:16

3DS自制软件终极管理方案:Universal-Updater一键安装与更新指南

3DS自制软件终极管理方案:Universal-Updater一键安装与更新指南 【免费下载链接】Universal-Updater An easy to use app for installing and updating 3DS homebrew 项目地址: https://gitcode.com/gh_mirrors/un/Universal-Updater 还在为繁琐的3DS自制软件…

作者头像 李华
网站建设 2026/5/30 22:48:59

用HX711压力传感器做个厨房电子秤:从Arduino到STM32的完整DIY教程

从零打造智能厨房秤:HX711传感器与多平台开发实战厨房秤是烘焙爱好者和健康饮食追求者的必备工具,但市售产品往往功能单一。本文将带你用HX711压力传感器打造一个可定制化的智能厨房秤,支持Arduino和STM32双平台。不同于简单的技术堆砌&#…

作者头像 李华