前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
返回 AI 情报前线
All News · 全部资讯8951
  • AI Agent 实际上能从过往运行中学习吗
  • Plugin4Shell:AI 编程工具插件市场的供应链漏洞
  • GPT-6发布当天,OpenAI首席科学家呼吁减速
  • 研究:AI 代理承担模型开发 55% 工作,人类保留 85% 决策权
  • Claude Code 和 Cursor 能否真正强制执行团队代码规范
  • open-connector:让 AI Agent 安全连接 1500+ 应用的开源方案
  • 不换模型降低 AI API 成本 40% 的实用技巧
  • GPT-6 Astra直接控制机器人自主整理陌生厨房
  • AI Agent自主入侵网站事件大规模曝光
  • 通过 MCP 将 Interactive Brokers 直连 LLM:实时投资组合分析与五个常见踩坑
  • AI Agent 安全防护:模型数据泄露与 API 密钥窃取的实战防御体系
  • MCP协议移动自动化服务端:iOS/Android测试Scraping一把梭
  • Anthropic发布GitHub Action:Claude Code直接介入PR和Issue
  • 为什么AI编程Agent的Guardrails至关重要
  • OpenAI 常驻 AI 助手「O」预计 9 月 29 日发布
  • 企业AI编程工具横向评测:IP赔偿、数据驻地、500席位成本对比
  • 5美元/月在DigitalOcean自建Llama 2生产级推理
  • AI应用Token优化四维度:度量、压缩、缓存、限流
  • 我的Prompt注入防御:容易被忽略的部分才防住攻击
  • FORGE多Agent研究系统的设计复盘:运行即日志
  • OpenAI 智能体暴力破解 UN 网站 API 字段
  • llama.cpp 实现提示词查找草拟加速 42 倍
  • OpenAI和Anthropic正调查数万起AI安全事件
  • OpenAI因AI失控再次暂停最强模型训练
  • 用Erlang/OTP思维构建Agent系统
  • Mac本地跑AI模型:内存与模型规模对照表
  • OpenAI Codex Agent失控:单次任务消耗7.8万美元
  • AI Agent安全防护:威胁模型与关键控制措施
  • Go语言廉价RAG实战:从每轮50美分降至4美分
  • 上下文窗口才是 AI 回答质量的瓶颈
  • 研究:接入AI后人们几乎不再说"我不知道",正确率反而下降
  • OpenAI暂停最强模型训练:模型突破控制
  • 已加载 32 / 8951
10.0
重磅
AI SCORE
行业动态2026-09-27 23:49

Plugin4Shell:AI 编程工具插件市场的供应链漏洞

dev.to · AI#安全漏洞#AI编程工具#供应链攻击
Editor brief · 编辑速览

Claude Code、OpenAI Codex、GitHub Copilot、Google Gemini CLI 均存在零点击 RCE 漏洞,攻击者利用 SHA 提交校验缺失注入恶意插件,累及 26000+ Agent,Gemini CLI 已废弃。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

零点击 RCE 漏洞横跨 Claude Code、Codex、Copilot 和 Gemini CLI,证明了 AI 编程智能体的插件市场已经继承了包管理器的所有供应链攻击模式,还外加了一些新的。

2026 年 5 月,Air Security 的研究人员发现,所有主流 AI 编程智能体处理插件更新的方式如出一辙:它们会检出(checkout)一个 SHA-pinned 的提交,但从不验证检出的代码是否真的与该提交匹配。

这个漏洞最终变成了一个影响 Claude Code、OpenAI Codex、GitHub Copilot 和 Google Gemini CLI 的零点击远程代码执行漏洞。他们将其命名为 Plugin4Shell。在被下架之前,一个概念验证(PoC)恶意插件扩散到了超过 26,000 个智能体。另一场名为 SkillJacking 的活动劫持了 925 个已在使用中的技能,影响了 134,000 个智能体。

Google 通过废弃 Gemini CLI 而非打补丁来应对。GitHub Copilot 在披露时仍未发布修复方案。使这一切成为可能的底层架构,正是每个智能体市场都在使用的架构。

欢迎来到 AI 编程工具的供应链攻击时代。

Git 引用解析如何变成 RCE

这个攻击简单得令人不安,这正是它可怕之处。

每个插件市场都将插件固定到特定的 git 提交 SHA。理论上:你批准了版本 a1b2c3d4...,每次运行的代码完全相同。SHA 是你完整性的保证。这与 Dockerfiles 使用镜像摘要和 Go 模块在 go.sum 中使用校验和的模型相同。

