Linus 9 年前说「模糊测试有效」——今天已成 OSS-Fuzz 时代铁律

2017 年 10 月 Linux 4.14 RC5 发布时,Linus Torvalds 在邮件列表里罕见地夸了一段 fuzzing------这位平时对工具和方法论保持距离的工程师,这次直接说「很高兴可以看到」人们在驱动子系统等地方做针对性的模糊测试。那时候 Google 的 OSS-Fuzz 才运行一年多,syzkaller 还在内部孵化,微软同期推出 Project Springfield(后改名 Security Risk Detection)想把 fuzzing 商业化。Linus 那段话当年是 Linux 内核安全史的转折点------把 fuzzing 从「少数派用的额外工具」定调为「系统性提升内核安全的关键方法」。

9 年后回看,syzkaller 帮内核找了 5000+ bug,OSS-Fuzz 覆盖 1000+ 项目,KASAN / KCSAN 进内核主线。Linus 当年的判断完全被验证,但他 9 年前没料到的是------fuzzing 在 AI 时代反而更重要,因为 AI 生成的代码量、可读性、单元测试覆盖都不如人类写的。

文章讲了啥

ZDNet 报道了 Torvalds 在 4.14 RC5 发布说明里关于 fuzzing 的言论,整篇文章围绕一段简短但份量重的引语展开:

另外值得一提的是人们做了多少随机化模糊测试,而且这正在发现东西。我们一直在做模糊测试(谁还记得只是生成随机代码,并跳转过去的老 "crashme" 程序?我们过去很早就这样做),人们在驱动子系统等方面做了一些很好的针对性模糊测试,而且已经有了各种各样的修复(不仅仅是上周的这些)。很高兴可以看到。

Linus 这段话可以拆成几个论点。

第一,fuzzing 不是新技术。1991 年的 crashme 就是最早的 fuzz 工具之一------它随机生成代码并跳转过去,看系统会不会崩。Linux 内核社区用 fuzzing 至少 20 年,但 2017 年之前这事没人系统性投入。

第二,targeted fuzzing 是关键。随机化测试 + 针对特定子系统的深度测试双管齐下,比纯随机 fuzz 有效得多。Linus 当时在夸的具体工具是 Google 的 syzkaller(前身是 trinity 和 ikos),它针对特定系统调用做深度 fuzzing。

第三,驱动子系统已被 fuzz 覆盖。Linux 内核代码里驱动占了大约 70%,也是 bug 最密集的地方。targeted fuzzing 的重点就是驱动子系统。

第四,已发现大量 bug。不仅是 4.14 这一版本,「各种修复」贯穿了多个版本------这是 Linus 在用 release notes 的口吻告诉业界:fuzzing 已经在持续产出成果。

第五,Linus 罕见肯定。Torvalds 通常对工具和方法论保持距离,邮件列表里他的语气一般是「这个 bug 必须修」或「这个设计不行」。这次他直接说「很高兴可以看到」,是他少有的对工具方法论点赞。

第六,Linux 4.14 是个 LTS。这是个延伸论点------4.14 内核被多家厂商选作长期支持版本,fuzzing 找出的 bug 修复会进入未来多年生产环境。

ZDNet 那篇报道同时指出,Google 用各种 fuzzing 工具来查找它及其它供应商软件中的错误。微软同期推出 Project Springfield(后改名 Security Risk Detection)做商业化 fuzzing 服务。

重读

这些观点今天还成立吗

  • targeted fuzzing 比随机 fuzz 有效 ------ syzkaller 已成为 Linux 内核持续 fuzzing 的工业标准
  • fuzzing 能发现驱动子系统 bug ------ syzkaller 在 9 年里发现超过 5000 个 Linux 内核 bug
  • Linus 重视 fuzzing 工具 ------ Linux 内核已内置 KASAN、KCSAN、syzkaller 集成
  • fuzzing 是开源安全的关键工具 ------ Google OSS-Fuzz 已覆盖 1000+ 开源项目
  • ⚠️ 内存安全漏洞是主要威胁 ------ Rust for Linux 6.1+ 合并,开始用类型安全语言重写

Torvalds 当时不会想到的变量是 Rust for Linux

9 年后看,syzkaller 是 Torvalds 当年判断的最强注脚。Google 的 syzkaller 是 Linux 内核持续 fuzzing 的工业标准,9 年里发现超过 5000 个内核 bug,其中相当一部分是安全相关的内存错误。syzkaller 的设计哲学就是 Torvalds 当年说的「targeted fuzzing」------针对特定系统调用、特定驱动做深度 fuzzing。

