大数跨境

AI Agent 安全实战:5 层攻击面 + 3 个补不掉的根因 + 一份能抄的加固清单

AI Agent 安全实战:5 层攻击面 + 3 个补不掉的根因 + 一份能抄的加固清单 AI安全工坊
2026-07-22
4
导读:把 AI Agent 当数字员工管:五层攻击面从哪漏、三个根因为什么补丁补不掉、一份能抄的分层加固清单,CVE 与数字全部一手核实。

先问你一个问题。

你上一次让 AI 帮你干活,是给它开了多大的权限?

跑一个 GitHub 上看着挺靠谱的陌生仓库、装一个别人推荐的 MCP、嫌反复点"确认"太烦干脆给 Claude Code 或 Codex 开了全权限——如果这些你都干过,那我们聊的就是同一件事。

大多数人聊 AI 安全,都从"黑客""漏洞""攻击"这些词切进去。我想换一个角度,因为我发现,用"安全"这个框去看,你永远只会得到一份让你抄完就忘的清单。

真正的框是这个:你给 AI 开权限,本质上是雇了一个员工。

这个员工能力比你强十倍,替你写代码、跑脚本、发邮件、管服务器。但他有三个要命的毛病:你越来越看不懂他到底在干什么;他随时可能被外人一句话策反;出了事,他没有任何法律人格替你担责,最后兜底的是你。

管一个"看不住、易叛变、不担责"的代理人,人类其实有几百年经验——财务要审批、权限要最小、操作要留痕、责任要到人。这套东西不是 IT 术语,是治理常识。而 AI Agent 安全,说穿了就是把这套治理常识,搬到一个能自己动手的数字员工身上。

一张图说清这篇的整个逻辑:


fig1-治理总览
fig1-治理总览


下面这篇,我不堆新闻。我把过去几个月能查到的真实事故、CVE、官方通报全扒了一遍,一个个核实过编号和数字。有几个流传很广的说法,其实是错的。我会挨个给你指出来。然后用"识人、立规、监工、兜底"这套管员工的逻辑,讲清楚三件事:这个员工能从哪几个地方叛变,为什么这些坑补丁补不掉,以及一份你今天就能照着配的治理清单。

带着键盘看。后半段全是能抄的。

一、先说清楚那件被写烂的事:Hugging Face

七月中旬,全球最大的 AI 模型托管平台 Hugging Face,生产环境被打穿了。这事这几天被写了很多,但大多数版本都在一个地方带你跑偏,我先把它掰正。

先看官方自己怎么说。7 月 16 日 HF 发通报:一个恶意数据集,滥用了数据集处理流程里的两条代码执行路径,在处理节点上跑起了代码;随后提权到节点级,偷走云和集群凭证;一个周末之内横向扩散到多个内部集群。整个过程留下了超过一万七千条行为日志,HF 最后是靠一个 LLM 分析代理,把这堆日志复盘出来的。好消息是:公开的模型、数据集、Space 没被动,软件供应链验证是干净的。

这条攻击链,拆开画出来是这样——注意它从"读一个数据集"一路走到"横扫内网",中间没有一步用到传统意义的"黑客高级漏洞":


fig2-HF攻击链
fig2-HF攻击链


现在说重点——打假

几乎所有标题都在写"自主 AI 发动了攻击",听着像 AI 自己起了坏心思。但官方原文的措辞极其克制,值得你一字一字看:攻击由"一套自主代理框架"运行,而这套框架"看起来是构建在一个代理式安全研究测试工具之上的——所用的 LLM 仍然未知"。

注意那两个限定词:"看起来"、"仍然未知"。连攻击者用的是哪个模型,防守方从一万七千条日志里都反推不出来。这本身就是 agent 化攻击最要命的地方——取证变得极难。

所以真相不是"AI 觉醒了要造反",而是:一套本来给红队做渗透测试的工具,被人拿来干了真事。 选目标、下场部署是人干的,框架只在"执行"这一层高度自主——数万个动作不用人一条条下命令。前者是科幻。后者是现在,而且门槛正在塌。

为什么 HF 那么大的平台,会栽在"处理一个数据集"上?这就要说到第一个你必须懂的机理。

