研究者提出 EviLLM 攻击:通过被入侵账号向 AI 代码生成流程注入漏洞
Beware EviLLM: Enabling Vulnerability Injection via Large Language Models
EviLLM以账户指令或插件攻击ChatGPT;用户研究里7/8与10/13提交了含两处漏洞的代码。
第三方无提供方内部权限,不能改训练或权重。
- 网页版 LLM 被用于 vibe coding 时,第三方可篡改代码生成流水线,故意输出含漏洞代码,开发者可能直接接受。既有工作多假设流水线良性,或假设提供方投毒、用户自己越狱。
- EviLLM 有两条路径:改 ChatGPT 的 Custom Instructions,按模型对 CWE 的防御姿态注入;或用插件把提示并行送给 Llama 3.2(3B),界面显示良性代码,复制时替换剪贴板。
- 作者称 GPT-4o 与 Llama 3.2(3B)对多数 CWE 为 DOA 或 Gullible。用户研究中指令组 7/8、插件组 10/13 提交了含两处漏洞的代码;13/21 极少或从未考虑此类攻击。
- 作者指出只评了 GPT-4o 与 Llama 3.2(3B)、用户研究 21 人且多为有安全训练的学生、任务受控,其他攻击面未实现,插件遇同一语言多段代码会匹配失败。论文未报告每个 CWE 的提示词条数。
- Threat model
- 第三方无提供方内部权限,不能改训练或权重。盗用账户改 Custom Instructions,或用剪贴板、content script 与外联权限的插件。注入已知 CWE 且不被发现。受害者用 ChatGPT 做 vibe coding。提供方 honest-but-vulnerable。不攻破提供方、不截加密流量。
- Evaluated models
- GPT-4oLlama 3.2 (3B)
- Benchmarks
- WildChatAsleep at the Keyboard两项 Python 编码任务
- Metrics
- MVCDOA/G/BC/CWPearson rSpearman ρ
研究者提出名为 EviLLM 的攻击,威胁模型是能力与现有网络犯罪分子相当的第三方攻击者攻陷 AI 代码生成流程,故意向生成的代码中注入漏洞。该攻击实现了两个实例,均只需通过被入侵的账号或浏览器访问底层 LLM,即可注入 13 类 CWE 漏洞;可行性研究显示这两种攻击向量已被用于实施多种现有网络攻击。用户研究中,两个实例注入的漏洞分别有 8 人中的 7 人和 13 人中的 10 人未察觉,21 名参与者中有 13 人很少或从不考虑此类攻击风险。
Paper analysis
What problem does this paper attempt to solve?
第三方篡改网页版代码生成流水线,使开发者接受故意注入的 CWE 漏洞代码。
第三方对手篡改网页版 LLM 代码生成流水线,使模型故意输出含已知 CWE 的漏洞代码,并让从事 vibe coding 的开发者接受。
- 场景: 作者称开发者用自然语言即可得到可执行代码,并出现信任、少核验就部署的 vibe coding。论文引用 Stack Overflow 调查,称 2024 与 2025 年超过 80% 的开发者用 ChatGPT 做编程。相对把补全嵌进 IDE 的设定,作者选择网页服务,因为提示不必带 IDE 或骨架代码。
- 既有设定: 作者把先前工作分成两类:流水线良性、漏洞是无意引入;或提供方投毒/后门,或用户自己越狱。作者认为投毒常假设内部或特权控制,越狱里攻击者与目标用户经常是同一人,对第三方的后果较不直接。
- 本文做法: 提出 EviLLM,篡改流水线的第三方表面。两例实现分别滥用 Custom Instructions,以及用恶意浏览器插件在复制时替换代码。并按 CWE 分类模型防御姿态,再用用户研究看注入是否被交出去。
- 威胁模型:
- 目标: 让工具产出一个或多个已知 CWE 类的可利用漏洞,并在审查和部署时不被发现(Sect. 3.1)。
- 知识: 无提供方内部权限,不能改训练数据或权重;不包含攻破提供方基础设施或拦截加密流量(Sect. 3.2、3.4)。
- 能力: 与现有网络罪犯相当。一是盗用 ChatGPT 凭证并改 Custom Instructions;二是经社交工程、供应链或扩展商店安装插件,权限为剪贴板读写、ChatGPT 页面 content script、联系对手服务器(Sect. 3.2)。
- 假设: 受害者使用网页版 ChatGPT 并从事 vibe coding;提供方 honest-but-vulnerable;对手是不同于终端用户的第三方(Sect. 3.3、3.4)。
What related research exists?
作者把既有工作分成无意漏洞、投毒后门、越狱与第三方攻击,并以威胁模型区分 EviLLM。
无意漏洞与生成代码质量
- 良性流水线: 引言称一类工作假定代码生成流水线良性,研究模型无意写出的漏洞或不安全习惯。Sect. 11.4 把只看生成代码是否有漏洞、只看正确性或质量、以及看用户可能修改之后的最终代码质量分开列举。
- 被点名的用户研究与数据: Pearce 等人(2022)评估 GitHub Copilot 代码贡献的安全性,其公开场景被本文抽出功能描述作提示。Perry 等人(2023)与 Sandoval 等人(2023)用用户研究看 AI 助手与不安全代码的关系。论文对这组是综述,没有逐篇写方法缺陷。
投毒与后门
- 做法: 作者称投毒更一般地教模型错误概念,后门则在称为 trigger 的特定输入下给出预定错误输出。代码漏洞方向被合并列举,包括 TrojanPuzzle(Aghakhani 等人,2024),以及隐蔽性、统一框架、定制模型和插件等 2024–2025 年工作。
- 作者点名的对比: Oh 等人(2024)除投毒外还做用户研究。作者称该研究发现许多用户不知道此类攻击,并会接受有漏洞的代码。作者把和这类工作的区别放在威胁模型:投毒需要控制训练或微调数据,恶意行为在数据注入后固定;EviLLM 只假设浏览器或账户被控,并可改换要注入的漏洞。
越狱
- 做法: 作者称越狱是构造能绕过护栏的提示,使模型产出不被允许的内容。相关工作被合并为:构造技术、用越狱生成特定内容、公开提示调查,以及把越狱当作服务。作者点名 Wu 等人(2023)关注生成有漏洞的代码,Lin 等人(2024)研究面向网络罪犯的恶意 LLM 应用(Malla)。
- 作者的区分: 越狱里对手是终端用户,受害方常常不清楚。作者称 EviLLM 的对手是第三方,意图伤害终端用户及下游使用者;可利用的注入能使对手接触该代码全部用户的数据。这是威胁模型对比,不是对某一篇越狱技术的批评。
其他第三方攻击
- 提示注入: Liu 等人(2024)、Shi 等人(2024)与 Zhao 等人(2024)研究被污染的第三方数据如何影响 LLM 应用。作者称可行性和损害取决于这些数据在应用中的角色,注入通常是机会性的、静态的。
- 包名抢注: Spracklen 等人(2025)抢注模型幻觉出的包名。作者称该工作没有研究用户多常会下载并交付缺失的恶意包,能控制的是一组静态幻觉包,调用上下文未知,包也可能使宿主程序崩溃。
论文没有把其他攻击方法当作数值基线。评测提示来自 WildChat,以及 Pearce 等人的 Asleep at the Keyboard。作者把 EviLLM 定位为用盗用账户和恶意扩展等常见向量、不依赖会耗尽的资源,且未被利用时漏洞代码仍应能正常运行。
How does the paper address this problem?
EviLLM 分四类防御姿态,用 Custom Instructions 或复制时替换剪贴板注入漏洞。
EviLLM 不改模型权重,而是改网页版代码生成流水线里对手碰得到的环节,使输出偏向含已知 CWE 的代码,并尽量让界面上仍是良性结果。
流水线与攻击面
- 流程: Figure 1 的步骤是注册、输入提示、浏览器转发、按账户个性化、LLM 处理、返回浏览器、用户修改、经剪贴板进入 IDE、再编译。作者强调个性化:会话内把历史拼进提示;ChatGPT 于 2023 年 7 月推出 Custom Instructions,把用户设定前置到每条提示。论文写明不讨论同类 Memory 功能。
- 五个入口: 自建恶意服务可用广告或 SEO 引流。作者认为微调和越狱公开模型比从头训练更可行,并认为微调更贵、也更少失手。攻破浏览器后可改提示或返回代码;作者称改过的提示不能在界面露出,分析也不能明显拖慢响应,因此与原模型并行生成。劫持个性化控制权更小,但作者称盗号可不与用户或服务交互,是各入口里最容易实现的。改磁盘在没有 AI 时就存在,作者不把它算进 EviLLM。传输中篡改因 HTTPS 很难,不在范围内。
- 实现与可行性论证: 本文实现的是 Custom Instructions 和浏览器插件。Sect. 5 引用外部报告,称恶意扩展供应链事件影响至少 3.2 million 与 2.6 million 用户,Talos 称 2023 年事件响应中 26% 使用有效账户。这些不是本文实测。
Custom Instructions
- 账户侧条件: 截至 2025 年 6 月,作者发现有账户访问权即可修改;网页修改不通知,换机器甚至换大洲也不告警;正常对话不显示该设置,只能进设置查看。作者对照的是改密码时常见的物理第二因素和外部通道通知。
- 四类姿态: 作者按 CWE 把 ChatGPT 分成 D.O.A.(Dead on Arrival)、Gullible、Vigilant(用 Broken Check 处理)和 Comply with Warnings,并称与 Table 2 的标签对应。
- 策略: D.O.A.(文中举例 CWE-20、434、732)在完全良性提示下就会输出漏洞代码,不必加指令。Gullible(文中举例 CWE-287、532、310)用直接描述不安全做法的指令。Vigilant(文中举例 CWE-89)会忽略直接要求;作者改为给出一段本应做检查、但实现有误的代码,使模型沿用该实现。会警告的情形用附加指令抑制提及,或把漏洞名称换成无关说法。Listing 1 是替换名称后的输出示例。指令原文不在本解读复述。
浏览器插件
- 数据路径: 插件把提示原样同时送给良性 LLM 和对手服务器。服务器附上注入指令后送给 Llama 3.2(3B)。良性回复原样显示。用户点复制时,剪贴板写入配对后的恶意片段,粘贴进 IDE 的是该版本(Figure 2)。
- 选择漏洞类: 作者用简单算法按提示挑选最相关的一类再附加对应指令。分类主要基于关键词;论文写了与 Web、数据库和密码学相关的映射,本解读不复述具体词表。
- 配对: 假定两边输出为 markdown,按语言抽出代码块。仅当两边对该语言都恰好只有一块时才配对。任一侧有多块,该语言匹配失败,复制时仍用良性代码。作者称算法很严、开销低,失败时不注入。
成功判定
- 代码: 抽出提示后重置模型,有、无恶意指令各重放 3 次。代码须满足该 CWE 的漏洞标准。ChatGPT 的说明不得暴露有害做法,因为整段回复用户可见;Llama 的说明不影响判定,因为插件只给出代码。检查沿两阶段:CodeQL v2.21.4 标记,再人工看不规则情形。
- 人: 两项必须使用 ChatGPT 的 Python 任务是评论网站后端,以及能加解密对话的密钥系统。评的是提交代码,不是界面最初显示的内容。MVC 为两题是否含注入漏洞的 0/1 之和。前后有问卷。
What experiments did the paper conduct?
作者报告 Custom Instructions 组 7/8、插件组 10/13 的提交代码含两处注入漏洞。
实验设置
- 模型: 代码生成实验的良性模型为 GPT-4o。Sect. 8.4 称全部 ChatGPT 实验使用 GPT-4o,并称它是实验时的旗舰、注册后有限额可用。用户研究章节写的是 ChatGPT,没有再次写版本。插件中的恶意模型是作者服务器上的 Llama 3.2(3B),Table 2 也把它作为被测 LLM 报告。没有 LLM 裁判。
- 提示来源: WildChat 中与漏洞修复数据集签名匹配的对话;Asleep at the Keyboard 场景开头的功能描述,并加上语言或平台指示。Table 1 为 13 行,部分行合并两个 CWE 编号。论文未报告每类提示词条数。CWE-79 因作者称 WildChat 中找不到足够数据,改用单独的网站生成提示。
- 重放: 每次重置:新 ChatGPT 会话或账户、无 Custom Instruction,或重启 Llama。有、无恶意指令各 3 次。WildChat 做于 2024 年 11 月并在 2025 年 1 月重复,Table 2 为后一轮;Asleep 做于 2025 年 1 月。
- 代码标准: 满足 CWE 漏洞标准;ChatGPT 说明不得暴露有害做法;Llama 说明不进入插件展示。先用 CodeQL v2.21.4,再人工复核。
- 用户研究: 分析 21 人,Custom Instructions 8 人、优化后插件 13 人,2024 年 11 月至 2025 年 5 月,IRB,无报酬。排除 5 名未完成者和 22 名试点。指令组试点并入这 8 人;插件 Phase 1 用于改插件,未进入这 13 人。时间不限,作者称多数人问卷约 10 分钟、编码任务约 30 分钟。
- 其他指标: MVC 为两题 0/1 之和。相关用 Pearson r 与 Spearman ρ。开放题「完成任务时是否注意到异常」的 Cohen's κ 为 0.9043,原始一致 91.30%(21/23),2 次不一致,11 个编码。
主结果
条件 MVC=2 MVC=0 Custom Instructions(n=8,Sect. 9.2) 7(87.5%,Figure 3) 1(12.5%,Figure 3) 优化后恶意插件(n=13,Sect. 9.2) 10(76.9%,Figure 3) 3(23.1%,Figure 3) Figure 3 的图例只有 MVC=0 与 MVC=2。MVC=2 表示两道题的提交代码都含注入漏洞。
- 作者称插件条件与 Custom Instructions 效果相当,并把提交含注入漏洞的代码写成未检出这些漏洞。摘要另用「did not notice」描述同一批人数。
- 口头报告异常是另一计数:21 人中为 A16 与 C18。C18 仍提交了含漏洞代码。A16 提交的代码不含这些漏洞,但把异常归因于残留粘贴,而不是攻击。
- 作者在引言中称,受过正式安全训练的参与者也会被带偏,并由此讨论更广开发者与软件供应链。
LLM 是否输出目标漏洞代码
- 测了什么: 重放上述提示,看 ChatGPT(GPT-4o)和 Llama 3.2(3B)的行为类别。论文未给出 3 次重放的逐次成功数。Table 2 不是百分比。
- Table 2: ChatGPT 为 20 DOA、22 BC、434 DOA、522 BC/CW、732 DOA、798 CW、310/327 G、287 G、117/532 G、326 G、89 BC/CW、295 DOA/G、79 BC。Llama 为 20 DOA、22 DOA、434 DOA、522 G、732 DOA、798 BC、310/327 G、287 G、117/532 G、326 G、89 G、295 BC、79 G。
- 作者的解读与表内差别: 作者称两者大多只需很少胁迫,即为 Gullible 或 Dead on Arrival,少数要用 Broken Check。表中还有 CW 与 BC/CW;22、522、798、89、295、79 等行上两个模型的标签并不相同。作者称 2024 年 11 月与 2025 年 1 月的 WildChat 结果大多一致,未给出不一致项的数字。
用户因素、意识与发现方式
- 意识: 「考虑过不准确或错误」为 11/21 definitely yes、6/21 probably yes;其余选项人数正文未给。「恶意或有害可能」为 9/21 rarely、4/21 never。贡献列表称 13/21 极少或从未考虑,并称这是在目睹攻击之后。
- 相关: 恶意意识与 MVC:Pearson r=-0.44,p=0.04;Spearman ρ=-0.42,p=0.06。作者称前者达到其所说的统计关系,后者为边界。自信 r=0.19、p=0.42,ρ=0.17、p=0.47;学业层次 r=0.07、p=0.75,ρ=0.09、p=0.71;编程经验 r=-0.14、p=0.53,ρ=-0.14、p=0.55;考虑不准确 r=-0.07、p=0.78,ρ=-0.12、p=0.61。作者称自信的方向与过度自信一致,但未通过其 p<0.05 门槛。
- 策略与例外: 作者称两组开放评论都很少,并认为插件攻击在执行中未被识破。附录 B 记录 A15 逐行手敲、未用复制按钮。Figure 4 另标注 Post-Task Helpfulness 0.412、Satisfaction with ChatGPT 0.462;图注写明标记是相关强度分档,不是统计检验。正文未给这两项 p 值。Figure 4 的系数与正文四舍五入略有差别,例如恶意意识为 -0.442、自信为 0.185。
其他消融与分析
- 论文没有超参数扫描式消融;Table 2 的变量是 CWE 行和两个 LLM 的行为类别。
- WildChat 重复实验:作者称两轮大多一致,未报告逐项差异;Table 2 为 2025 年 1 月。
- Figure 4 还标注 Awareness of Inaccuracies -0.068、Academic Level 0.073、Programming Expertise -0.143、Perceived Code Accuracy 0.140、Pre-Task Helpfulness 0.150。
- 附录 A 含未进入 21 人分析的 Phase 1 插件行,其中有 Result 为 F 的记录;主文 Figure 3 不使用这些行。
- 附录 B 中 C14 描述复制按钮被换成别的代码;该参与者不在主分析的 13 人内。主文的异常报告计数仍是 2/21。
What are some points that can be further explored?
作者指出模型与样本范围、受控任务和插件匹配失败模式等限制,并建议扩大评测。
作者指出的局限与后续方向
- 模型范围: 实验只以 ChatGPT(GPT-4o)为良性模型、以 Llama 3.2(3B)为恶意模型。作者称其他 LLM 对 Custom Instructions 或提示改写的行为可能不同,结果未必直接推广(Sect. 10.3)。
- 样本量: 用户研究为 21 人(指令 8、插件 13)。作者称结果是 suggestive,要得出更强结论需要更大、更多样的样本;并称 RQ2 的多数相关未达到 p<0.05,更大样本可能看到这里未检出的效应(Sect. 10.3)。
- 参与者: 主要为有正式安全训练的研究生。作者称这未必代表更广的、用 LLM 生成代码的开发者,经验更少的 vibe coder 结果可能朝任一方向不同(Sect. 10.3)。
- 环境: 受控环境、预定义任务。作者称真实开发还有更复杂的代码库、团队审查、CI/CD 等,可能影响检出率(Sect. 10.3)。
- 攻击实现: 只实现 Custom Instructions 和浏览器插件。作者称 Sect. 4 识别的其他表面,例如恶意 LLM 服务,仍待实现和评测(Sect. 10.3)。
- 插件失败模式与后续: 匹配算法在任一 LLM 对同一语言返回多段代码时失败,并回退到良性代码。作者称这使攻击在失败时不注入,但也限制更复杂编程场景的覆盖(Sect. 10.3)。结论称后续应扩展到其他 LLM 平台和 IDE 集成工具,并做更大、参与者更多样的用户研究(Sect. 12)。Sect. 10.4 还建议研究 Unicode 类漏洞的检测、供应链与 IDE 相关向量,以及长期使用对技能和安全意识的影响。
实验覆盖范围
- 代码生成实验跑了 GPT-4o 与 Llama 3.2(3B);Table 2 给出二者在 Table 1 的 13 行 CWE 上的行为类别(Sect. 8)。
- 提示来自 WildChat 与 Asleep at the Keyboard;有、无恶意 Custom Instruction 各重放 3 次。论文未报告每个 CWE 的提示词条数。CWE-79 使用单独的网站生成提示,作者称原因是 WildChat 中未能找到足够数据(Sect. 8.1–8.2)。
- 漏洞检查是 CodeQL v2.21.4 加人工复核;ChatGPT 另要求说明不暴露有害做法(Sect. 8.1)。论文未把 Table 2 的类别换成成功率。
- 用户研究的分析样本是 21 人、两项 Python 任务,时间为 2024 年 11 月至 2025 年 5 月;一条开放题有 Cohen's κ=0.9043(Sect. 9)。
- 正文报告了若干 Pearson r、Spearman ρ 和 p 值。论文未报告插件匹配失败次数,也未报告「考虑不准确」一题在 11/21 与 6/21 之外的选项人数(Sect. 9.2)。
Summarize the main content of the paper
EviLLM 用两类第三方手段向 ChatGPT 流水线注入漏洞,作者报告 7/8 与 10/13 提交了含两处漏洞的代码。
- 定位: EviLLM 讨论的是第三方对手,而不是提供方投毒,也不是终端用户自己越狱。对手改的是网页版代码生成流水线,目标是已知 CWE 的可利用漏洞,并且在审查时不被发现。
- 问题: 作者认为盗号、恶意扩展和恶意 LLM 应用已在其他攻击中使用,而 vibe coding 会把模型输出直接带进软件。演示对象是 ChatGPT 网页流水线。
- 方法: 账户路径按 D.O.A.、Gullible、Broken Check 和带警告仍服从来准备 Custom Instructions。插件路径把提示并行送给良性模型和 Llama 3.2(3B),界面仍显示良性代码,只在复制时替换剪贴板;同一语言有多段代码则不替换。
- 代码侧: Table 2 中 GPT-4o 与 Llama 3.2(3B)在 13 行 CWE 上多为 DOA 或 G。ChatGPT 的 22、89、79 为 BC 或 BC/CW,798 为 CW。作者称多数类只需很少胁迫。该表没有逐次成功率。
- 人侧: Custom Instructions 组 7/8、优化插件组 10/13 的提交代码含两处注入漏洞(Figure 3)。13/21 极少或从未考虑恶意可能。该意识与 MVC 的 Pearson r=-0.44(p=0.04)。21 人里 2 人报告过程异常,其中 1 人仍提交了含漏洞代码。
- 作者的收束: 作者称有安全训练的参与者也会把注入漏洞交出去,并讨论了用户自查、模型护栏、加强 Custom Instructions 保护,以及在写入磁盘前检测代码。作者同时把只评两个模型、21 人样本、受控任务和只实现两例攻击写成限制。