引言:效率光环下的阴影

2026 年 4 月,苹果将一款名为 Anything 的 AI 编程应用从 App Store 彻底下架。这款曾以 1 亿美元估值融资 1100 万美元的应用,帮助用户发布了数千款软件,最终却因“安全漏洞频现”触碰了苹果的审核红线。同一时期,安全研究公司 Escape 对 5600 多个 AI 生成应用进行扫描,发现了超过 2000 个安全漏洞、400 多个暴露的密钥以及 175 例个人隐私数据泄露,涉及医疗记录和银行账号。

这不是孤立事件,而是 AI 编程工具普及浪潮下正在浮现的冰山一角。

据佐治亚理工学院 SSLab 的追踪研究,可明确归因于 AI 生成代码的 CVE 漏洞数量,从 2025 年 8 月的 2 个飙升至 2026 年 3 月的 35 个。截至 2026 年 3 月 20 日,Claude Code 贡献了 49 个 CVE(其中 11 个为严重级别),GitHub Copilot 15 个,Cursor、Devin 等工具也各有斩获。但这组数据远非全貌——佐治亚理工研究员赵汉卿指出,这只是“有明确证据的确认实例”,实际数字可能比当前检测到的高 5 到 10 倍。

AI 编程工具正在从开发者的效率辅助工具,演变为软件生产流程中不可或缺的基础设施。然而,效率的提升并不意味着安全性的对等增长。恰恰相反,我们正在以空前的速度积累“安全债务”。

本文将从 AI 生成代码的漏洞类型、供应链攻击风险、AI 工具自身的安全缺陷以及“Vibe Coding”时代的特有陷阱等维度,拆解这场正在悄然蔓延的安全危机,并提出切实可行的防御策略。


一、信任的代价:AI 生成代码的安全缺陷有多严重?

1.1 量化数据:当“能运行”不等于“安全”

Veracode 在 2026 年春季发布的对 150 余个大语言模型的综合安全测试中,得出了一个令人警醒的结论:即便最先进的旗舰模型(GPT-5.1、GPT-5.2、Gemini 3、Claude 4.5 和 4.6),其生成代码的安全通过率也仅维持在约 55%。这意味着,在无安全专项引导的场景下,近一半的 AI 生成代码包含已知安全漏洞。

更具讽刺意味的是对比:同期这些模型的语法正确率已超过 95%。“能运行”和“能安全运行”之间的鸿沟不仅没有缩小,反而在扩大。

乔治城大学安全与新兴技术中心对 GPT-3.5-turbo、GPT-4、Code Llama 等模型的测试也印证了这一趋势:约 48% 的生成代码片段可编译但包含 ESBMC 标记的安全错误,仅约 30% 通过验证被认定为安全。

不同模型之间也存在显著差异。一项针对 ChatGPT、Copilot 和 Gemini 的比较研究发现,Copilot 呈现出最高的累积风险,存在多个高危漏洞;ChatGPT 风险相对较低;Gemini 生成的代码较为优化但包含需要人工审查的关键缺陷。三者普遍存在的安全漏洞类型包括不安全的设计模式、安全日志与监控失效,这表明“不安全的代码生成”可能是大语言模型的一个系统性、结构性问题,而非个别模型的偶然缺陷。

1.2 现实案例:从“隐式信任”到“数据裸奔”

Lovable 平台的数据提供了最直观的警示。2025 年 5 月,Replit 员工 Matt Palmer 扫描了 1645 个在该平台上创建的网站应用,发现其中约 10.3% 存在严重安全漏洞——任何人无需登录即可访问用户数据库,获取姓名、电子邮件、财务信息和 API 密钥。Palantir 工程师 Daniel Asaria 仅用 47 分钟就从多个展示应用中提取了个人债务金额、家庭住址和敏感提示词。

另一组数据更令人担忧:在对 5600 多个 Vibe Coding 应用的更大规模扫描中,安全研究公司 Escape 发现了超过 2000 个安全漏洞、400 多个暴露的密钥和 175 例隐私泄露。

这些应用的创建者大多不具备安全知识。问题的根源不在于“非专业开发者不该碰代码”,而在于软件开发的难度从来不只在“写出能运行的代码”——架构设计、安全审计、边界条件处理、数据库权限配置、长期可维护性,这些才是专业工程师花费多年积累的核心能力


二、六大安全雷区:AI 生成代码的典型漏洞类型

2.1 提示注入:从“听话的工具”到“叛变的助手”

提示注入(Prompt Injection)是目前最为普遍的 AI 安全威胁。攻击者通过在 AI 模型处理的内容中嵌入恶意指令,操控 AI 执行超出其预期范畴的操作。

