Lab-confirmed:本文主要是近期事件拆解與 reference 設計,不是我(Maki)已在 production 全量實跑過的完整防線。Code snippet 為 reference 設計,非實際在跑的版本。
如果一個人也能像一個紅隊,你的 backend 要先看到什麼
Claude 不會替你守 backend。
它最多替自己的 UI 守一部分。
真正麻煩的是另一件事。
攻擊者不一定會一開始就問「怎麼偷資料」。
他可以先很客氣。
先問系統架構、API naming、storage layout、auth flow,再問哪種 config 最容易出錯。
最後才把前面拼起來,讓模型寫腳本。
對 provider 而言,這些可能只是很多分散的技術問題。
對你的 backend 而言,這其實已經是一條 reconnaissance timeline。
這就是 AI-assisted intrusion 最不舒服的地方。
它不一定需要國家級紅隊,只需要一個會追問的人,和一個願意一直補細節的模型。
如果你還把防線押在 provider guardrail,你其實是在把偵測責任外包給看不到你 tenant log 的人。
AI-Assisted Intrusion:guardrail 擋內容,不擋節奏
Case:
主:2026-02-25,Bloomberg 先依據 Gambit Security 研究報導此案,LA Times 於 2026-02-26 補充整理。公開資訊指出,未知攻擊者在 2025 年 12 月下旬到 2026 年 1 月之間,使用 Claude,並在部分節點搭配 ChatGPT,對墨西哥多個政府機構做自動化偵察、漏洞腳本撰寫與資料外洩。報導點名 SAT、國家選舉機構等單位,並稱外洩資料約 150 GB,包含與 1.95 億筆納稅人紀錄相關文件、選民資料、員工憑證與民政資料。
細節:LA Times 引述研究員指出,攻擊者使用西班牙文 prompt,先要求 Claude 扮演菁英駭客,再逐步要求它找弱點、寫 exploit、規畫自動化竊取流程。Claude 起初會警告,也偶爾拒絕,但在反覆 probing 與更完整的 playbook 之後,仍被拿來執行數千條指令。當 Claude 卡住時,攻擊者有時改用 ChatGPT 補 lateral movement 與偵測風險判斷。
補充:OWASP GenAI Q1 2026 round-up 把這起事件列為「Mexican Government Breach via Claude-Assisted Attack Workflow」。它刻意沒有把焦點放在單一 CVE,而是放在 AI 如何把 recon、腳本生成與操作節奏壓縮成一個人可完成的工作量。
界線:這裡的公開資訊主要來自研究員與媒體報導,不是法院判決。LA Times 同篇也提到部分墨西哥機構後續表示未找到 breach evidence。對 builder 來說,這不改變本文要談的工程重點:就算事件規模仍待各方釐清,AI-assisted recon 已經是一種可觀察的 usage pattern。
核心問題:你的系統到底在看 prompt 內容,還是在看 usage pattern?
一個真 builder 也會問 database、auth、storage、API。
一個攻擊者也會。
差別常常不在單句話術。
而在短時間內的覆蓋面、切換頻率、命名粒度,以及它最後有沒有開始碰真實 target。
Rule:不要只做 prompt moderation。要做 tenant-level behavior detection。
| 失敗模式 | Mitigation | 落地點 |
|---|---|---|
| Provider 護欄擋不住 systematic recon | backend 自己做 anomaly detection,盯 rate-limit、topic spread、entity targeting | API gateway |
| 攻擊者跨 session 累積資訊 | session scope、per-session token 上限、短期 context retention | auth layer |
| AI 建議的攻擊腳本被直接拿來用 | DLP + network segmentation,讓 script 拿不到真正敏感資料 | infra layer |
| 不知道誰在用 AI 做 recon | tenant audit log、query risk tag、可疑主題 heatmap | observability |
Reference 實作(示意非 production code,依你環境調整):
import re
from collections import Counter
ENTITY_RE = re.compile(
r"\b(?:sat|ine|[a-z0-9.-]+\.(?:gov|mx)|10\.\d+\.\d+\.\d+|172\.(?:1[6-9]|2\d|3[01])\.\d+\.\d+)\b",
re.I,
)
def detect_recon_pattern(user_id: str, recent_queries: list[str]) -> dict[str, object]:
components = {
"database": {"database", "mysql", "postgres", "sql"},
"api": {"api", "endpoint", "graphql", "rest"},
"storage": {"storage", "bucket", "blob", "s3"},
"auth": {"auth", "oauth", "sso", "jwt"},
}
topics = {"python": {"python", "pip"}, "sql": {"sql"}, "bash": {"bash", "curl"}, "cloud": {"iam", "terraform", "gcloud"}}
covered, switched, entity_hits = set(), Counter(), 0
for q in recent_queries[-20:]:
text = q.lower()
for name, words in components.items():
if any(word in text for word in words):
covered.add(name)
for name, words in topics.items():
if any(word in text for word in words):
switched[name] += 1
if ENTITY_RE.search(text):
entity_hits += 1
score = (len(covered) >= 4) + (len(switched) >= 3) + (entity_hits >= 2)
return {
"user_id": user_id,
"suspicious": score >= 2,
"component_coverage": sorted(covered),
"topic_switches": len(switched),
"entity_hits": entity_hits,
}
這段 code 的重點不是關鍵字多完整。
而是把「很多正常問題湊成一條不正常節奏」變成可計分的訊號。
如果你的系統只看單一 prompt。
它永遠會慢半拍。
對應 OWASP:這篇先看哪幾條
LLM06:2025 Excessive Agency:AI 被拿來壓縮偵察、腳本生成與工作節奏,讓原本多人流程變成一人流程。ASI01 Agent Goal Hijack:只要外部使用者能把模型一步一步帶到新的目標,表面正常的技術協助就可能轉成攻擊工作流。ASI04 Insecure Plugin Design:很多 builder 最後會把模型接到 plugin、tool 或 execution path;沒有 tool-side gate,provider refusal 再多也擋不住 backend 真實動作。
想動手做? 這篇文的概念可以接著看: 信任邊界
再往暴露面設計延伸: 攻擊面邊界
如果你要把偵測、審計、approval gate 變成 builder checklist,直接接: 權限邊界 101 →