Day 20|Unbounded Consumption 怎麼防?
前面介紹了 Unbounded Consumption 為什麼會發生,以及攻擊者可以怎麼利用它。
那麼,面對這些問題,我們可以怎麼降低風險?
最基本的方法就是 Rate Limiting。
但對 LLM 來說,只限制「一天可以請求幾次」還不夠,也可以進一步限制:
每分鐘可以使用多少 Token
每天最多使用多少 Token
單次請求最多可以使用多少資源
因為兩個 Request 雖然都是「一次」,背後的成本可能完全不同。OWASP 也特別建議從單純的 Request Rate,進一步控制 Token 與預估成本。
如果 LLM API 是按照使用量計費,就應該替使用者、API Key 或服務設定預算上限。
例如:
「超過今天的預算,就停止新的 Inference。」
這比單純跳出警告更有效,因為攻擊者可能在發現警告之前,就已經快速累積大量成本。
如果是 AI Agent,就需要特別注意 Tool Calling。
可以設定:
最大執行步數
最大 Tool Call 數量
最大執行時間
單次任務最大成本
如果 Agent 開始不斷重複呼叫 Tool,就可以直接中斷。這類 Circuit Breaker(斷路器) 是 Agent 情境很重要的防禦方式。
除了限制之外,也要知道:
「現在到底是誰在消耗資源?」
例如監控使用者的 Token、API 成本、Agent 執行時間與 Tool Call 數量。
如果某個使用者的使用量突然異常增加,就可以進一步限制或暫停服務。
即使流量真的突然增加,也可以透過 Graceful Degradation(優雅降級),讓系統保留部分功能,而不是直接整個服務停止。
例如降低輸出長度、暫停高成本功能,或限制部分非必要服務。
所以,Unbounded Consumption 的防禦重點不是單純一句:
「不要讓使用者發太多 Request。」
而是要從 Request、Token、Cost、Agent、Tool 到基礎設施一起限制與監控。
LLM 帶來的不只是新的功能,也帶來新的資源管理方式。