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 開發筆記
更新紀錄: 首次發布