iT邦幫忙

2026 iThome 鐵人賽

DAY 13
0
AI Security

從 Web 到 AI Agent:30 天看懂新世代資安攻防系列 第 13

AI 回傳什麼,程式就執行什麼?Improper Output Handling

  • 分享至 

  • xImage
  •  

AI 說了一句話,為什麼最後可能變成一次攻擊?

問題往往不在模型,而在誰接手了模型的輸出。

把 AI 想成一名翻譯員。他交出來的是文字,沒問題。有問題的是後面那幾位只照文字辦事的執行者:直接當成 HTML 渲染,可能變成 XSS;拿去拼接 SQL,可能變成 Injection;丟進 Shell,就從「一句回答」升級成系統指令。

危險的資料流很短:

使用者/外部資料 → LLM → 程式元件 → 執行

很多系統防住了第一個入口,卻忘了 LLM 的輸出本身也是不可信輸入。模型不是安全過濾器,它產出的東西也不會因為「是 AI 寫的」就自帶通行證。

「下一站」比你想的多

除了 HTML、SQL、Shell,還有兩站常被漏掉。

一是聊天介面的 Markdown 渲染器。它會把模型輸出的連結和圖片標記真的渲染出來,自動去抓外部資源——這也是一個 interpreter。

二是套件管理器。模型寫出 pip installnpm install,後面那個套件名不見得存在。

Spracklen 等人(USENIX Security 2025)量化過這件事:16 個模型、576,000 份程式碼樣本,商用模型的套件幻覺率至少 5.2%,開源模型 21.7%,總共蒐集到 205,474 個不存在的套件名。

更麻煩的是它可重現——同一個提示重跑十次,43% 的幻覺套件名每次都出現。攻擊者不必猜,只要先去 PyPI 或 npm 把那個名字註冊起來,等開發者照著 AI 的建議裝下去就行。這個手法叫 slopsquatting。

套件管理器就是那位最聽話的執行者:你叫它裝,它就裝。

防禦看的是「下一站是誰」

  • 送進網頁 → 依渲染位置做對應的輸出編碼(HTML body、屬性、JS、URL 各不相同)。
  • 碰資料庫 → 參數化查詢。
  • 呼叫工具 → 操作白名單、參數走 schema 驗證,權限收到最小。
  • 安裝依賴 → 裝之前確認套件真的存在、註冊時間早於你的專案、發布者有紀錄。
  • 有副作用的動作 → 額外確認,而不是看到格式像指令就執行。

模型會不會輸出危險內容?會,而且你擋不完。所以要問的是另一件事:

危險內容到了下一站,會不會真的被執行?

延伸閱讀

  • OWASP GenAI Security Project, Top 10 for LLM Applications:LLM10:2026 Improper Output Handling(2025 版為 LLM05:2025;注意 2026 版的 LLM05 已改指 Data and Model Poisoning)。
  • Joseph Spracklen, Raveen Wijewickrama, A H M Nazmus Sakib, Anindya Maiti, Bimal Viswanath & Murtuza Jadliwala, We Have a Package for You! A Comprehensive Analysis of Package Hallucinations by Code Generating LLMs, USENIX Security 2025, pp. 3687–3706(arXiv:2406.10279

上一篇
System Prompt 藏起來就安全了嗎?Sensitive Information 與 Hidden Context
系列文
從 Web 到 AI Agent:30 天看懂新世代資安攻防13
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言