为了加快向内存安全编程语言的过渡,美国国防部高级研究计划局(DARPA)正在推动程序代码转换工具 TRACTOR 的开发。TRACTOR 是 TRanslating All C TO Rust 的缩写,该项目旨在开发机器学习工具,自动将旧 C 代码转换为 Rust 代码。
DARPA 表示希望能够通过 AI 模型推动编程语言的转换,从而使软件更加安全。TRACTOR 的 DARPA 项目经理 Dan Wallach 在一份声明中表示:
“你可以访问任何一个 LLM 网站,开始与其中一个 AI 聊天机器人聊天,你只需要说'这里有一些 C 代码,请把它翻译成安全的惯用 Rust 代码',然后剪切、粘贴,就会有结果,而且通常效果很好......研究的挑战在于大幅提高从 C 到 Rust 的自动转换能力,特别是对于最相关的程序构造。”
过去几年来,包括谷歌和微软在内的科技巨头一直在宣传内存安全漏洞带来的问题,并推广使用 C 和 C++ 以外不需要手动内存管理的语言。这些消息也引起了拥有大量遗留代码的美国政府公共部门的注意,并促使白宫和美国网络安全和基础设施安全局(CISA)鼓励使用内存安全编程语言--主要是 Rust,还有 C#、Go、Java、Python 和 Swift。
尽管有 C/C++ 开发人员反驳说,只要正确遵守 ISO 标准并认真应用测试工具,就可以取得类似的结果。但 DARPA 最新的表态指出,经过二十多年的努力,解决 C 和 C++ 的内存安全问题后,软件工程界已经达成共识;国家网络总监办公室呼吁采取更多措施,使软件更加安全,"仅仅依靠错误查找工具是不够的"。
Wallach 向 The Register 表示,TRACTOR 项目的目标是实现高度自动化,因此需要克服一些棘手的技术挑战。
“例如,当你要求 LLM 翻译代码时,LLM 可以给出出人意料的好答案,但它们也会幻化出错误的答案。另一个挑战是,C 语言允许代码使用指针(包括算术),而 Rust 禁止使用指针。要弥合这一差距,需要的不仅仅是从 C 到 Rust 的转换。”
当被问及 DARPA 是否考虑过转换任何特定的代码库时。Wallach 则表示没有任何具体的计划,但 Linux 内核是明确不在范围内的,“因为它们有 Rust 无法解决的技术问题”。