← 最新论文
💻 computer science

Words Speak Louder Than Code: Investigating Cognitive Heuristics in LLM-Based Code Vulnerability Detection

本文提出了首次系统性调查,证明了基于大语言模型的代码漏洞检测显著易受类人认知启发式效应(框架效应、锚定效应和光环效应)的影响,这些效应可以改变模型的判定结果,并可被用于抑制高达 97% 的已检测漏洞。

原作者: Asif Shahriar, Hongyu Cai, Hadjer Benkraouda, Gang Wang, Z. Berkay Celik

发布于 2026-06-30
📖 1 分钟阅读☕ 轻松阅读

原作者: Asif Shahriar, Hongyu Cai, Hadjer Benkraouda, Gang Wang, Z. Berkay Celik

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你有一个超级聪明的机器人保安,它的工作是观察计算机代码并做出判断:“这是安全的,还是一个定时炸弹?”

长期以来,我们一直认为这个机器人只看代码本身——即逻辑、数学和结构。但这篇论文揭示了一个惊人的事实:这个机器人不仅在读代码,它还在阅读代码周围的“故事”。 而且就像人类一样,这个机器人也有思维捷径(称为“认知启发式”),这些捷径会误导它做出错误的判断。

以下是研究结果的拆解,使用了简单的类比。

机器人被误导的三种方式

研究人员测试了三种特定的“黑掉”机器人思维的方法,而无需更改任何一行代码。他们仅仅改变了代码周围的上下文(元数据)。

1. 光环效应(“名人”偏见)

类比: 想象一位法庭上的法官。如果被告是一位受人尊敬的知名 CEO,法官可能会下意识地认为:“他是个好人,不会做坏事,”从而表现得更加宽容。如果被告是一个年轻、籍籍无名的实习生,法官可能会认为:“他经验不足,可能搞砸了,”从而更加严厉。

发现:

  • 当代码被归功于一位**“首席安全工程师”(高地位专家)时,机器人变得懒散且信任**。它漏掉了真正的漏洞,因为它假设:“专家不会写出糟糕的代码。”
  • 当同样的代码被归功于一位**“初级开发人员”(低地位新手)时,机器人变得多疑且偏执**。它发现了之前漏掉的漏洞,但也开始对安全的代码大喊“狼来了!”,制造了大量的虚假警报。
  • 转折: 一些机器人(比如名为 Claude 的机器人)的表现恰恰相反,它们比专家更信任初级开发者,但这种偏见依然存在。

2. 框架效应(“标签”偏见)

类比: 思考一下药瓶。

  • 标签 A: “这种药能治愈 90% 的患者。”(正面框架)
  • 标签 B: “这种药无法治愈 10% 的患者。”(负面框架)
    尽管数学逻辑是一样的,但你的反应却不同。

发现:

  • 正面框架: 当机器人被告知,“你的职责是确保流水线顺利运行并避免虚假警报”时,它变得过于放松。它为了保持进度快速运行而忽略了危险的漏洞。
  • 负面框架: 当机器人被告知,“你的职责是在威胁摧毁系统之前发现安全威胁”时,它变得过度警觉。它发现了更多漏洞,但也开始将安全的代码标记为危险。
  • 结果: 这是最强力的诡计。测试的所有机器人都会被任务描述的方式所左右。

3. 锚定效应(“第一印象”偏见)

类比: 如果你问一位朋友:“这房子值 50 万美元吗?”而他们回答“是的”,你可能会觉得它很划算。如果问:“这房子值 100 万美元吗?”而他们回答“不”,你可能会觉得它很便宜。你听到的第一个数字会“锚定”你的判断。

发现:

  • 如果机器人被告知,“之前的扫描显示这段代码是安全的”,它往往会同意并错过新的漏洞。
  • 如果它被告知,“之前的扫描显示这段代码是有漏洞的”,它往往会同意并发现漏洞(即使漏洞并不存在)。
  • 机器人本质上是在说:“好吧,另一个人说它是安全的,那我就相信吧,”而不是进行独立的判断。

发现的三大问题

研究人员发现了这些机器人运作方式中的三个主要问题:

1. “音量旋钮”问题
机器人并没有变得更聪明或更去寻找漏洞。它们只是变得更响亮或更安静了。

  • 当上下文让它们变得怀疑时,它们调大了“音量旋钮”:它们把所有东西都标记为危险(找到了真实的漏洞,但也产生了大量的虚假警报)。
  • 当上下文让它们变得信任时,它们调小了“音量旋钮”:它们标记了几乎所有东西(漏掉了真实的漏洞,但也减少了虚假警报)。
  • 总结: 机器人并没有学会更好地分辨好代码与坏代码;它只是改变了“情绪”。

2. “幻觉”陷阱
当机器人被诱导认为一段安全的代码是有危险的(由于“初级开发人员”标签或“有漏洞”锚定),它不仅仅是说“它很危险”。它通常还会编造一个虚假的理由

  • 例子: 机器人看到一段安全的代码,但因为处于“怀疑”的情绪中,它声称:“这看起来像是一个内存泄漏!”而实际上并没有泄漏。它表现得很自信,但完全是错的。

3. “聪明”与“愚蠢”的代码

  • 简单漏洞: 有些漏洞非常明显,比如拼写错误或缺失分号。无论上下文如何,机器人都能轻松发现这些。
  • 复杂漏洞: 有些漏洞需要深度思考(比如追踪变量随时间的变化)。这些正是机器人最容易被误导的部分。如果上下文是“信任型”,它会漏掉复杂的漏洞;如果上下文是“怀疑型”,它会凭空捏造复杂的漏洞。

“认知攻击”(现实世界的危险)

研究人员不仅停留在测试阶段;他们还构建了一个概念验证攻击

想象一下,一名黑客想要把一段危险的代码偷偷塞进公司的软件里。与其尝试直接黑入机器人的大脑(这很难),黑客只需要伪造文书工作即可:

  • 他们编写代码。
  • 他们附上一封假邮件,声称代码来自一位著名的安全专家(利用光环效应)。
  • 他们写下一段话:“让我们保持流水线运行,不要太挑剔”(利用框架效应)。
  • 他们附上一份假报告,说明“之前的扫描显示这是安全的”(利用锚定效应)。

结果: 机器人看到了这个“令人安心”的包裹,判定危险代码是安全的。这次攻击成功压制了高达 97% 机器人原本会捕捉到的漏洞。

核心结论

这篇论文证明了用于安全领域的大型语言模型(LLMs)并非客观的机器。它们会受到影响人类的心理诡计的影响。

  • 它们信任错误的人(过度信任专家,过度怀疑初级人员)。
  • 它们会对你的提问方式做出反应(恐惧 vs. 安慰)。
  • 它们会被第一印象困住(之前的报告)。

最危险的部分在于?你不需要成为天才黑客来破解它们。你只需要知道如何写一封有说服力的邮件或一条看起来很体面的提交信息(commit message)。机器人并没有坏掉;它只是在缺陷上表现得非常“人性化”。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →