iT邦幫忙

2026 iThome 鐵人賽

DAY 11
0

就像我上一篇說過的,我之前不斷修改正規表達式(Regular Expression,簡稱 Regex,一種用規則比對文字的方法),從英文開始,再到德文、西班牙文、法文,試圖依照各種語言的文法,逐一抓出不同寫法的惡意指令,並加以分類。

但我發現,用這種不斷窮舉的方法,根本不可能把全世界的語言都寫一遍。我既要確保 Regex 規則能抓到所有的惡意指令,又要讓日常用語順利通過,兩者同時做到是不可能的。

既然我沒辦法控制 AI 會看到的所有內容,那我乾脆把思考反過來:假設 Regex 一定會被攻破,下一道防線該是什麼?與其防堵輸入,不如轉而限制 AI 實際上能做什麼、能呼叫哪些工具。

假設有一段越獄指令(Jailbreak Prompt,誘導 AI 無視安全規則的提示詞)繞過了我前面說的所有防線,而這段指令的核心意圖,是把這台電腦裡所有的 SSH Key(登入遠端伺服器用的金鑰)和 API Key(呼叫線上服務用的通行碼)傳送到外部。那我就可以針對這個意圖,確認兩件事:

AI 能不能讀取到存放這些金鑰的檔案或位置?
AI 有沒有權限把資訊送到外部?(包括所有能讓資料離開這台機器的管道)

只要其中一項不成立,就算 AI 真的被越獄了,也沒辦法把資料傳送出去。

這就是所謂的「最小權限原則」(Principle of Least Privilege,簡稱 PoLP)。它的核心概念是:只給使用者(或 AI Agent,能自行呼叫工具、執行任務的 AI)完成工作所必需的權限,不多給。

實際應用時,可以從三個面向來切分:

工具(Tools)
資料與路徑(Data & Paths)
讀寫權限(Read/Write Permissions)

  1. 工具的最小化(Tool Scope)

如果這個 AI Agent 今天的任務只是「草擬一封回覆信」,它的工具箱裡就只該有 search_email(搜尋信件)和 draft_email(草擬信件)。發送信件的 send_email、刪除信件的 delete_email,甚至完全不相干的「檔案總管」工具,都根本不該掛載給它(掛載:把工具接上 AI,讓它可以使用)。

  1. 資料與路徑的最小化(Data Scope)

當我們讓 AI Agent 處理一個資料夾時,不能為了方便就把整個家目錄(使用者個人檔案的根資料夾,SSH Key 通常也放在這裡)的存取權都交出去。處理 Downloads/,權限範圍就必須限制在 Downloads/ 裡面。任何想跨出這個資料夾、讀取敏感檔案的企圖(例如用 ../../ 回到上層目錄),都必須在邊界被阻擋。檢查方式應該是先把路徑換算成實際的完整路徑,再確認它是否仍在 Downloads/ 之內,而不是只比對字串裡有沒有出現 ../。

  1. 讀寫操作的最小化(Read vs. Write)

「讀取」與「執行/寫入」必須嚴格分離,預設狀態下所有操作都該是唯讀。任何具有副作用(Side Effect,會改變系統狀態或對外產生影響)的動作——例如修改資料庫、覆寫檔案、呼叫第三方 API——都屬於高風險操作,不能由 AI 自行決定。

那要怎麼定義 AI Agent 的權限?


上一篇
我防禦規則最大的漏洞到底在哪裡?
下一篇
從授權關係的本質來看 AI Agent的權限?
系列文
我做了一個Claude skill的掃毒軟體學到的那些事 共 18 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言