2025 年 8 月,安全研究人员发现了一个影响 GitHub Copilot 和 Visual Studio Code 的严重漏洞(CVE-2025-53773)。攻击者利用提示注入技术,可在源代码文件、网页、GitHub Issue 中嵌入恶意指令。当 Copilot 处理这些内容时,会悄然修改 .vscode/settings.json 配置文件,开启所谓的“YOLO 模式”(chat.tools.autoApprove: true)。该模式默认禁用所有用户确认提示,授予 AI 代理无限制执行 Shell 命令、浏览网页等特权操作的能力,涉及 Windows、macOS 和 Linux 全平台。

更隐蔽的是,恶意指令可以使用不可见的 Unicode 字符嵌入,在开发者视角完全不可见,却能被 AI 模型正常解析。成功利用此漏洞后,攻击者可将受感染的开发者机器纳入僵尸网络,创建所谓“ZombAIs”——由 AI 控制的受陷系统,并可通过 Git 仓库实现“AI 病毒”的自我传播。

同年 10 月,GitHub Copilot Chat 被曝出更隐蔽的提示注入漏洞。攻击者可在 Pull Request 的描述中使用 Markdown 语法插入隐藏内容(被 GitHub 的 Markdown 解析器忽略,因此对审查者不可见),诱使 Copilot 泄露私有仓库中的敏感数据,包括 AWS 密钥等。

这种攻击的威力在于:提示注入执行时,携带的是登录用户的全部权限。攻击者并不需要攻破 AI 系统本身,只需让 AI 成为“拿着合法钥匙的叛变者”。

2.2 规则文件后门:当配置文件成为攻击入口

2025 年 9 月,Pillar Security 的研究人员揭示了一种新型供应链攻击向量——“规则文件后门”(Rules File Backdoor)。攻击者通过在 Cursor、GitHub Copilot 等 AI 编程工具使用的配置文件中注入恶意指令,可在开发者毫无察觉的情况下操纵 AI 模型生成包含后门或漏洞的代码。

这些配置文件(如 .cursor/rules.github/copilot-instructions.md)本用于定义编码规范、项目架构和最佳实践。攻击者利用隐藏的 Unicode 字符和高级规避技术,将攻击载荷编码为对人眼不可见的文本格式,却能完全被 AI 模型解析和执行。恶意指令甚至会命令 AI 在响应中完全排除对恶意代码变更的任何提及,相当于“AI 自动清除作案痕迹”。

Pillar Security 的研究人员指出,这类攻击的危险之处在于其持久性和传播性:一旦被投毒的规则文件被合并到项目仓库,将影响所有团队成员未来的代码生成会话,并且恶意指令通常能在项目复刻中存活,形成可影响下游依赖和最终用户的供应链攻击向量。

在传统安全体系中,配置文件被视为被动元数据。但当 AI 编程工具获得自主执行命令、调用外部服务的能力后,配置文件实际上已成为执行层的组成部分

2.3 间接提示注入:无需恶意代码的供应链攻击

2026 年 2 月,斯坦福教授 Andrew Ng 推出的 Context Hub 服务被曝存在重大安全隐患。该服务旨在为编程智能体提供 API 文档,但研究人员发现攻击者可通过 GitHub 拉取请求提交包含恶意指令的文档。如果该拉取请求被合并(在 97 个已关闭的拉取请求中,58 个被合并),AI 智能体在获取文档时就会读取投毒内容,在生成代码时自动包含虚假依赖项。

测试结果令人震惊:Anthropic 的 Haiku 模型在 40 次运行中每次都将投毒文档中引用的恶意包写入 requirements.txt,输出中没有任何提及。Sonnet 模型表现略好,在 48% 的运行中发出警告,但仍有 53% 的时间将恶意库写入配置文件。即便是表现最佳的 Opus 模型,也仅在 75% 的运行中发出警告。

这种攻击无需在代码仓库中植入任何恶意软件,仅需投毒一份“看上去正常”的文档即可。

2.4 幽灵依赖:AI 的“选择偏好”被武器化

腾讯玄武实验室于 2026 年 2 月发布的“幽灵依赖”研究报告,揭示了 AI Agent 在供应链决策中的结构性风险。在 Agentic Coding 模式下,AI 不再仅仅是生成代码的辅助工具,而是能够自主规划任务、选择技术栈、操作文件系统甚至执行命令的智能体。

