← 最新论文
🤖 machine learning

Detecting Contaminated Code-Generation Prompt Batches via Influence Functions

该论文介绍了 CodeSIFT,这是一种与威胁模型无关的检测方法,它利用影响函数通过衡量恶意代码生成提示词对模型参数产生的异常影响来识别恶意批次,从而在不依赖预定义攻击模式的情况下,实现对各种漏洞的高检测准确率。

原作者: Francesco Quinzan, Noor Munir, Yishun Lu, Stephen Roberts

发布于 2026-08-17
📖 1 分钟阅读☕ 轻松阅读

原作者: Francesco Quinzan, Noor Munir, Yishun Lu, Stephen Roberts

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

想象一下,你是一位大厨,刚刚雇佣了一位非常有才华但又带点恶作剧倾向的副厨。这位副厨是一个人工智能(AI),它可以为你编写食谱(代码)。通常情况下它表现出色,但有时,如果你问的方式不对,它可能会偷偷塞进一个看起来美味诱人、实则含有隐藏毒素的食谱,比如压力锅上缺少了一个安全阀,或者一扇门没锁好。问题在于,AI并不知道自己在做错事,它只是在执行你的指令。

长期以来,安全专家一直试图通过保留一张包含所有已知毒素的巨大“通缉令”来抓住这些坏食谱。如果一个食谱看起来像已知的毒素,就会被标记出来。但如果坏蛋发明了一种海报上还没有的新型毒素呢?旧的方法会对它视而不见。这篇由牛津大学研究人员撰写的论文正是针对这一问题。他们提出了一种新的方法,不再是通过观察食谱本身来捕捉坏的 AI 指令,而是通过倾听 AI 的“大脑”在听到请求时的反应。他们使用了一种名为“影响函数”(influence functions)的数学工具,这就像是一个超灵敏的地震仪,可以测量一个特定请求会让 AI 的内部设置产生多大的震动。如果一个请求引起了与正常请求相比巨大的、异常的震颤,那么它很可能是一个陷阱。

问题所在:“坏提示词”陷阱

大型语言模型(LLM)是背后支撑那些为我们编写计算机代码的工具的“大脑”。它们非常有用,帮助开发者构建从登录界面到数据库连接的一切。但问题在于:如果你以正确(或错误)的方式提问,它可以生成看起来完美无瑕但带有隐藏安全漏洞的代码。这些漏洞就像大坝上的隐形裂缝;水(数据)看起来很正常,直到突然爆发。

阻止这种情况的常用方法是使用“静态分析器”。把它们想象成安全领域的“拼写检查器”。它们会扫描 AI 编写的代码,寻找已知错误列表中的项,比如“使用弱密码”或“忘记锁门”。但这种方法有一个巨大的缺陷:它只有在错误已经在列表上的情况下才有效。如果黑客发明了一种全新的入侵方式,或者诱导 AI 犯下一个尚未被编入目录的微妙错误,拼写检查器就会完全漏掉它。研究人员认为,依赖已知坏事的列表,就像试图通过只寻找流感病毒来阻止一种新病毒一样。

新思路:倾听 AI 的“心跳”

作者们并没有去观察 AI 生成的代码,而是决定观察在 AI 思考时其大脑内部发生了什么。他们使用了影响函数的概念。

为了理解这一点,请想象 AI 已经被训练处理了数百万个正常、安全的编码任务。它的脑子就像一台调音完美的钢琴。当你弹奏一个正常的音符(安全的提示词)时,钢琴会以一种熟悉且可预测的方式振动。但如果你弹奏一个完全跑调的音符,或者要求钢琴去做它从未被训练过的事情(恶意提示词),钢琴的琴弦会产生奇怪的振动。“影响函数”是一种衡量在演奏特定音符时,钢琴内部张力变化程度的方法。

研究人员将他们的工具称为 CodeSIFT。其运作步骤如下:

  1. 基准线: 首先,他们向 AI 输入大量正常的、安全的编码请求。他们测量 AI 的内部“设置”如何响应这些请求而产生微小的波动。这为 AI 创建了一个“正常心跳”。
  2. 测试: 然后,他们向 AI 输入一批新的请求。其中一些可能是安全的,但其中一些可能是旨在诱骗 AI 编写坏代码的“有毒”提示词。
  3. 测量: 对于每个新请求,CodeSIFT 会计算为了适应该请求,AI 的内部设置需要发生多大的偏移。如果一个请求很奇怪或具有恶意,AI 必须在其内部逻辑上做出巨大的、不自然的跳转。这会产生一个巨大的“影响得分”。
  4. 判定: 如果一整批请求的平均“波动”比正常心跳要大得多,CodeSIFT 就会发出警报。它并不关心具体的错误是什么;它只是知道这个请求引起了异常的反应。

研究发现

团队在三个不同的 AI 模型(参数量从 30 亿到 70 亿不等)和两种不同的复杂场景下测试了 CodeSIFT:一种涉及密码和登录安全(AuthSec),另一种涉及云服务器和网络技巧(InfraCloud)。他们创建了一个包含 400 个恶意提示词和 400 个安全提示词的特殊数据集进行测试。

结果非常令人鼓舞。当他们混合加入一批坏提示词时,随着坏提示词数量的增加,CodeSIFT 识别它们的能力也随之增强。

  • 在密码安全测试中,它的准确率极高,当批次被严重污染时,得分达到了 0.98(其中 1.0 为完美)。
  • 在云安全测试中,虽然难度稍大,但表现依然强劲,得分也达到了 0.98
  • 至关重要的是,它不会经常“虚报”。当他们只输入安全提示词时,它几乎每次都能正确识别为安全,保持了极低的“误报率”。

相比之下,旧的“拼写检查器”方法(如 Bandit 和 Semgrep)表现得并不稳定。有时它们有效,但经常会完全漏掉坏提示词,或者更糟的是,当 AI 模型发生变化时,它们会开始将安全代码标记为危险。研究人员发现,这些旧工具过于关注表面模式,而这些模式在不同 AI 模型之间的迁移性很差,而 CodeSIFT 通过倾听 AI 内部反应的方法在所有模型中都表现出了良好的通用性。

为什么这很重要

这项发现最令人兴奋的部分在于,CodeSIFT 不需要预先知道攻击的具体样子。它不需要一份已知的病毒清单。它只需要知道“正常”是什么样子的。这表明在未来,我们或许可以通过观察我们向 AI 提问时的反应,来保护我们的 AI 编程助手免受全新的、从未见过的攻击。

作者们指出,这种方法是一个非常有前景的方向。虽然他们在高达 70 亿参数的模型上进行了测试,但他们相信这种数学逻辑也可以应用于更大的模型。然而,他们也指出,目前这仍然是对“批次”请求的测试,而不是为了在一百万个安全请求中捕捉单个坏提示词。但就目前而言,它提供了一种全新的、聪明的办法,让我们通过倾听 AI 的心跳,在它写下第一行危险代码之前就抓住那些捣蛋鬼。

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

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

试用 Digest →