中文

安全的幻觉:AI 与人类 C++ 代码的多层验证

软件工程 2026-06-30 v1

摘要

大型语言模型越来越多地生成 C++ 代码,这是一种内存不安全的语言,一个被忽视的违规行为就可能变成一个可利用的漏洞。然而,大多数对 AI 生成代码的安全评估仅依赖静态分析,这种分析只会标记警告,而不会确认运行时违规或对未测试路径进行推理。我们质疑 AI 生成的 C++ 代码是否在可测量程度上比人类编写的代码更不安全,以及常见的验证工具是否对风险有一致的看法。我们引入了 VULBENCH-CPP,这是一个包含 8,918 个 C++ 程序的基准测试,这些程序来自三个开放权重 LLM(Gemma 3 27B IT、LLaMA 3.3 70B Instruct、Qwen 2.5 Coder 32B Instruct)以及人类作者,涵盖了 851 个竞争性编程任务。每个程序都通过四个验证层级进行标注:功能测试、静态分析(cppcheck、clang-tidy)、动态分析(ASan/UBSan)和界限模型检查(ESBMC)。考虑到共享任务解决方案之间的相关性,我们发现,即使在控制代码长度和测试通过率之后,AI 生成的代码触发已确认运行时违规的可能性大约是人类代码的两倍。在静态分析下,两者看起来同样安全,但这具有误导性:表面上的相似性反映了代码长度而非真实安全性,并且各层级检测到的违规类别大多不同,因此没有单一层级是足够的。这种差距在独立生成中是一致的。

关键词

引用

@article{arxiv.2607.00107,
  title  = {The Illusion of Safety: Multi-Tier Verification of AI vs. Human C++ Code},
  author = {Saif Mahmud and Fadul Sikder and Yuede Ji and Zhang Haotian and Jeff and Lei},
  journal= {arXiv preprint arXiv:2607.00107},
  year   = {2026}
}