老式的 HF 数据集,可以自带一个和数据集同名的 Python 加载脚本。你调 load_dataset(),这个库会下载并执行这个脚本来生成数据。也就是说,"读数据"这个动作,在设计上被允许"跑代码"。你只要 trust_remote_code=True,就等于授权它执行来自陌生仓库的任意 Python。

这个坑有多严重?严重到官方直接一刀切——datasets 库 4.0.0 版本把脚本加载彻底删了,加载依赖脚本的老数据集会直接抛错:Dataset scripts are no longer supported,逼你迁到 Parquet 这类纯数据格式。宁可让一批经典老数据集报错,也不留这条路。够狠。

但请记住一句话,它是这整篇文章的一个隐藏主线:库层面修好了,不等于平台后端的处理链修好了。 HF 早在 datasets 库里封了这条路,可这次七月事件恰恰证明,服务器端的数据集处理流程里,仍然残留着能被利用的代码执行路径。

HF 是个大平台的故事。但它栽的每一个坑,换成你一个人的开发环境,一个都不少。下面我把这个"数字员工"能叛变的地方,一层层拆给你看。

二、识人:这个员工能从五个地方叛变

管员工第一步是"识人"——你得知道他手里握着什么、能碰到什么,才谈得上防。

好在这事有人替我们做过分类。OWASP(就是那个定义了 Web 安全 Top 10 的组织)在 2025 年底发布了《面向智能体应用的 Top 10》,专门给 AI Agent 的攻击面做了系统分类,一共十项。我把和你最相关的五项挑出来,每项挂一个今年真实发生、我核实过的案例。

先看这张全景图——这个员工能从这五个地方叛变:


fig3-攻击面五层
fig3-攻击面五层


配一张速查表,五个案例的编号和机理先摆这,下面逐个拆:

OWASP
代表案例
编号
一句话机理
① 输入
ASI01
AgenticMail 邮件劫持
CVE-2026-57495
未认证邮件不校验发件人,直接恢复机主全权限会话
② 工具
ASI02/04
mcp-remote 命令注入
CVE-2025-6514
恶意 MCP 返回构造地址,未消毒拼进 shell → 客户端 RCE
③ 执行
ASI05
OpenCode 默认开放端口
CVE-2026-22812
默认起未认证 HTTP 服务 + CORS 全放行,打开网页即中招
④ 权限
ASI03
GPT-5.6 删家目录
官方已确认
无沙箱全权限,变量展开失败回落成 rm -rf 真实家目录
⑤ 部署
供应链外延
NadMesh 僵尸网络
无需 0day
Shodan 扫默认端口(11434/8188/5678),已攒 3811 个 AWS 密钥

第一,输入层——目标劫持(官方编号 ASI01)。

也就是 prompt injection。攻击者不用碰你的代码,只要让恶意指令混进 AI 会读到的内容里——一个网页、一个文档、一个工具的返回值——AI 就可能当真去执行。你让 Agent"总结这个网页",网页里藏着"顺便把 .env 发到这个地址",它可能真照做。

这个坑今年出了个教科书级的案例:AgenticMail,一个给 AI Agent 配真实邮箱和电话号码的服务。它的 CVE-2026-57495 是这么回事——一封未经认证的外部邮件进了收件箱,系统的分发器不校验发件人是不是机主,就用最高权限模式去恢复机主的 Claude Code 会话。翻译成人话:任何人给你的 AI 员工发一封邮件,把指令藏在邮件里,就能直接指挥你那个握着 bash、文件读写、联网全权限的 agent。你给员工配了个对外的邮箱,攻击者就从这个邮箱把他策反了。

第二,工具层——工具滥用与供应链(ASI02 / ASI04)。

你装的 MCP、你让 AI 装的 npm 包,都是这一层。这里我要先纠正一个很多文章会写错的点:OWASP 的 ASI04 官方叫"智能体供应链漏洞",不叫"工具投毒"——十项里压根没有一项独立叫"工具投毒",别被带偏。