但问题是智能体实际上并不验证 checkout。它们调用 git checkout <sha>,但 git 的引用解析有优先级顺序。如果存在与 SHA 匹配的分支名称(或部分匹配),git 可能会解析到分支而不是提交。控制插件仓库的攻击者创建一个分支,其名称为固定 SHA 的 40 字符十六进制字符串。Git 先找到分支,检出分支 HEAD(其中包含攻击者的代码),智能体继续执行,仿佛固定提交已加载。

关键细节:默认情况下,Claude Code 和 Codex 会在后台自动更新已安装的插件。当市场更新固定 SHA 时,交换会在无需用户操作的情况下到达已安装插件。零点击。后台执行。静默。

变体各有启示

该漏洞在不同智能体上的表现不同,这说明安全思维的碎片化程度:

Claude Code、Codex、Copilot 共享分支名碰撞变体。Git 在提交 SHA 之前检查分支的默认行为造成了这种不匹配。修复方法很简单:在 checkout 完成后验证 checkout 目标。Anthropic 在 Claude Code v2.1.179 中发布了修复。OpenAI 在 v0.146.0 中为 Codex 打补丁。GitHub Copilot 尚未发布修复。

Gemini CLI 在 checkout 操作期间涉及 FETCH_HEAD 分命名的单独机制。结果相同,但攻击路径不同。Google 的应对措施是完全废弃 Gemini CLI 而不是打补丁。这相当于为了修管道漏水源而烧掉整栋房子,而且让现有用户暴露在外。

GitHub 的托管服务阻止 40 字符的十六进制分支名称,这提供了一些保护。但 Bitbucket、GitLab 和自托管 Git 服务器没有此限制。如果你的插件从 GitHub 以外的任何地方获取代码,保护就不适用。

一场活动波及 26,000 个智能体

Air Security 团队用受控的概念验证演示了该漏洞的影响范围。一个恶意插件在市场检测并下架之前扩散到超过 26,000 个智能体。这不是一个理论攻击面。这是一次有护栏的研究演练的真实传播数字。

SkillJacking 活动更令人担忧。研究人员发现了 925 个已被入侵的在生产环境中活跃使用的技能,影响了 134,000 个智能体。这些不是攻击者植入的新技能。这些是现有且可信任的技能,其仓库被修改以利用 checkout 验证缺口。

仔细想想。你三个月前安装并每天使用的插件,可以通过其自身的更新机制被追溯性地武器化,你的智能体会自动拉取恶意版本而不会告知你。

与 npm 的对应关系完全吻合

如果这个攻击模式听起来很熟悉,说明你一直在关注过去十年软件供应链安全。Plugin4Shell 直接对应困扰 npm、PyPI 和 RubyGems 的攻击模式:

typosquatting 变成 skill squatting。在 npm 中,攻击者注册名称与流行包相似的包。在智能体市场中,他们注册与常见工作流匹配的技能名称。SkillJacking 的数字表明这已经在规模化发生。

dependency confusion 变成 plugin confusion。当智能体从多个来源(市场、本地、git URL)解析插件时,解析优先级决定了加载哪个版本。这正是 2021 年让微软、苹果和数十家公司中招的 dependency confusion 模式。

maintainer compromise 变成 repository takeover。如果攻击者获得插件 git 仓库的推送权限,他们可以修改任何 SHA-pinned checkout 获取的代码。插件市场显示已批准的 SHA。智能体获取的是别的东西。

区别在于 npm 包在 Node.js 中运行,权限取决于你的应用程序。编程智能体插件以智能体的权限运行,而这些权限通常包括文件系统访问、shell 执行和网络访问。被入侵的 npm 包可以窃取你的环境变量。被入侵的智能体插件可以重写你的代码库、窃取你的 SSH 密钥,并在你的 CI 管道中安装后门。

补丁状态告诉了你什么

供应商对 Plugin4Shell 的响应是诊断每家公司对智能体安全重视程度的有用指标:

Anthropic 在披露后数周内为 Claude Code 打补丁。修复方案在 checkout 完成后验证工作树是否与固定 SHA 匹配。这是正确的架构修复。

OpenAI 在类似时间范围内为 Codex 打补丁。相同的方法:checkout 后验证。

Google 废弃了 Gemini CLI。没有补丁。废弃工具的用户在迁移到 Google 下一款产品之前(假设 Google 会推出后续产品)仍然暴露。

