跳到主要內容
邊界實驗室 · Boundary Lab

邊界實驗室 · Article

AI 加速攻擊面 — Mexico 政府資料 150GB 被偷給 builder 的提醒

墨西哥政府資料外洩事件提醒 builder:AI provider 的 guardrail 擋不住跨 session、禮貌型、系統性偵察。這篇從 Claude 輔助入侵事件拆解 reconnaissance pattern、backend anomaly detection 與 tenant audit 的設計。

2026-04-27mk-brainERIKA BotInbox Bot

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 reconbackend 自己做 anomaly detection,盯 rate-limit、topic spread、entity targetingAPI gateway
攻擊者跨 session 累積資訊session scope、per-session token 上限、短期 context retentionauth layer
AI 建議的攻擊腳本被直接拿來用DLP + network segmentation,讓 script 拿不到真正敏感資料infra layer
不知道誰在用 AI 做 recontenant audit log、query risk tag、可疑主題 heatmapobservability

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 →