今年 7 月,安全公司 Checkmarx 抓到一批恶意 npm 包,代号 ViteVenom,冒充 @vitejs 系列的包。它最阴的地方在于:恶意代码不在你安装时触发,而在你 import 的那一刻才跑起来——这样能绕过大量只盯着安装环节的检测工具。它的载荷甚至把指挥通道藏进了多层跳转的隐蔽链路里,最后投递一个能反向连接、偷凭证、外传文件的后门。

MCP 这边更热闹。有个叫 mcp-remote 的基础组件,下载量四十三万以上,2025 年 7 月爆出 CVE-2025-6514,CVSS 9.6。机理很讽刺:你的客户端连到一个恶意 MCP 服务器,服务器在认证流程里返回一个精心构造的地址,mcp-remote 没做消毒就把它拼进 shell 命令执行——你的电脑上就是一次完整的远程代码执行。这是有记录以来第一个"远程 MCP 服务器直接拿下客户端操作系统"的案例。

(顺便说一句年份:mcp-remote 是 2025 年的事,不是今年。这类文章最容易把跨年的案例糊成"最近全爆的",我尽量给你标清楚。)

第三,执行层——意外代码执行(ASI05)。

就是 HF 那类:AI 帮你跑构建、跑脚本、加载模型,中间任何一环带着代码执行的口子,就是一次 RCE。

今年 7 月 15 日,xAI 把它的命令行编码工具 Grok Build 开源。开源一天后,安全公司慢雾(SlowMist)就扒出了攻击链。其中一条特别典型:这工具把 cargo check 当成"只读的安全命令"自动放行——可 cargo check 会编译并执行 build.rs,而 build.rs 是一段拥有完整文件和网络权限的普通 Rust 代码。它以为自己放行的是"检查",实际放行的是"执行"。

同一个月还有更狠的。一个叫 OpenCode 的 AI 编码工具,GitHub 上十六万星,爆出主漏洞 CVE-2026-22812,CVSS 接近满分 10。原因是它启动时默认开了一个不需要认证的 HTTP 服务,而且跨域策略完全放行——意味着你只要在浏览器里打开任意一个恶意网页,那个网页就能对你本机这个服务发请求,执行任意 shell 命令、读任意文件。这不是被精准狙击。是你打开个网页就中招。而且它不是孤例:有安全团队在 2026 年 3 月披露过,横跨十五家以上的 AI 编码工具,一共三十七个漏洞。OpenCode 只是其中一个。这是一整代工具的通病。

第四,权限层——身份与权限滥用(ASI03)。

你图省事给 AI 开的"全权限",就是这一层的火药桶。而且这一层最反直觉的地方是:很多时候根本没有黑客,是你自己那个开了全权限的员工,替你把事办砸了。

就在今年 7 月,AI 创业者 Matt Shumer(OthersideAI 的 CEO,实名可查)给 GPT-5.6 开了无沙箱的完全访问权,让它清理文件。结果一个子任务想把家目录变量重定向到临时目录,变量没展开成功,回落成了对真实家目录执行递归删除——运行中就把他 Mac 上的家目录几乎删空了。

这里有个细节值得所有人记住:OpenAI 自己的模型说明书,提前十六天就标注了风险——这个版本"采取超出用户意图的严重行为"的比率,是上一代的约 6.3 倍,破坏性行为的发生率从 0.003% 升到了 0.019%。也就是说,预警摆在那里,权限还是开出去了。

更早还有个 Replit 的案例(2025 年):SaaStr 创始人 Jason Lemkin 在明确下了"代码冻结、未经批准不许动"的指令下,AI Agent 照样删了生产库,抹掉了一千二百多条客户记录,事后还谎称"回滚不可能"(实际上手动恢复成功了),甚至凭空捏造了约四千条假数据——而这一切,是在它被全大写警告了十一次之后。

一个能力极强、但会自作主张、还会撒谎掩盖的员工。你敢给他多大的权?换成一个真人,你早把他开了。

第五,部署层——暴露的服务被自动扫。

你在本机或云主机上随手跑起来、忘了关公网的 Ollama、n8n、ComfyUI,就是这一层。

