AI 說了一句話,為什麼最後可能變成一次攻擊?
問題往往不在模型,而在誰接手了模型的輸出。
把 AI 想成一名翻譯員。他交出來的是文字,沒問題。有問題的是後面那幾位只照文字辦事的執行者:直接當成 HTML 渲染,可能變成 XSS;拿去拼接 SQL,可能變成 Injection;丟進 Shell,就從「一句回答」升級成系統指令。
危險的資料流很短:
使用者/外部資料 → LLM → 程式元件 → 執行
很多系統防住了第一個入口,卻忘了 LLM 的輸出本身也是不可信輸入。模型不是安全過濾器,它產出的東西也不會因為「是 AI 寫的」就自帶通行證。
除了 HTML、SQL、Shell,還有兩站常被漏掉。
一是聊天介面的 Markdown 渲染器。它會把模型輸出的連結和圖片標記真的渲染出來,自動去抓外部資源——這也是一個 interpreter。
二是套件管理器。模型寫出 pip install 或 npm install,後面那個套件名不見得存在。
Spracklen 等人(USENIX Security 2025)量化過這件事:16 個模型、576,000 份程式碼樣本,商用模型的套件幻覺率至少 5.2%,開源模型 21.7%,總共蒐集到 205,474 個不存在的套件名。
更麻煩的是它可重現——同一個提示重跑十次,43% 的幻覺套件名每次都出現。攻擊者不必猜,只要先去 PyPI 或 npm 把那個名字註冊起來,等開發者照著 AI 的建議裝下去就行。這個手法叫 slopsquatting。
套件管理器就是那位最聽話的執行者:你叫它裝,它就裝。
模型會不會輸出危險內容?會,而且你擋不完。所以要問的是另一件事:
危險內容到了下一站,會不會真的被執行?