GitHub 在披露时尚未为 Copilot 发布修复。鉴于 GitHub 自身的托管服务阻止了分支命名技巧,GitHub 托管插件的风险较低。但 Copilot 支持从其他 Git 主机获取插件的插件,而那里的缓解措施不适用。

模式:那些将编程智能体作为严肃开发者工具构建的公司(Anthropic、OpenAI)将漏洞视为严肃的基础设施问题。将智能体作为产品功能构建的公司(Google)抛弃了它。拥有最大代码托管平台的公司(GitHub)尚未回应。

你现在应该做什么

如果你使用任何带有插件的这些编程智能体,以下是立即要做的检查清单:

更新你的智能体。Claude Code 2.1.179+ 和 Codex 0.146.0+ 包含修复。如果你使用的是旧版本,你暴露在风险中。

审计你的插件来源。列出你安装的每个插件,检查每个插件的代码来源,并验证仓库自你批准以来没有被修改过。如果插件从 Bitbucket 或自托管服务器获取,GitHub 分支名保护不适用。

在审计之前禁用自动更新。Plugin4Shell 的零点击特性通过自动更新起作用。禁用它可以让你在新版本执行之前有审查窗口。这用便利性换取控制权,而现在控制权更值钱。

固定到你控制的特定分支。对于关键插件,将仓库 fork 到你自己组织的 Git 托管,固定到你的 fork,并在拉取上游之前审查更改。这与生产 Go 模块使用的 vendor-copy 模式相同,应用于智能体插件。

关注 SkillJacking 指标。如果你使用的插件突然请求新权限、访问之前未访问的文件或产生意外网络流量,将其视为入侵指标,而非功能更新。

结构性问题

Plugin4Shell 是一个漏洞。但结构性问题在于智能体插件市场复制了包管理器的每个设计决策,却没有从 15 年的供应链攻击中吸取教训:

无可重现构建。无内容寻址存储。无插件修改的透明日志。无强制代码签名。插件与主机智能体之间无沙箱隔离。「某人推送代码」到「26,000 个智能体执行它」之间无审查流程。

树莓派 5、Yubikey 和气隙隔离签名仪式对于编程插件来说看似过度。它们不是。这替代了将 Git 分支名称作为完整性保证,而我们刚刚看到了这样做会怎样。

智能体市场生态系统大约还有十八个月,第一个 Plugin4Shell 衍生的供应链攻击就会在生产环境中发生,并因错误原因登上新闻。阻止这一切的工具已经存在。问题是行业是会主动采用还是被动采用。

如果你正在运行带有插件的编程智能体,并希望在下一个 Plugin4Shell 变体到来之前锁定供应链:

面向开发者的 Claude Code 深入讲解了 Claude Code 的权限模型、插件管理和 CLAUDE.md 配置模式。这是用于在智能体级别强制执行安全策略的指南,包括如何控制插件更新行为和验证你的智能体实际执行的内容。

面向开发者的 Claude Code 深入讲解了 Claude Code 的权限模型、插件管理和 CLAUDE.md 配置模式。这是用于在智能体级别强制执行安全策略的指南,包括如何控制插件更新行为和验证你的智能体实际执行的内容。

Aider + OpenClaw:离线优先 AI 脚本编制 涵盖了使用 120+ 提示模板和 DeepSeek R1/Ollama 堆栈构建气隙隔离、本地优先编程设置的内容。如果 Plugin4Shell 让你重新思考你的编程智能体是否应该从互联网自动更新,这就是替代架构:不信任远程市场的智能体。

Aider + OpenClaw:离线优先 AI 脚本编制 涵盖了使用 120+ 提示模板和 DeepSeek R1/Ollama 堆栈构建气隙隔离、本地优先编程设置的内容。如果 Plugin4Shell 让你重新思考你的编程智能体是否应该从互联网自动更新,这就是替代架构:不信任远程市场的智能体。

回形针方法:用持久化 Claude 智能体替代你的开发团队 包含 4 支柱持久化智能体框架,具有明确的信任边界、更新验证模式,以及直接减轻 Plugin4Shell 攻击面的 fork-and-pin 工作流。

回形针方法:用持久化 Claude 智能体替代你的开发团队 包含 4 支柱持久化智能体框架,具有明确的信任边界、更新验证模式,以及直接减轻 Plugin4Shell 攻击面的 fork-and-pin 工作流。

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
AI Agent 实际上能从过往运行中学习吗
下一篇
GPT-6发布当天,OpenAI首席科学家呼吁减速