Linus 当时不会想到的变量是 Rust for Linux。2022 年 6.1 内核合并了 Rust 基础设施,2026 年 Linux 内核中 Rust 代码已达数万行。fuzzing 找的是「已写错的 C 代码」,Rust 直接在类型系统层消灭了大部分内存错误------这是 Torvalds 当年方法论的自然延伸。

AI Agent 元年让 fuzzing 更重要

2026 年是 AI Agent 元年。AI 生成的代码反而让 fuzzing 变得更重要------AI 生成的代码量大、可读性差、单元测试覆盖低,AI Agent 写代码时容易产生边界错误、空指针解引用,大量 AI 生成的「小工具」、「小脚本」、「小胶水代码」涌入生产,人类 reviewer 越来越难 catch AI 写的微 bug。

fuzzing 9 年前是「高阶安全工具」,今天成了「AI 代码唯一可靠的验证手段」。LibFuzzer、AFL、honggfuzz 在 AI 代码生态里被广泛集成。

「fuzzing 有效」的前提是有钱有时间

2017 年 Torvalds 那段关于 fuzzing 的话,背景是 Google 投了大钱做 OSS-Fuzz、Microsoft 投了大钱做 Project Springfield、各大厂都有自己的安全团队。但 9 年后看,fuzzing、代码审计、安全响应这些「隐性基础设施」的投入是永远追不上漏洞产生速度的------Torvalds 9 年前夸 fuzzing 时,OSS-Fuzz 才运行 1 年;9 年后 OSS-Fuzz 覆盖 1000+ 项目,但每天仍有新的 CVE 爆出。

真正决定开源项目安全的,不是「投入多少钱」------是「维护机制是否可持续」 。Heartbleed 后的 CII、log4j 后的 OpenSSF、xz 后的 Alpha-Omega,都是在反复试错「如何让开源维护可持续」。9 年后回头看,「开源安全靠大公司投钱」这条路走到了尽头 :Google、Microsoft、IBM 这几家投了几十亿美元在开源安全上,但 xz-utils 后门证明单点失守仍然能让这些投入付之东流;AI 时代下,开源代码的「生成速度」远超过「审计速度」------投入再多钱也审计不过来。

真正能解决开源安全的,不是「更多钱」------是「维护者激励 + 自动化验证 + 分发链协同」这三件事 。少问「开源安不安全」,多问「这个项目的维护者是否在拿工资」------这才是 2026 年该问的真正问题。Torvalds 9 年前说 fuzzing 有效是技术判断;但 9 年后看,「fuzzing 有效」的前提是有钱、有时间、有能力去跑 fuzzingFuzzing 本身是机制不是道德------一个维护者工资没着落的项目,再多 fuzzing 工具也救不了。


出处

相关推荐
Dola_Zou3 小时前
工厂智能排产软件算法保护与按产线计费实战
算法·自动化·软件工程·软件加密
tedcloud1233 小时前
Wand-Enhancer 怎么搭建?开源 Wand 客户端增强与远程控制工具介绍
大数据·服务器·人工智能·开源·音视频
传奇开心果编程4 小时前
【xilem0.4基础语法学与练】第13课:Xilem 0.4 最简短代码体现“一切皆设计图“
学习·rust·前端框架
云卷云舒___________4 小时前
搭载豆包助手!努比亚新机首发,GPT-6 Sol内测曝光,小米MiMo杀入桌面 | 9月9日 AI日报
ai·智能体·豆包·ai日报·gpt6·努比亚·小米mimo
嘉琪coder4 小时前
我做了一个 Chrome 扩展,把 YouTube 播放列表批量变成 AI 可读的本地 Markdown
chrome·开源·浏览器
ii_best6 小时前
安卓脚本/ios开发软件按键精灵实战:自动定位弹窗广告关闭按钮坐标的通用方案
android·ios·自动化
熊猫钓鱼>_>6 小时前
免费域名的隐秘陷阱与网站稳定部署实战:火山引擎到底行不行?
人工智能·ai·llm·域名·火山引擎·引擎·火山
bosins6 小时前
WSL 迁移指南:如何将 Linux 环境完整复制到另一台电脑
linux·运维·服务器
冬奇Lab7 小时前
一天一个开源项目(第214篇):AstronRPA —— 科大讯飞开源的企业级 RPA + AI Agent 自动化平台
人工智能·开源·资讯
企鹅的蚂蚁8 小时前
LubanCat RK3588 实时 Linux 开发(六):启用 gs_usb 驱动并完成 USB-CAN 收发
linux·rk3588·linux驱动·socketcan·gs_usb·usb-can