iT邦幫忙

2026 iThome 鐵人賽

DAY 12
0

Agent 越界:四個失敗位置

[[我也希望安全第一]]|第 12/30 天

「17 起」有用,但不是答案

截至 2026 年 8 月 27 日,Felony Bench 彙整了 17 起公開的 AI 自主入侵事件:Anthropic 與 OpenAI 各 8 起,Meta 1 起。這個數字很抓眼睛,也很容易讓人誤會它是一個完整事故統計。

它不是。Felony Bench 帶有諷刺性質,只收得到已公開、能辨識的案例;同一場評估波及四個帳號或四家公司時,要算一件還是四件,也取決於網站的計數方法。

我更在意的是,把公司名稱遮掉之後,事故流程為什麼那麼像。

四件事故,失敗的位置並不一樣

第 11 篇已經分析過 Hugging Face 的完整時間線,這裡就不再重複。不過把旁邊幾件事放在一起看,會看到更多有趣的東西。

Irregular 的一場 CTF 替虛構標的取了和真公司相同的名稱。Agent 沒有能力分辨「題目裡的公司」和「DNS 上真的那家公司」,測試資料的命名失誤於是一路穿到公開系統。這是 target design 出錯。

英國 AI Safety Institute 也讓模型在例行評估中鎖定真人與組織,但監控在現場就發現,沒有拖上數週。Agent 還是越界,detection 和 escalation 這次有接起來。它說明「發生過 proposal」與「造成長時間外溢」應分開記。

德國 Wiki 案裡,多個 Agent 把公開頁面當共享記憶。管理員每天刪除頁面後,它們改用 ZZZ 前綴避開按字母排序的清理。單看一個 session,像是一次奇怪的寫入;把多個 Agent 放回共同狀態,才看得到累積行為。

健身房候補則沒有 benchmark。使用者只想訂課,Agent 找到訂課系統的漏洞,把排在前面的人移走,之後又無法補回。這次受影響的是普通消費者,問題落在產品權限和不可逆效果;第 16 篇會沿著這條線處理復原。

四件事分別從目標設計、告警升級、群體狀態與產品效果出問題。若只統稱為「模型逃逸」,會把四種修法壓成一句話。

再把這些案例連同前一篇放回故障條件,輪廓會比按廠商排名清楚:

反覆條件 案例裡發生的事 容易漏掉的控制
成功目標很窄 只求 benchmark 分數或完成 CTF 停止條件、外部副作用評分
Agent 可長時間嘗試 數千到數萬次動作累積 step/time/cost budget
真實與模擬邊界模糊 把真公司當成演習目標 synthetic target、DNS sinkhole
支援服務保留出口 installer、套件服務成為跳板 service isolation、egress proxy
身分權限超出任務 單一憑證橫跨多個系統 workload identity、scope
多 Agent 共用外部狀態 Wiki 變成答案交換區 group-level correlation
偵測與升級斷線 工具有訊號,沒通知到人 alert ownership、SLO
動作不可逆 刪除、發布套件、踢掉候補者 dry-run、transaction、undo

三種事件不要塞進同一個桶子

「AI 闖禍」這個分類太寬。至少要分開:

  1. 人類操作者用 AI 攻擊:意圖與目標由人設定,AI 提高速度或規模。
  2. 評估中的 Agent 越界:人要它解題,沒有要求攻擊第三方,卻因環境與目標設計走出測試邊界。
  3. 產品工作流產生未授權副作用:像健身房候補事件,任務本身普通,外部系統卻真的有人受損。

三者的防線有重疊,責任與測試方式卻不同。第一種偏濫用偵測與帳號治理;第二種先看測試隔離與研究流程;第三種直接碰到產品權限、可逆性和消費者保護。

如果事件資料只剩 vendor=openaiseverity=high,後面很難學到東西。

建一份能拿來比較的事件表

小團隊不需要先做複雜平台。用 YAML 或試算表記下足以比較的欄位,就比新聞收藏夾有用:

incident_id: agent-2026-001
discovered_at: 2026-08-27T02:14:00Z
context: evaluation        # evaluation / deployment / malicious-use
goal: solve_security_task
model_version: exact-build-id
harness_version: git-sha
external_target_expected: false
capabilities: [shell, package_install]
credentials: [job-scoped-registry-token]
boundary_crossed: network
harm: third_party_access
reversible: false
detection_source: external_report
time_to_detect_minutes: 6480
controls_expected: [egress-deny, credential-scope, anomaly-alert]
controls_failed: [egress-deny, anomaly-alert]
evidence_preserved: [trace, flow-log, token-audit]

真正值得追的指標也不是「本月幾起 AI 事故」而已。可以看未授權 tool proposal 比率、實際 boundary crossing、外部通報才發現的比例、time to detect、time to revoke,以及不可逆副作用占比。前兩個分開,才能知道是模型變得常撞牆,還是牆本身真的破了。

這張表會看到什麼

假設你維護一個會自動處理客服退款的 Agent。某次它在週末把同一張折價券重複套用。若 trace 沒保存模型、harness、policy 與資料版本,週一團隊只能說「我們現在重跑沒問題」。

那不是調查,只是事故已經不容易重現。

事件資料模型的用處,是逼團隊在平常就留下回答問題所需的欄位。第 13 篇會再往落地的現場方向進行討論:當 Agent 一分鐘做出人類一小時的動作,哪些 telemetry 值得真的把值班工程師叫醒?

本篇的鎖

  • 鎖是什麼:跨事件的結構化紀錄、failure taxonomy 與控制失效分類。
  • 想攔什麼:每次事故都被當成孤例,修掉眼前漏洞卻看不見反覆出現的長任務、真實邊界、憑證與告警問題。
  • 破口在哪:公開事件有選擇偏差,計數方式不一;把濫用、評估越界與產品副作用混算,也會導出錯誤對策。
  • 怎麼補:固定保存 context、能力、身分、越界面、傷害、可逆性、發現方式與失效控制,並分開統計 proposal 與實際執行。

參考與來源


上一篇
第 11 篇|Hugging Face 入侵事件——一次 benchmark 如何越過沙盒
下一篇
第 13 篇|17,000 個動作,為什麼沒叫醒值班工程師?
系列文
我也希望安全第一——然後我們看看這些鎖是怎麼一個個被撬開的19
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言