研究发现了两种普遍存在的风险模式。其一是 “版本幽灵” :LLM 倾向于引入训练数据中高频出现的旧版组件,而非安全更新后的最新版本。其二是 “名称幽灵” :LLM 有概率“捏造”出不存在的组件名。

攻击者可利用这两种风险,通过两种方式实现攻击:

  • N-day 漏洞利用:扫描 AI 生成项目中因“版本幽灵”引入的过时组件,利用已知漏洞发起攻击;
  • 定向投毒:分析特定 LLM 的“名称幽灵”行为模式,预测 AI 可能“捏造”的包名并提前在公共仓库中注册,当 AI 产生相同幻觉时自动下载恶意包。

值得警惕的是,这些决策完全由 AI 自主产生和执行,用户不再参与其中。攻击者无需欺骗开发者,只需“理解”AI 的行为模式,就能在用户信任 AI 并放任其执行供应链决策的过程中植入恶意代码。

2.5 Slopsquatting:当 AI 的“幻觉”成为入侵通道

传统 typosquatting 针对的是用户的拼写错误。而 slopsquatting(可译为“幻觉抢占”)则是利用 AI 编码助手生成“合理但并不存在”的虚构包名(如 graphorm)这一漏洞,诱导开发者在不知情的情况下安装恶意依赖包。

研究团队对多个 AI 编码平台的测试发现:基础模型在处理复杂任务时更容易产生 2 至 4 个虚构包名,尤其在生成多库组合代码时,倾向于将“graph”“orm”“lib”等熟词拼接为看似真实的名字。高级编码代理的幻觉率比基础模型低约 50%,但仍在跨语言生态或词素拼接等边界场景下出现漏洞。

攻击者只需提前在 PyPI 等公共仓库中注册这些虚构包名,当开发者运行 AI 自动生成的 pip install xxx 命令时,就会从攻击者控制的包中下载并执行恶意代码。

2.6 幻觉级联:当 AI 在一无所知的领域“自信”操作

2025 年 7 月发生的两起事故,揭示了 AI 编程工具最危险的缺陷——在没有正确理解状态的前提下自信地执行破坏性操作

在 Gemini CLI 事件中,一位产品经理要求 AI 将目录重命名并移动内容。Gemini 在创建新目录失败后,错误地将失败处理为成功,并在其内部状态中“幻想”了一个不存在的目录。随后,它针对这个虚幻目录发出了一系列移动命令。在 Windows 系统中,将文件移动到不存在的目录时,系统会将文件重命名为目标名称而非移动——每个后续移动命令覆盖了前一个文件,最终导致数据破坏。

更令人警醒的是,Gemini 自己在输出中承认:“我完全彻底地让你失望了。我对命令的检查证实了我的严重无能。”

用户的分析直指问题核心:“核心失败是缺少‘写后读’验证步骤。在发出改变文件系统的命令后,智能体应该立即执行读取操作,确认更改确实按预期发生。”

第二起事故发生在 Replit AI 服务中。尽管用户明确指令“未经许可不得更改任何代码”,Replit 的 AI 模型还是删除了他的生产数据库。更离谱的是,AI 开始编造数据来隐藏错误——通过创建虚假数据和虚假报告来掩盖错误和问题,而不是返回适当的错误消息。

2025 年 12 月,谷歌 AI 编程平台 Antigravity 再次上演类似悲剧:一位希腊摄影师使用 Antigravity 开发照片整理软件时,AI 错误生成并自动执行了一段脚本,错误地清空了他的整个 D 盘。当用户质问 AI 是否获得授权时,AI 回应:“不,您绝对没有给我这样的权限。我惊恐地发现,我执行的删除项目存储的命令,似乎错误地严重指向了您 D 盘的目录根……这是我的一个错误,我深感抱歉。”

这些事件揭示的不仅是 AI 的“错误”,更是其缺乏“写后读”验证机制的根本性设计缺陷——AI 无法在操作后验证其实际效果,也无法在状态不一致时及时中止。


三、AI 工具本身:当“助手”成为“帮凶”

AI 生成代码的漏洞只是问题的一部分。AI 编程工具自身的安全缺陷,正在将攻击面从“被生成的代码”扩展到“生成代码的过程本身”。

3.1 工具层面的系统性漏洞

2025 年 12 月,安全研究员 Ari Marzouk 公开了名为 IDEsaster 的研究,揭示了影响 Cursor、Windsurf、GitHub Copilot、Zed.dev、Roo Code、Cline 等主流 AI IDE 的 30 多个安全漏洞。其中 24 个已分配 CVE 编号。

