Prompt InjectionAI 安全開源BuildInPublicCiscoMicrosoftAI Agent

Cisco 在 39 分鐘內 merge 我的 PR — 為什麼提示詞防禦會變成新的 SQL Injection

· 16 分鐘閱讀

39 分鐘

那是 Cisco AI Defense 團隊從收到我的 PR 到 merge 進主分支的時間。

873 個 star 的 repo(cisco-ai-defense/mcp-scanner),27 分鐘 approve,再 12 分鐘 merge。我那時候在通勤的捷運上盯著 GitHub 通知,手抖到差點下錯站。

但這篇不是要講那 39 分鐘。

是要講讓那 39 分鐘變成可能的,前面四個月


起心動念:一次「順手」的掃描

時間倒回 2026 年 1 月。

我在開發 UltraProbe — 一個 AI 安全掃描器。產品的核心邏輯之一,是檢查 LLM 系統提示有沒有對抗 prompt injection 的基本防禦。

那時我心想:「我自己 dogfooding 一下吧,掃個一兩百個公開的提示詞看看。」

結果掃完後,我盯著螢幕看了五分鐘。

78% 拿 F。

不是「設計得不夠好」的 F,是完全沒有任何防禦語句的 F。沒有 role-escape 防禦,沒有 output manipulation 防禦,沒有 input validation 邊界宣告,什麼都沒有。

包括我自己之前隨手寫的那些 prompt。

那一刻的感覺很複雜。一方面意識到 OWASP 把 Prompt Injection 列為 LLM 應用的第一大威脅,是真的有原因的 — 不是學術擔憂,是現場現實。另一方面,我開始想:

如果連用 AI 做產品的人都沒在做,那一般企業客服 bot、內部 agent、自動化流程裡的提示詞,會是什麼樣子?

這個問題後來變成了我接下來四個月的主軸。


研究:把掃描器變成 npm 套件

第一個版本很粗暴:把 UltraProbe 裡的掃描邏輯抽出來,包成 CLI。

12 個攻擊向量,純 regex,零依賴,1 毫秒跑完。

npx prompt-defense-audit "You are a helpful assistant."
# Grade: F (8/100, 1/12 defenses)

我刻意不用 LLM 來檢查 LLM。原因很簡單:

  1. 可重現 — regex 給定相同輸入永遠給同一個結果。LLM 不行。
  2. 零成本 — 跑一萬次跟跑一次一樣便宜。
  3. 可審計 — 每個 finding 都能溯源到一行 regex pattern。
  4. 靜態分析友善 — 可以當成 CI/CD gate,不用網路、不用 API key。

把它丟上 npm(prompt-defense-audit),然後做了一件我以為沒人會在意的事:用它去掃市面上的開源 AI 工具

掃了 modelcontextprotocol/servers 的 7 個官方 server — 6 個拿 F。 掃了 LangChain 的範例 prompt — 大部分 D 或 F。 掃了我自己 OpenClaw fleet 的 SOUL.md — 50/100,D 級,6/12 防禦。

數據開始有重量了。


被採用(一):Cisco — 39 分鐘

2026 年 4 月初。

我在 Cisco AI Defense 的 mcp-scanner repo 裡看到一個 issue 在討論「如何系統化檢查 MCP server 的 prompt 暴露面」。

我看完想了三件事:

  1. 我有現成的工具
  2. 他們的 codebase 是 Python,我的是 TypeScript
  3. 那就用 Python 重寫一遍,當作 PR 提交

花了一個下午把 12 個 vector 翻成 Python,寫了 23 個 unit test,讓它符合他們現有的 Analyzer interface。PR #146 提交。

27 minutes later: ✅ Approved
12 minutes later: ✅ Merged

Cisco 是全球最大的網路設備公司之一。他們的 AI Defense 團隊不是隨便 merge 個 PR — 他們審查很嚴。能在 39 分鐘內走完 review + merge,意思是:

他們本來就在等這個東西。

只是市場上沒有。所以我寫了一個,正好。


被採用(二):Microsoft — 主動指派

幾天後,我在 Microsoft 的 agent-governance-toolkit repo 留了一個 issue #821,提議加入一個 PromptDefenseEvaluator 元件。

不是 PR,是 issue。我寫了問題、提了 12-vector 框架、附上 prompt-defense-audit 的設計理念,然後就去吃晚餐了。

回家打開信箱:

Hi! Thanks for the proposal. I'm assigning this to you. Please proceed with a draft PR.
— imran-siddique(Microsoft Engineering Architect, Bellevue)

Microsoft 工程主管主動把 issue 指派給一個外部貢獻者

我接下來一週寫了 1,110 行程式碼、58 個測試,遵循他們現有的 SupplyChainGuard 設計模式,用 black / ruff / mypy --strict 全綠,Draft PR #854 提交。

它不是隨手 merge — 大公司流程慢,現在還在 review。但它在那裡,是 Microsoft AI 治理工具中的一個官方提案。


被採用(三):NVIDIA — 沉默的 14 天

不是每次都有戲劇性結局。

NVIDIA garak(LLM 紅隊測試工具)在 issue #1666 討論「靜態 prompt 防禦審計」。我寫了四萬字的方法論討論,附上 Python 實作的兩個方案。