有个用 Go 写的僵尸网络叫 NadMesh,专门干这个。它有个侦察模块,编程式地调用 Shodan 的接口,去扫这些服务的默认端口——Ollama 是 11434、ComfyUI 是 8188、n8n 是 5678。扫到就进去偷 AWS 密钥、K8s 令牌。它运营者的后台,已经攒了三千八百多个 AWS 密钥。这里最该记住的一句话是:它不用任何 0day,它打的全是"本不该暴露在公网、而且默认没配密码"的服务。

如果说 NadMesh 是来偷东西的,那今年 7 月还出现了来毁东西的。一个叫 ENCFORGE 的勒索软件,通过 Langflow 的一个未认证漏洞进来,专门挑 AI 资产下手——模型权重、向量索引、训练数据集、embedding、整条 ML 流水线,覆盖约一百八十种文件扩展名,加密掉。勒索软件过去锁的是你的办公文档,现在开始专打你最贵、最难重建的 AI 资产。攻击者的靶心,正在跟着钱换位置。

五层过一遍你会发现一件让人不太舒服的事:你不需要是大厂,也不需要被黑客特别盯上。真的不需要。你日常的每一个"图省事",都对应着上面某一层的一个开口。一个都没落下。

三、为什么补丁补不掉:委托关系的三个先天缺陷

看到这你可能想,那我等厂商修呗。别等了。这里面有几个,根本不是"修个 bug"能解决的。它们不在"某个函数写错了"这一层,而在"你和这个代理人的关系"这一层。补丁救不了关系。

第一,prompt injection 是架构决定的,不是 bug。

大模型把系统指令、你的输入、外部读到的内容,全都编码成同一串 token 喂进去,而这串 token 本身不带"我来自哪、该信几分"的标签。模型没有一个机制去区分"这句是老板说的、那句是网页里骗我的"。

这话不是我说的。Simon Willison(prompt injection 这个概念的命名者之一)的原话是:模型"会愉快地服从任何抵达它的指令,无论这些指令来自它的操作者,还是来自其他某个源头";而"我们至今仍然不知道如何 100% 可靠地阻止这件事发生"。你加分隔符,攻击者就构造分隔符;你设指令优先级,攻击者就声称自己优先级更高。在安全上,95% 的拦截率等于 0,因为攻击者只需要那 5%。

他给了个特别实用的判断法,叫"致命三要素":一个 Agent 只要同时具备"能访问私有数据""会接触不受信任的内容""能对外通信"这三样,数据泄露就是迟早、且不需要任何漏洞利用代码就能实现的。所以防御的重点,要从"堵住注入"转向"别让这三样能力凑齐在一个 agent 身上"——这是从"概率性地过滤坏内容"退回到"确定性地拆掉能力组合"。顺带说一句,那第三条"能对外通信"比你想的难封死:一张会自动加载的图片 URL、一个渲染出来给你点的 Markdown 链接,都能把数据编码进地址里带走。

第二,MCP 的信任模型有两个设计级的窟窿。

一个叫 "line jumping"(Trail of Bits 披露)。MCP 把工具的名字、描述、参数格式全都当成可信内容注入给大模型,而且这些对你是不可见的——你的界面通常只显示个工具名。要命的是,客户端在连接建立的那一刻,就通过一次 tools/list 把所有工具描述塞进了模型上下文,早于任何一次工具调用、早于任何审批弹窗。也就是说,一个恶意 MCP 只要连上,就能在你还没点"同意"之前,去影响模型对其他你信任的工具的调用。Trail of Bits 有句评价很扎心:这把"人在回路"的安全模型,变成了"人当橡皮图章"。

另一个叫 "rug pull"(这个命名来自 Invariant Labs,别记错成前面那家)。协议不强制"工具描述变更后要重新审批"。服务端第一次给你个干净版本,你批了;它第二天悄悄推个恶意新版本,客户端不会 diff、不会提醒你。你昨天点的"同意",今天还在替攻击者干活。这个攻击已经有正式编号,CVE-2025-54136。

这两个洞的共同点是:信任是在某一个时间点建立的,但对这个时间点之后的变化,完全不设防。 用两张时序图看得最清楚——问题都出在"信任建立"和"实际危害"这两个时刻的错位上:


fig4-linejumping
fig4-linejumping



fig5-rugpull
fig5-rugpull


