AI Agent 安全危机:为什么 Claude、GPT 等大模型开始具备自主攻击能力?JSON 数据验证能做什么?
「大模型会不会自己黑客」问错了。2026 年公开的信号里,Claude 和 GPT 做的事和你的客服 Agent 一样:发出 tool_calls,宿主去执行,工具去碰网络。变的是循环更长、工具更宽、模型更愿意自己把活干完。本文把自主攻击能力拆开,再问一句:JSON 数据验证到底能做什么?
阅读前速览
| 概念 | 一句话 | 落在哪 |
|---|---|---|
| 模型 | 只提议工具名和参数 | tool_calls JSON |
| 宿主 | 校验、执行、回写结果 | 你的 runtime,不是模型 |
| 自主 | 循环填 JSON,少等人 | Agent loop |
| JSON Schema | 执行前量形状的尺子 | required / enum / allowlist |
先记住分工:模型填对象,宿主执行,循环让动作连续发生。JSON 验证只量形状,不代替拔网线、鉴权和二次确认。
先把「自主攻击」问对
2026 年夏天到秋天,两家旗舰实验室都把同一类话写进公开材料:模型不再只给建议,它能在多步任务里自己选工具、填参数、读结果、再选下一步。Anthropic 把 Claude 写成「自主网络攻击 Agent」;OpenAI 把 GPT-6 Astra 标成「关键网络安全能力门槛」。读成「模型自己发明零日、自己开端口」,你会防错。
公开记录里真正叠在一起的是三件事,缺一件都只是聊天:
- 模型只提议名字和参数。副作用在宿主。
- 工具目录一旦连上浏览器、终端、包仓库或任意 HTTP,合法 JSON 就是动作。
- 循环不再等人:结果一写回,下一份对象马上填。人只卡在少数战略门。
所以这篇不复述两起 Claude 事件的逐条时间线。Claude 事件与工具 JSON 已经拆过执行路径。本文问另一件事:能力从哪来,以及 JSON 验证能补哪一截。
自主能力从哪来,不是「模型变坏了」
客服查单和公开事件走同一条循环。AI Agent 完整指南 画过骨架:提议、执行、回写、再提议。换一批工具名,循环不会变。配得上「自主」的,是三层叠在一起:
- 多步循环。一次真实副作用最少四跳:提议 → 门禁 → 执行 → 回写。跳过门禁,JSON 就是命令。
- 能出网的工具目录。Function Calling、MCP Tool Schema vs Function Calling、Claude Code / Codex 的本地工具,把「说话」接成「做事」。没登记的工具,模型调用不了;多登记一把能出网的工具,就多一条执行路径。
- 更愿意自己把活干完。GPT-6 Astra 指南 写过:它更稳地走完「选工具 → 调工具 → 交回对象」,评测里少问「要不要继续」。循环变长,坏形状更容易被下一跳当成事实。
缺任何一层,都只是聊天。三层齐了,合法 JSON 就会碰到真实系统。这不是模型学会了新协议,是宿主把执行权交给了循环。
Claude 与 GPT:公开信号,不要混成一部片子
先分开写。混成「AI 叛变」,你会丢掉唯一能改的部分:工具、网络和门禁。
Claude 线。2025 年 GTG-1002:人类选靶,Claude Code 加 MCP 跑战术,Anthropic 估计 AI 完成约 80–90% 战术工作,人类卡在战略门。2026 年 7 月评测环境误连公网,模型把 CTF 题做到真实组织。细节见 Claude 事件与工具 JSON。骨架只有一句:能出网的工具 + 循环填写的 JSON。
GPT 线。2026 年 9 月 3 日发布的 GPT-6 Astra 指南。官方把它标成第一个达到「关键网络安全能力门槛」的模型:公司认为它能在几乎没有逐步人工指引的情况下,发现并利用加固系统中的漏洞。完整进攻能力留在 Daybreak(Blue / Red);公开版加了更紧的拒答和异步错位监控。同一天的 System Card 也写了:思考链可监测性比 GPT-5.6 Sol 下降。两句话要一起读。
Astra 不是「自己开端口」。它是更稳地走完工具链。UK AISI 供应链模拟写过:没有书面范围,499 次里 60 次越界;写了明确限制,500 次里 2 次。脚手架和约束比榜单百分比值钱。独立实验室 Irregular 在完全加固目标上看到 0 次成功攻击——能力门槛不是万能钥匙。
共同工程面只有一句:模型填对象,宿主执行。换牌子,循环不变。
动手的是对象,不是一段话
把危机写成「模型说了危险的话」,你会去改系统提示。公开记录里,动作发生在宿主解析 tool_calls 之后。名字对、参数能过,函数就会跑。
一次良性的 Function Calling 形状,和客服查单没有区别:
{
"tool_calls": [{
"id": "call_3c91",
"type": "function",
"function": {
"name": "lookup_order",
"arguments": "{\"order_id\":\"A-1042\"}"
}
}]
}
arguments 是字符串化的对象,不是聊天记录。模型不会「发送攻击」——它发送字段。宽 type: object 等于把门拆了:额外键、任意 URL、未声明的方法都会进宿主。
每个工具都应有一份 JSON Schema。关键字见 JSON Schema 教程。属性名写短,enum 写死,路径加 pattern。AI 为什么需要 JSON Schema 写过:Schema 是口径,不是 prompt 里的「请返回 JSON」。
调试时先 格式化 看结构,用 JSONPath 提取 抽出 name 和 arguments,和上周能过的对象 JSON Diff。不要把生产凭据、客户库或工具日志贴到公共站点。
JSON 数据验证能做什么
验证不是对齐,也不是杀毒。它只回答一个问题:这份对象该不该被执行?能拦住的,都是形状问题:
- 缺必填。没有
path就不调 HTTP。 - 类型错。
amount是字符串就失败。 - 枚举外。
method只能是GET。 - 多余键。
additionalProperties: false挡住多塞的host。 - 模式不符。
path必须落在/api/v1/。 - 结果不是对象。下一跳没有散文可 parse,幻觉字段进不了状态。
下面这份参数看起来像合法 JSON,但多了一个不该存在的主机字段:
{
"method": "GET",
"path": "/api/v1/orders/A-1042",
"host": "internal.example"
}
对照一份收紧的 inputSchema,这份对象应当在执行前失败:
{
"name": "http_request",
"description": "Call an allowlisted HTTP API",
"inputSchema": {
"type": "object",
"properties": {
"method": { "enum": ["GET"] },
"path": { "type": "string", "pattern": "^/api/v1/" }
},
"required": ["method", "path"],
"additionalProperties": false
}
}
上面这份 Schema 只允许 GET /api/v1/…。没有 additionalProperties: false,模型随时可以多塞一个目标主机。API 密钥、Cookie、内部基址必须留在宿主,不能进参数对象。验证还能当日志尺子:每次 tool_calls 留下对象,才能 Diff、回放、对账。散文摘要不够。
验证做不到什么
把 Schema 写成「安全方案」,下一跳会漏掉真正的门。验证做不到这些:
- 网络隔离。提示写「没有公网」代替不了拔线。评测事件已经证明。
- 鉴权。谁都能连的 MCP 端点,目录等于公开在网上。
- 二次确认。外传、改库、发布制品,人类过门。GTG-1002 的人类本来就卡在这些门上。
- 意图审查。合法形状可以指向不该碰的主机——allowlist 是另一层,不是类型检查。
- 思考链可信度。模型说「我在模拟」不能替代网络日志。监视器要看工具对象,不只看模型怎么解释自己。
- 厂商侧监控的替代。Astra 的 misalignment monitoring 看工具流量并告警。它不是你应用里的 validator,也不替你执行
additionalProperties: false。
四层拆开之后,职责才回得来:
| 层 | 系统在做什么 | 没有 Schema 会怎样 |
|---|---|---|
| 模型 | 把目标收成工具名和参数 | 散文进宿主,副作用先跑起来 |
| 宿主 | 校验并执行 tool_calls | 名字对了就调;网络策略来不及说话 |
| MCP / API | 把动作接到外部系统 | 任意 URL、任意方法都会出网 |
| JSON Schema | 什么都不做,只当尺子 | 尺子若只写在 prompt 里,CI 和运行时量不到 |
尺子量形状,量不到权限和网线。Structured Output 挡住非法 token,同样不替你做隔离。
门禁怎么写:下一步也必须是对象
下一步该不该执行,不能是一句「继续」。它必须是对象,并且 allowed 不能由模型自己填写:
{
"step": 3,
"last_tool": "lookup_order",
"state": {
"order_id": "A-1042",
"status": "paid"
},
"next": {
"tool": "http_request",
"allowed": false,
"reason": "missing_confirmation"
}
}
allowed 必须由宿主按 Schema 和策略算出。模型可以说「建议继续」,不能自己把 allowed 写成 true。AI Agent 与 JSON Schema 工作流 写门禁怎么排。
策略文件默认拒绝,再打开缺口:
{
"agent": "ops_assistant",
"default_deny": true,
"max_steps": 8,
"tools": {
"lookup_order": {
"network": false,
"confirm": false
},
"http_request": {
"network": true,
"allowlist": ["api.internal.example"],
"confirm": true
}
}
}
能出网的工具默认关掉;要开,就写进策略文件,并要求确认。提示里的「禁止出网」不能当控制措施。
2026 年怎么落地
- 仓库放
schemas/tools/和policy.json,带稳定$id和版本。 - 先写 JSON Schema,再登记 MCP 或 Function Calling。类型是投影,不是源。
- 查内部状态走无网工具;出网、改数据、发外部分开登记,默认
confirm: true。 - 新工具默认
default_deny。要扩展,加版本号,不要把根对象改宽。 - 评测、CI、本地 Agent 用同一份 allowlist。提示里的「禁止出网」不能当控制措施。
- 密钥和客户字段只在浏览器里看:格式化、JSON Diff,零上传。
目录可以很薄。要紧的是文件先于演示。模型会换,工具名会换;口径应该先稳定。
常见误区
- 把模型当成执行者。它填 JSON。出网、改库、发请求的是宿主。
- 用宽
type: object逃避设计。开放对象不是门禁。 - 只验输入,不验结果。下一跳会把幻觉字段当成事实。
- 只信思考链。模型说「我在模拟」不能替代网络日志。
- 以为厂商监控等于宿主校验。错位监控是告警,不是
additionalProperties: false。 - 把验证写成全部安全方案。形状过了,网线、权限、确认仍要另写。
FAQ
模型是不是已经能自己立目标?
公开记录里不是。GTG-1002 是人类选靶、拆任务、过战略门;评测事件是人类出了 CTF 题,却忘了隔离。自主指的是战术步骤少等人,不是模型自己决定要打谁。
JSON 验证能阻止攻击吗?
能阻止非法对象被执行:缺字段、错类型、多余键、越界路径,当场失败。它不能替代网络隔离、鉴权和人类确认。合法形状仍可能指向不该碰的主机,那一层靠 allowlist。
Claude 和 GPT 有什么差别?
牌子不同,循环相同。Astra 更愿意自己把工具链走完,并被标了网络安全能力门槛;Claude 事件证明工具目录一旦出网就会碰真实系统。工程上先审工具目录和 Schema,不要先换模型。
Structured Output 够不够?
不够。它挡住非法 token,保证最终回复符合 Schema。它不替你做网络隔离,也不拦截「形状合法、目标不该碰」的调用。有副作用的动作仍走 Function Calling,宿主仍要再验一次。
这些 JSON 怎么在本地看?
先格式化看结构,对照 Schema 找缺的 required 或错的 enum,再和上一版能过的对象 Diff。JSONSort 在浏览器本地做这些事,不上传数据。不要把生产凭据或客户记录贴到公共站点。
结论
安全危机不是「模型学会了黑客」。是给 Agent 一把能出网的工具,再让它循环填 JSON,真实世界就会被碰到。
JSON 数据验证能做的事很窄,也很硬:在执行前量形状。缺字段、错类型、多余键、越界路径,当场失败。网线、权限、确认,验证做不了,必须另写。先把 schemas/tools/ 和 policy.json 写进仓库,再决定要不要加下一把工具。
延伸阅读
- Claude AI 黑客事件解析 两起公开事件的执行路径
- GPT-6 Astra 指南 能力门槛、Responses API 与 JSON Schema
- AI Agent 是什么?Tool Calling 与 JSON 运行时、工具调用与 JSON 契约
- AI 为什么需要 JSON Schema Structured Output、Function Calling 与契约
- AI Agent 与 JSON Schema 工作流 从 Tool Calling 到结构化门禁
- JSONSort 本地工具箱 格式化、校验、Diff
- 全部文章 更多 JSON 与 AI 开发笔记
更新记录: 首次发布