[论文解读] LLMs Cannot Reliably Identify and Reason About Security Vulnerabilities (Yet?): A Comprehensive Evaluation, Framework, and Benchmarks
本文通过一种新颖的全自动化框架,评估了当前最先进大语言模型(LLMs)在检测和推理软件安全漏洞方面的能力。尽管具备先进能力,LLMs 仍表现出较高的误报率、非确定性输出、不忠实的推理过程以及较差的鲁棒性——尤其是在面对代码的微小改动时,表明其尚未足够可靠以用于实际漏洞检测。
Large Language Models (LLMs) have been suggested for use in automated vulnerability repair, but benchmarks showing they can consistently identify security-related bugs are lacking. We thus develop SecLLMHolmes, a fully automated evaluation framework that performs the most detailed investigation to date on whether LLMs can reliably identify and reason about security-related bugs. We construct a set of 228 code scenarios and analyze eight of the most capable LLMs across eight different investigative dimensions using our framework. Our evaluation shows LLMs provide non-deterministic responses, incorrect and unfaithful reasoning, and perform poorly in real-world scenarios. Most importantly, our findings reveal significant non-robustness in even the most advanced models like `PaLM2' and `GPT-4': by merely changing function or variable names, or by the addition of library functions in the source code, these models can yield incorrect answers in 26% and 17% of cases, respectively. These findings demonstrate that further LLM advances are needed before LLMs can be used as general purpose security assistants.
研究动机与目标
- 探究当前 LLM 是否能可靠地识别和推理真实代码中的软件安全漏洞。
- 解决当前缺乏标准化、自动化基准用于评估 LLM 在漏洞检测任务中表现的问题。
- 识别 LLM 行为中的关键缺陷,如非确定性、不忠实的推理以及对代码扰动的敏感性。
- 为未来 LLM 在网络安全领域的开发提供公开可用、可扩展的评估框架。
- 建立一个基准,以系统化追踪 LLM 在漏洞检测能力方面的进展。
提出的方法
- 开发了一个全自动化、可扩展的评估框架,用于在八个不同维度上测试 LLM:确定性、参数敏感性、提示多样性、推理忠实度、漏洞多样性、代码难度、对代码增强的鲁棒性以及真实世界适用性。
- 构建了 228 个代码场景,涵盖 C 和 Python 中八种关键漏洞(如缓冲区溢出、注入缺陷)及其每种场景的真值标签。
- 在八种最先进 LLM(如 GPT-4、PaLM2、CodeLlama)上应用了 17 种不同的提示技术,包括零样本提示、少样本提示和角色导向提示。
- 使用 GPT-4 提取并验证 LLM 输出中的答案和推理过程,确保结构化解析以保证一致性和准确性。
- 采用多指标推理评估方法,结合 ROUGE、余弦相似度和 GPT-4 判断,以评估推理质量并减少误报。
- 在超出其知识截止日期的真实世界 CVE 上评估模型,以测试其泛化能力和鲁棒性。
实验结果
研究问题
- RQ1LLMs 是否能在多样化的编程场景中一致且可靠地识别源代码中的安全漏洞?
- RQ2LLMs 对于诸如函数重命名、添加库导入或更改空白字符等微小代码修改有多强的鲁棒性?
- RQ3LLMs 在识别漏洞时提供推理的忠实度如何?其推理在多大程度上是错误或虚构的?
- RQ4不同的提示策略(如零样本 vs. 少样本、角色导向)在漏洞检测任务中如何影响 LLM 的性能?
- RQ5LLMs 是否能泛化到训练过程中未见过的真实世界漏洞,特别是那些在知识截止日期之后发布的漏洞?
主要发现
- LLMs 表现出极高的误报率,在 26% 的情况下将已修复代码错误地标记为存在漏洞,表明其在生产环境中可靠性差。
- 即使是顶级模型如 PaLM2 和 GPT-4 也表现出非确定性行为,对同一输入在多次运行中答案不一致。
- LLMs 经常提供不忠实的推理:当它们正确识别出漏洞时,其解释往往错误或逻辑有缺陷。
- 思维链推理脆弱——仅通过函数名更改或添加库导入等简单代码增强,即导致 26% 和 17% 的错误输出。
- LLMs 无法泛化到知识截止日期之后发布的真实世界 CVE,对多个测试用例产生错误答案。
- 零样本角色导向提示 'R2' 在所有提示策略中表现最佳,但仍不足以支持实际中的可靠部署。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。