谷歌用 Gemini 将 giflib 的 C 代码改写为 Rust

谷歌安全团队用 Gemini 加自动化差异模糊测试,把约 3000 行的 C 图像库 giflib 迁移为内存安全的 Rust 实现,并以开源项目 giflib-rs 的形式发布,性能与原版持平。

一句话看懂:谷歌安全团队用 Gemini 加自动化差异模糊测试,把约 3000 行的 C 图像库 giflib 迁移为内存安全的 Rust 实现,并以开源项目 giflib-rs 的形式发布,性能与原版持平。

事件核心:发生了什么

谷歌工程师 Bastian Kersting 和 Max Hils 披露了一条自动化语言迁移路径:先用一次性提示词让 Gemini 把 giflib 的完整逻辑翻译成 Rust,再通过自动化差异测试引擎把行为偏差反馈给模型迭代修补。该库规模约 3000 行,长期在无沙箱隔离的情况下解码用户输入,属于典型的高风险遗留组件。

团队保留了原有导出符号和结构体定义,实现 ABI 兼容、可直接替换。验证环节对超过 3000 万个真实 GIF 文件做回归解码,逐比特比对渲染结果;差异模糊测试器连续六天并排运行两个版本,累计执行 2 亿次迭代未发现功能漂移。该流程还暴露出 LZW 解压器的一处边缘情况,以及一个由早期 C 补丁引入的内部越界写入问题。最终成果已开源为 giflib-rs。

为什么重要

内存损坏类漏洞在成熟 C/C++ 代码栈的高危漏洞中约占 70%,手工重写这类依赖通常要耗费数年。这条流程说明,大模型可以承担大部分机械翻译工作,而差异模糊测试则用来提供可验证的等价性证据——这比单纯宣称“AI 写代码更快”更有工程意义。项目最有力的验证出现在预发布阶段:外部研究人员在上游 giflib 中发现的堆写入漏洞后来被编目为 CVE-2026-26740,谷歌的 Rust 替代版本在生产节点上从底层不受该漏洞影响。

性能方面,全球图像解码集群的监控数据显示 Rust 二进制与原版 C 程序运行性能持平,强制的内存安全被移入类型系统后,此前用于隔离解码任务的传统操作系统沙箱可以移除,P99 尾部延迟因此下降。

对用户/开发者/创作者的影响

对处理不可信输入的开发者而言,这次迁移提供了一种无需沙箱隔离即可降低漏洞面的参考实现。不过作者明确指出,这不是可以完全放手不管的方案:上游每次发布新功能或架构改动,都会造成持续的维护分叉;FFI 封装层仍需领域专家检查生命周期泄漏与线程安全约束。目前公开信息显示,该案例规模较小且相对自包含,社区讨论也普遍质疑“一次性直接翻译”能否平移到更大代码库,不少人认为先用确定性转译器再让 AI 重构为地道 Rust 更可靠。

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

值得关注的后续

一是 giflib-rs 是否被更多开源或商业项目实际集成,而不仅是作为参考示例;二是这套“Gemini 翻译加差异模糊测试”流程能否复制到规模更大、依赖更复杂的 C/C++ 代码库;三是它与 c2rust 等确定性转译路线的分工是否会逐渐清晰。相关社区评论仅代表讨论者观点,不代表项目团队的官方结论。

来源:InfoQ CN

celebrityanime
celebrityanime
文章: 28629

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注