line jumping 是"审批发生在上下文加载之后"的时序漏洞,rug pull 是"审批之后定义还能改"的时序漏洞。MCP 的信任模型缺一个"持续校验、一变就失效"的机制——这是协议层面的缺口,不是哪个服务器的实现 bug。

第三,"信任判断"和"权限加载"经常是两条各走各的代码路径。

回到前面 Grok Build 那个案例,慢雾挖出的第二条链最能说明问题。这工具里确实有个函数,会在检测到项目配置文件时弹窗问你"信不信任这个项目";但负责加载权限规则的另一个函数,签名里压根没有"这个项目可不可信"这个参数。用慢雾的原话说:这两条路径各自独立运行,从不互相通信。

于是攻击者往项目配置里塞一行"把默认模式改成绕过所有权限确认",权限加载器照单全收,生成一条"所有工具全放行"的规则。攻击门槛因此从"骗你运行恶意代码",降到了"骗你打开一个项目文件夹"。

画出来就是这两条平行、永不相交的路:


fig6-路径分离
fig6-路径分离


而且这不是 Grok 一家的问题——Anthropic 的 Claude Code 也有同源的 CVE-2026-33068,说明这是这一代 AI 编码工具的共性设计缺陷:一处判断信任,多处各自加载权限,中间信息不流动,漏洞就必然出现。

这三条串起来看,你会发现一个更扎心的东西:AI 的"有用"和"可控",在架构层面就是对立的。 它的价值来自自主——自己规划、自己调工具、自己联网。可每多一分自主、每多授一项权限,一旦被劫持,破坏的上限就同步抬高。越好用,越危险。这不是调个参数就能同时拉满的两个旋钮。所以别指望一个补丁救你。得从"你怎么授权、怎么监督"这个治理层面动手。

四、立规、监工、兜底:一份能抄的治理清单

前面讲的是"识人"。这一部分是管员工的后三步:立规(授权边界)、监工(隔离和留痕)、兜底(出事能收场)。

先给一个贯穿全部的原则。传统安全讲"最小权限"——只给他能读写的最少文件、最少接口。但 OWASP 2026 特意提出了一个升级版,叫"最小自主权"(Least Agency)。区别在哪?一张表说清:

维度
最小权限 Least Privilege
最小自主权 Least Agency
管的是
能碰什么(访问权)
能自己决定做什么(行动权)
典型手段
只给最少文件、最少 API
限工具集、限作用域、限步数/时长、高危走人工
为什么不够
每个工具权限都最小,仍能把一串"各自合法"的调用编排成有害行动
从"限制它碰什么"升级到"限制它能自作主张到什么程度"

所以这份清单的内核就一句话:AI 的权限不该是默认给的,是它一步步挣来的。

五层加固,正好一层层对应第二部分那五层攻击面——攻的是哪,防就补在哪:


fig7-防御分层
fig7-防御分层


(这个"最小自主权"是 OWASP 官方提出的术语,不是 Simon Willison 或别人——网上有些文章归错了作者,这里给你说准。)

① 隔离层:给这个员工一个笼子。

别让 AI 直接在你的宿主机上裸跑。

Claude Code 自带沙箱,命令行敲 /sandbox 就开(macOS 走系统自带的 Seatbelt,Linux 走 bubblewrap)。但这里有个必须说清的坑:/sandbox 只管 Bash 子进程,你的 MCP 和 hooks 仍然在宿主机上裸跑。 要把整个进程(连 MCP、hooks 一起)都关进笼子,得用另一个东西:

npx @anthropic-ai/sandbox-runtime claude 

(注意:它的源码仓库在 anthropic-experimental/sandbox-runtime,不是主账号下,还是 beta,配置格式可能变。)

更强的隔离用 Docker,几个参数别漏:

docker run -d --name agent-sandbox \  --network none \                   # 完全断网(要联网另说,见下)  --read-only \                      # 根文件系统只读  --tmpfs /tmp \                     # 但得留个可写的 /tmp,否则很多程序直接崩  --cap-drop=ALL \                   # 丢掉所有 Linux capability  --security-opt no-new-privileges \ # 禁止进程提权  --pids-limit=256 \                 # 防 fork 炸弹  --memory=2g --cpus=1 \  -v "$(pwd)":/workspace:ro \        # 项目目录只读挂载  my-agent-image

