论文

LLM4C2Rust:用于自动内存安全代码转译的 大语言模型

LLM4C2Rust: Large Language Models for Automated Memory-Safe Code Transpilation

摘要

内存安全长期以来一直是软件工程中的一个关键挑战,特别是对于用内存不安全语言(例如 C 和 C++)编写的遗留系统。 Rust 是最年轻的现代编程语言之一,提供内置的内存安全保证,使其成为安全系统开发的有力候选者。因此,将 C/C++ 代码转译为内存安全的 Rust 代码已成为一个不断发展的研究领域。然而,手动转译通常非常耗时且容易出错。此外,基于规则的自动化方法不如最先进的 AI 模型、技术和方法所支持的方法灵活或经济高效,例如部署 大语言模型 (LLM) 的方法,例如生成预训练 Transformer (GPT)。在本文中,我们提出了一种检索增强生成 (RAG) 辅助框架,该框架将 LLM 与小语言模型 (SLM) 集成,以执行 C/C++ 到 Rust 的转译,重点是增强内存安全性。该框架部署了一种分段策略,该策略在平衡块中处理 C/C++ 代码,通过从 Rust 文档和编译器错误参考中检索到的上下文来指导 LLM。我们使用三个 OpenAI 模型(GPT-4o、GPT-4-Turbo 和 o3-Mini)进行的实验表明,RAG 增强的管道通常可以提高 C 到 Rust 代码转译的代码正确性和安全性。多个 Coreutils 程序在最终 Rust 输出中完全消除了原始指针取消引用 (RPD) 和不安全类型转换 (UTC),这表明基于 LLM 的转译在推进自动化软件现代化和修复以及内存安全代码生成方面具有潜力。