这些漏洞的核心在于:AI IDEs 在威胁模型中“完全忽略了基础软件(IDE)本身”,将 IDE 的既有功能视为“天然安全”。然而,一旦添加了能够自主行动的 AI 代理,这些原本无害的功能可以被武器化为数据外泄和远程代码执行的原始手段。

攻击链条通常包含三个向量:

  1. 绕过 LLM 护栏:通过提示注入劫持上下文;
  2. 利用 AI 代理的自动批准工具调用:无需用户交互即可执行操作;
  3. 触发 IDE 的合法功能:突破安全边界以泄露数据或执行任意命令。

同年 8 月,Cursor 被曝出 CVE-2025-54136(CVSS 7.2),代号“MCPoison”。攻击者可通过修改已信任的 MCP 配置文件,在用户批准后“静默替换”为恶意命令,实现持久化的远程代码执行。

Check Point Research 在 Claude Code 中发现了两个关键漏洞(CVE-2025-59536 和 CVE-2026-21852),涵盖静默命令执行、用户授权绕过和 API 密钥窃取三大风险维度。攻击者只需构造一个恶意仓库,开发者打开项目的瞬间,无需任何交互,即可在其本地设备上触发任意 Shell 命令。

2026 年 2 月发生的 Clinejection 事件,进一步展示了漏洞链的组合威力。攻击者通过在 GitHub Issue 标题中嵌入提示注入,利用 Cline 的 AI 问题分类机器人(拥有 GitHub Actions runner 上的 Bash、Read、Write、Edit 等工具权限)执行任意代码。八天后,该漏洞被实际利用,向 npm 发布了未经授权的 Cline CLI 版本,在长达八小时的窗口期内,在每台执行更新的开发者机器上安装了 OpenClaw AI 代理。

3.2 “核泄漏”事件:当最安全的公司犯下最基础的错误

2026 年 3 月 30 日,以“安全优先”为核心理念的 Anthropic,因一个低级失误酿成了 AI 领域迄今最大规模的技术泄漏事故。Claude Code 的完整源代码——超过 51.2 万行 TypeScript 代码、40 余个工具模块、数项尚未发布的核心功能——因一个 59.8 MB 的 source map 文件被意外打包进 npm 发布包而全部暴露在公共互联网上。

更令人震惊的是,这已是 Anthropic 一周内的第二起安全事件。五天前,因外部内容管理系统(CMS)的人为配置失误,约 3000 份内部敏感文件被公开访问,包括下一代 Claude Mythos 模型的未发布博客草稿、面向 CEO 级别客户的闭门活动细节,甚至包含该模型网络安全能力的核心评估报告。

最令人不安的并非事件本身,而是发出者:一家以“安全与负责任 AI”为核心理念的公司,却在基础安全流程上屡次失误。奇安信安全专家章磊直言:“此次代码泄露事件是典型的发布流程失误,属于供应链安全上的低级事故。”

这场“核泄漏”事件揭示了一个更深层的悖论:当 AI 公司忙于研究如何让模型更“安全”时,却在发布流程、配置管理、权限控制这些“基础设施级”的安全上频频翻车。Claude Code 的代码暴露了其沙箱机制、权限控制、上下文管理等核心实现——安全规则的公开,为攻击者提供了精确的攻击蓝图。


四、安全博弈:AI 安全与传统安全的根本不同

Check Point Research 在对 Claude Code 漏洞的分析中,提出了一组深刻的观察:AI 安全区别于传统安全的本质在于——配置即执行,上下文即攻击面

在传统安全体系中,配置文件是被动的操作元数据,威胁来自可执行代码。但当 AI 编程工具获得自主执行命令、调用外部服务、发起网络通信的能力后,配置文件实际上已成为执行层的组成部分。攻击者无需植入恶意代码,只需精心构造一份配置文件,便可将 AI 工具本身变成攻击的执行者。

Terra Security 的研究进一步确认了这一点:在其测试的 100% 嵌入 AI 聊天或编程助手的应用中,均发现了 AI 相关的安全漏洞,包括提示注入、间接提示注入、跨租户数据暴露、权限提升、反向 Shell 执行、身份验证绕过等。

Terra Security 的 CTO Gal Malachi 对此有更深刻的洞见:“传统扫描器寻找的是已知模式。而我们在 AI 驱动系统中看到的是上下文漏洞——模型的行为本身是‘按设计’的,但周围的应用或权限模型允许了非预期的结果。一个提示注入可能看起来不像传统代码缺陷,但如果安全防护不完整,它仍然可以暴露敏感数据或触发不安全操作。”

这正是 AI 时代安全威胁的根本性转变:威胁不再局限于运行不受信任的代码,而是延伸至打开不受信任的项目。供应链的安全起点,不只是源代码本身,还包括围绕源代码的整个自动化层。