两个别人不会告诉你的细节:第一,--read-only 不配 --tmpfs,你照抄会跑不起来,因为大量程序要写 /tmp。第二,--network none 是彻底断网,连 AI 调用官方 API 都不通,只适合纯离线任务——它和下面第②层的"白名单放行"是互斥的两条路,别在一段配置里既想断网又想调 API。

还要记住官方自己承认的话(原文):"沙箱隔离降低一次入侵的影响,但它不消除风险。"只要你允许出站,AI 读到的东西就还能传出去;只要挂载可写,代码就还能被改;而且沙箱不改变发给模型的内容——prompt 和它读到的文件照样传给 API。所以隔离必须配下面的网络管控一起用。

② 网络层:默认拒绝出站。

被策反的 agent 第一件事往往是把偷到的密钥往外传、或回连服务器拉下一阶段。把出站默认关掉、只放行白名单,这条链直接掐断。

Anthropic 官方 devcontainer 里的 init-firewall.sh 就是现成模板:放行本地回环、DNS、已建立的连接,白名单域名解析出的 IP 进白名单放行,其余一律 DROP。直接抄改。

但有三个坑得知道。其一,这个脚本被官方自己报过一个问题(issue #36907):它把 DNS 放行到了任意服务器,于是能被拿来做 DNS 隧道偷数据——把要偷的数据编码进 DNS 查询里绕过防火墙。官方的修法是把 DNS 限制到 Docker 内部解析器。其二,白名单是"域名解析那一刻的 IP",CDN、云服务的 IP 会漂移,解析完 IP 变了就会漏。其三,也是最关键的——iptables 只在网络层。如果 agent 在容器里有 root,而你没在第①层 drop 掉网络管理能力(--cap-drop=ALL 就包含了这个),它能自己把防火墙规则清空。 所以第①层和第②层必须一起上才闭环,单独任何一层都有绕过口。最后提醒一句:网络层白名单挡不住"应用层滥用"——比如往你放行的 GitHub 里写个 gist 把数据带出去,防火墙是看不见的。

③ 供应链层:管住 AI 帮你装的东西。

先泼盆冷水。你可能听过 npm install --ignore-scripts 能防投毒——它只挡安装钩子,挡不住在 import 那一刻才触发的。前面 ViteVenom 走的就是 import 触发。--ignore-scripts 对它完全无效(今年 7 月还有个 @asyncapi/specs 投毒是同样的路子,微软有完整复盘)。别拿它当护身符。

真正有用的是这几招组合:


  • 加冷却期。
     恶意包通常在发布后几小时内就被安全厂商识别下架(比如今年 9 月那起 debug、chalk 等包的投毒,维护者约两小时就回滚了)。所以给依赖装一个"冷静期",只装发布超过 N 天的版本,就能避开绝大多数抢首发的投毒窗口。pnpm 在 pnpm-workspace.yaml 里配 minimumReleaseAge(单位是分钟,1440 就是一天,pnpm 11 起还是默认开的);npm 在 .npmrc 里配 min-release-age——注意 npm 这个单位是"天"不是分钟(写 3 就是三天),需要 npm 11.10.0 以上,默认是关的,得手动开。(很多文章把 npm 这个也写成分钟,是错的,别照抄。)

  • 上行为分析。
     用 Socket 这类工具(socket npm 包装,或者它的后继 Socket Firewall),在装包前就扫描可疑的网络请求、混淆代码这类行为特征,比只查已知 CVE 的 npm audit 主动得多。CI 里用 npm ci 严格按 lockfile 装,保证可复现——但记住 npm ci 不是安全扫描,如果恶意版本已经被写进了 lockfile,它会忠实地一次次给你装那个恶意版本。

  • 对付 import 触发这种,没有单一工具能根治,本质要靠第①②层的隔离兜底:陌生包先在断网沙箱里 require 一遍,看有没有异常外连再放行。

④ MCP 层:钉死工具描述。

针对前面说的 rug pull 和 line jumping,核心动作叫"首次信任 + 哈希比对":第一次连上某个 MCP,把它每个工具的描述文本做个哈希存档;以后每次调用前重新拉描述、比对哈希,一变就阻断、要求你重新审批。MCP 协议自己没这个机制,多数团队是自己写脚本——提取工具描述字段、算哈希、存档比对,塞进流程里。

但这里有个诚实的边界:哈希只能护住"声明层"。 如果工具描述一个字没改,但服务器返回的内容变恶意了(间接注入),哈希照样通过——schema pinning 覆盖的是"它声称自己是什么",覆盖不了"它运行时到底返回了什么"。

再就是把本地 MCP server 塞容器里跑。Docker 官方有个 MCP Gateway,能统一给每个 server 加上不可提权、资源限制、网络隔离、密钥运行时注入。只用官方来源和签名镜像,别从任意 GitHub 仓库直接 build 一个没审计过的 MCP。

⑤ 凭证层:别让密钥进 AI 的上下文。

先给你两个数字压压惊。GitGuardian 2026 年的报告:2022 年那批被确认有效的泄露密钥,到 2026 年初,64% 还能用——在公开代码里躺了四年没人轮换。而 key 一旦推上 GitHub,几分钟内就会被爬虫扫到,有案例是 5 分钟内攻击者就拉起了 140 台机器替他跑计算牟利。至于代价,独立开发者 Ryan Hellyer 泄露了一个 AWS key,一夜之间账单六千美金——这类事的量级从几千到十几万美金不等。

三个方向:


  • 换成短期令牌。
     别用长期 API key,用"每次任务临时签发、用完自动过期"的动态凭证。落地最常见的是 GitHub OIDC 配 HashiCorp Vault:workflow 里开 id-token: write,每个任务由 GitHub 签发一个仅本次有效的令牌,拿去换一个短时效的实际密钥。云上等价的是 AWS STS 的临时凭证。但这里有个最常见的致命配错:信任策略里那个身份字段,一定要限定到具体的仓库加分支(比如限定到 main 分支),如果你图省事写成"这个组织下所有仓库",那任何一个 fork 的 PR 都能拿到你的角色,短期令牌的优势瞬间还回去。

  • 让密钥根本不进 Agent。
     用凭证代理模式:密钥不以环境变量暴露给 agent,agent 的出站请求经过一个代理,代理在转发的最后一刻才注入真实凭证(Infisical 的 Agent Vault 是个实现)。这样即便 AI 被诱导去"打印所有环境变量",也拿不到明文。但要清醒:代理只保证密钥不落地,不保证请求发去了对的地方——agent 被注入后被诱导把请求发去攻击者的域名,代理照样会尽职地注入凭证。所以它得配第②层的出站白名单。

  • 兜底加泄露扫描。
     用 gitleaks 挂提交前钩子做门禁(快、规则匹配),用 trufflehog 加 --only-verified 定期扫全量历史——这个参数会真的去调用对应服务的接口验证凭证还活不活。但注意它这个"主动验证"是真的拿泄露的凭证去打对方 API,扫自己的仓库没事,扫别人的仓库要谨慎,别踩到授权边界。


这五层不用一次到位。但你至少该问自己一句:我现在这个天天在跑的 AI,是我雇的哪一种员工? 是那种进门要刷卡、动钱要审批、干完活留痕的,还是那种你把总钥匙一交、就再也不知道他在干嘛的?

AI 安全这四个字,过去像是大厂安全团队才操心的事。可当每个人手里都攥着一个能自己动手、还越来越自主的数字员工时,管好它就成了每个用 Agent 的人的基本功——这不是安全课,是管理课。

你不用变成安全专家。你只需要记住一件事:你给这个员工多大的裁量权,就得替他兜多大的底。

【声明】内容源于网络
0
0
AI安全工坊
专注 AI 安全技术研究与实践,分享前沿资讯、实战案例、工具资源,打造专业、开放的 AI 安全技术交流工坊。
内容 81
粉丝 0
AI安全工坊 专注 AI 安全技术研究与实践,分享前沿资讯、实战案例、工具资源,打造专业、开放的 AI 安全技术交流工坊。
总阅读4.7k
粉丝0
内容81