论文
安全的幻觉:人工智能与人类 C++ 代码的多层验证
The Illusion of Safety: Multi-Tier Verification of AI vs. Human C++ Code
摘要
随着 大语言模型 (LLM) 越来越多地部署用于系统编程,它们生成安全 C++ 代码的能力仍然是一个关键问题,其中单个内存安全故障会产生可利用的漏洞。然而,大多数人工智能生成代码的安全评估仅依赖于静态分析,静态分析会标记警告,但不会确认运行时违规或推理未经测试的路径。这项研究调查了人工智能生成的 C++ 是否明显不如人类编写的代码安全,以及常见的验证工具是否同意这种风险。我们引入了 VULBENCH-CPP,这是来自三个开放权重 LLM(Gemma 3 27B IT、LLaMA 3.3 70B Instruct、Qwen 2.5 Coder 32B Instruct)和人类作者在 851 个竞争性编程任务中的 8,918 个 C++ 程序的基准。每个程序都由四个验证层进行注释:功能测试、静态分析(cppcheck、clang-tidy)、动态分析(ASan/UBSan)和有界模型检查(ESBMC)。考虑到共享任务解决方案之间的相关性,我们发现,即使在控制了代码长度和测试通过率之后,人工智能生成的代码触发已确认的运行时违规的可能性大约是人类代码的两倍。在静态分析下,两者看起来同样安全,但这具有误导性:表面上的相似性反映了代码长度而不是真正的安全性,并且各层检测到的违规类别很大程度上不同,这表明没有一个单独的层是足够的。这些脆弱性模式在不同的世代中保持一致。我们发布基准、工具和带注释的结果。