leondz(核心 maintainer)的回覆風格嚴格 — 之前審 PR #1668 時要求「每個 vector 必須有 trigger、必須有 test、最少 30 個 prompt」。我這次直接把這些都符合了。

留言發出去到現在,14 天,沒有回應

不一定是壞事 — 可能是 maintainer 在忙、可能是 issue 不在優先級、可能是他們有別的方向。但這就是開源世界的現實:

你能控制提交品質,但不能控制反應速度。

Cisco 39 分鐘、Microsoft 一週、NVIDIA 14 天 silence。同樣的工具,三種命運。


為什麼這件事重要 — 趨勢論證

我寫這篇不是要講三個 PR 的故事。是要講接下來兩到三年會發生什麼事

一、AI Agent 與客服正在指數成長

2024 年,企業裡的 LLM 應用主要是 chatbot。 2025 年,多數企業開始部署 RAG。 2026 年,Agent + 工具呼叫變成新基線。

每一個 agent 都需要一個系統提示。每一個客服 bot 都需要一個系統提示。每一個內部自動化流程都需要一個系統提示。

而 78% 的生產環境提示詞,連一行防禦都沒有。

這個比例不會自己變好。因為:

二、模型更新速度遠快於人類學習速度

GPT-4 → GPT-4o → GPT-5。 Claude 3 → Claude 4 → Claude Opus 4.7。 Gemini 1.5 → 2.0 → 2.5。

每三到六個月,底層模型的行為就被洗掉一次。你針對某個版本調好的 prompt,下個版本可能整個崩潰。

但攻擊者不需要重學。Prompt injection 的核心模式(role escape、instruction override、context confusion)跨模型通用,因為它們利用的是 LLM 的本質結構,不是某個版本的 quirk。

這個不對稱會越來越嚴重。防禦端要持續適應新模型,攻擊端只要知道一招就夠用。

三、企業是 AI 的優先採用者

不是個人開發者。不是新創。是企業。

因為他們有:

  • 預算 — API 成本不是問題
  • 流程 — 已經有客服中心、業務系統、內部知識庫,套 LLM 是天然延伸
  • 動機 — 一個 agent 可以取代 30% 的初階人力

但企業也有:

  • 資安壓力 — 一旦出事,董事會罵的力道是 startup 的十倍
  • 合規需求 — GDPR、HIPAA、SOC2 全都在重新框架 LLM 風險
  • 聲譽風險 — 客服 bot 講錯話,新聞會寫一週

換句話說,企業是最在意防禦、但也最沒時間自己做防禦的客戶

四、底層防禦會變成新的 SQL Injection

回想 2005 年。SQL Injection 是當時最常見的網站攻擊。但解法很簡單:parameterized query。問題是大部分開發者不知道、或寫得太趕沒做。

OWASP 把它列在 Top 10 第一名整整十年,業界才慢慢補完。

Prompt Injection 在 2026 年的位置,跟 SQL Injection 在 2005 年很像:

  • ✅ 攻擊向量已知
  • ✅ 防禦模式已知
  • ✅ 工具已經有
  • ❌ 大部分人還沒做

差別是 — Prompt Injection 的後果可能更嚴重。SQL Injection 大不了 dump 資料庫;Prompt Injection 可以讓 agent 做出它有權限執行的任何動作:發 email、刪檔案、轉帳、外洩內部對話。


所以呢

我做 prompt-defense-audit 不是因為它酷,是因為它簡單到不該是個問題,但偏偏所有人都漏掉了

12 個 regex pattern。1 毫秒。零依賴。可以塞進 CI/CD 當 gate。

如果你的產品裡有任何 LLM 相關的 prompt — 客服 bot、agent 系統指令、RAG 模板、開發中的 chatbot — 花 30 秒掃一下:

npx prompt-defense-audit "你的系統提示貼這裡"

拿到 F 不丟臉。沒拿 F 才丟臉,因為那意味著你連跑都沒跑過。


接下來

prompt-defense-audit 是我接下來兩年的主線之一。下個版本會加:

  1. 內網企業版 — 不上傳 prompt,全在客戶 VPC 裡跑
  2. CI/CD Action — 已上 GitHub Marketplace,PR comment 自動帶分數
  3. vector 擴充 — 從 12 個擴到 24 個,覆蓋 multi-modal injection

如果你在企業負責 AI 安全 / 合規 / 採購,歡迎在 DiscordGitHub 找我。我們需要更多現場 case 來驗證 vector 設計。


四個月前,我只是想 dogfood 一下自己的工具。

四個月後,三家美國科技巨頭的 repo 裡有我的 commit。

中間沒有什麼天才時刻。就是看到一個明顯的洞,剛好沒人在補,剛好我有工具能補。

AI Agent 普及前,提示詞防禦是個冷門題目。普及後,它會變成基礎設施。

而基礎設施的窗口,正在打開的這幾個月,是最安靜也最關鍵的時刻。


相關資源

每週 AI 自動化實戰筆記

不廢話,只有能直接用的東西。Prompt 模板、自動化 SOP、技術拆解。

加入一人公司實驗室

免費資源包、每日建造日誌、可以對話的 AI Agent。一群用 AI 武裝自己的獨立開發者社群。

需要技術協助?

免費諮詢,24 小時內回覆。