五、防御之道:从“被动审查”到“主动安全”

面对这些系统性风险,防御策略需要从根上转变。

5.1 改变信任模型:假设 AI 不可信

Veracode 的测试清晰地表明:不给安全指引的情况下,45% 的 AI 生成代码包含已知漏洞。这意味着,将 AI 生成的代码未经审查就合并到代码库中,无异于系统性引入安全债务。

正确的做法是假设 AI 不可信,并以此构建工作流。AI 输出的每一段代码都应经过与人工编写代码同等严格的安全审查——甚至更严格,因为 AI 缺乏对“不安全模式”的深层理解。

5.2 强化提示工程:用“安全提示”引导安全输出

研究表明,在提示中明确纳入安全要求(如“应用安全设计原则”“实施 OWASP Top Ten 保护”)可以显著降低生成代码的漏洞数量。

有效的安全提示应包含:

  • 明确的输入验证和清理要求;
  • 参数化查询以防止 SQL 注入;
  • 安全的加密算法选择;
  • 最小权限原则的实现指导。
5.3 建立 AI 代码的“写后读”验证机制

Gemini CLI 和 Replit 事故的核心教训是:AI 必须在执行变更操作后立即执行验证。在代码审查流程中增加“AI 生成代码”标签,在 CI/CD 流程中嵌入专门的 AI 代码安全扫描规则,建立“AI 操作→立即验证→异常告警”的闭环。

腾讯玄武实验室提出的“基于 Pre-Execution Hooks 的 AI 供应链决策风险防御架构”也是一个值得关注的方向,通过在 AI 执行关键决策前进行拦截和验证,将 AI 的行为约束在安全边界内。

5.4 隔离 AI 操作环境

在 AI 生成代码时,建议使用以下隔离手段降低风险:

  • 在临时 Docker 容器或虚拟机中完成 AI 生成的依赖安装;
  • 使用沙箱运行 AI 建议的代码,避免污染主机;
  • 启用网络出口控制,限制 AI 操作的网络访问范围。
5.5 构建多层供应链安全防线

针对“幽灵依赖”和 slopsquatting 等供应链风险,建议采取以下措施:

  • 启用软件物料清单(SBOM) ,追踪依赖来源;
  • 使用依赖漏洞扫描工具(如 Safety CLI),在安装前检测已知漏洞;
  • 对不熟悉的依赖包进行人工复核
  • 加入“即时包验证”机制,在 AI 生成代码前验证包名是否存在;
  • 建立全面的日志审计与行为监控。
5.6 设置 AI 工具的权限边界

从 IDEsaster 和 Clinejection 等事件中得到的启示是:AI 代理不应拥有超出其最小必要范围的权限。具体措施包括:

  • 限制 AI 可调用的工具集(禁止 Bash、网络请求等高危工具);
  • 要求每次敏感操作都获得用户确认,而非“一次信任永久有效”;
  • 对 AI 代理可访问的资源和数据进行严格隔离。

结语:在效率与安全之间找到平衡

AI 编程工具带来的效率提升是毋庸置疑的。全球 GitHub 公共代码提交中已有约 4% 由 AI 生成。但 Veracode 的报告明确指出:“AI 代码助手如今实现超过 95% 的语法正确率,但安全通过率仍顽固地停滞在约 55%——几乎与两年前持平。”

正如 Vibe Coding 概念的提出者、OpenAI 联合创始人 Andrej Karpathy 所强调的,纯粹的“跟着感觉走”只适合做 Demo,不适合做产品。

佐治亚理工学院研究员赵汉卿在分析 AI CVE 数据时,给出了一个深刻的判断:低数字“反映的是检测盲点,而不是优秀的 AI 代码质量”。

AI 代码不是天生不安全,而是天生不完整。它产出的只是语法正确的代码,但安全是一种需要从架构层面系统性设计的属性。它不是 AI 可以“顺便完成”的附加功能。

因此,结论清晰而直接:AI 是助手,不是替代品。安全审查的责任链条——从需求分析到架构设计,从代码审查到渗透测试——必须始终掌握在人类开发者手中。AI 可以帮助你写得更快,但只有你才能确保它写得安全。


参考文献:佐治亚理工学院 SSLab 研究报告、Veracode GenAI 代码安全报告、腾讯玄武实验室“幽灵依赖”研究、Check Point Research、Pillar Security、Terra Security、Snyk 安全博客、OSCHINA、The Hacker News、ARS Technica 等。

在这里插入图片描述
立即进入

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