谷歌用AI将C库改写为Rust,内存安全新范式

谷歌安全团队利用Gemini大模型,成功将约3000行代码的图像处理库giflib从C语言迁移至Rust。这一自动化迁移流程不仅消除了潜在的内存安全漏洞,还在性能上与原版C代码持平,为大规模遗留系统改...

人工智能

在软件安全领域,谷歌近日宣布了一项重大进展:通过人工智能技术,成功将一个广泛使用的C语言图像处理库giflib迁移至内存安全的Rust语言。这项工作由谷歌安全工程师Bastian Kersting和Max Hils主导,标志着AI辅助代码迁移进入了一个新阶段。

核心项目对象是giflib,这是一个约3000行代码的图像处理库,常用于解码不受信任的用户输入。团队采用了一套三阶段自动化流程:首先使用Gemini大模型进行一次性翻译,将C代码转换为Rust语法;其次对生成的Rust代码进行外部函数接口(FFI)建模,确保ABI兼容性;最后通过差异模糊测试引擎验证两个版本的功能一致性。

"我们选择不依赖传统的运行时边界检查,而是设计了一个自主反馈循环的迁移流程。"Kersting解释道。该流程的关键在于,它能够在不破坏原有功能的前提下,消除C语言代码中常见的内存安全漏洞。例如,在迁移过程中,团队发现并修复了一个尚未公开的堆写入零日漏洞(CVE-2026-26740),这表明架构级的语言迁移能够从根本上预防一类漏洞的发生。

值得注意的是,尽管Rust通常被认为会带来额外的运行时开销,但谷歌的测试数据显示,迁移后的Rust版本与原C版本在性能上完全相当。更重要的是,由于Rust的类型系统特性,平台工程师可以移除之前为隔离图像解码任务而设置的传统操作系统沙箱,从而显著降低延迟。

"AI代码翻译并非万能药。"Hils补充道,"每当上游发布新功能或架构改动时,维护分叉的Rust库仍然需要人工介入。特别是外部函数接口封装部分,仍需领域专家确保生命周期和线程安全约束不被破坏。"

这项成果得到了业界的广泛关注。r/rust社区普遍认为,谷歌的实践证明了AI辅助迁移的可行性,但也指出对于更大规模的代码库,可能需要结合确定性转译工具(如c2rust)来提高可靠性。

谷歌已经将生成的Rust版本开源,项目名为giflib-rs,供其他团队参考。这一案例不仅展示了AI在代码迁移中的潜力,也为未来大规模遗留系统改造提供了宝贵经验。

文章配图

图1展示了谷歌团队实现C到Rust迁移的核心流程:从原始C源码开始,经过Gemini的一次性翻译生成中间Rust抽象语法树(AST),再通过FFI和安全层细化,最终生成与原C库功能等价的Rust库,并通过差异模糊测试引擎验证。

此外,谷歌的这项工作也呼应了当前业界对内存安全语言的关注。例如,谷歌Chrome浏览器已于2026年10月正式支持JPEG XL图片格式,其解码器完全采用Rust编写,实现了硬件级性能和内存安全双重保障。这表明,从C到Rust的迁移正在成为提升现代软件安全性的主流趋势。