當大型語言模型 (LLM) 獲得不必要或過於寬鬆的權限,可與其他系統互動時,就會發生過度自主性這種安全漏洞。當 LLM 可以呼叫外部工具、外掛程式或函式 (即「代理程式」) 時,這項安全漏洞會允許 LLM 執行非預期、未經授權且可能有害的動作。攻擊者可以利用提示注入或其他操弄手法,誘騙 LLM 使用其獲得的代理權,達到惡意目的。核心問題不只是大型語言模型可以採取行動,而是這些行動的範圍太廣,且控管不當。
Android 開發人員為什麼該在意?
在 Android 應用程式中授予 LLM 過多的代理權,可能會導致嚴重安全事件:
- 未經授權的系統存取權:如果裝置的檔案系統和儲存空間資源,或執行網路通話的能力透過函式呼叫公開給模型,攻擊者可能會使用提示注入來存取、修改或刪除裝置上的檔案 (例如使用者文件、應用程式資料) 或連線的網路資源。
- 資料外洩:如果應用程式使用函式呼叫,讓 LLM 存取本機資料 (例如 Room 資料庫、SharedPreferences 或內部 API)。惡意提示可能會誘騙模型擷取機密資訊,並將資訊傳遞至外部工具,例如電子郵件或網路要求函式。
- 危害其他功能/系統:如果 LLM 可控制其他功能 (例如使用隱含意圖傳送簡訊、撥打電話、在社群媒體上發布內容、修改系統設定、進行應用程式內購買),攻擊者可能會劫持這些功能來傳送垃圾內容、散播不實資訊或進行未經授權的交易,導致直接的財務損失或使用者受到傷害。
- 阻斷服務:如果 LLM 整合了函式呼叫,而函式呼叫會公開資料庫查詢或網路要求,惡意提示可能會重複觸發這些動作。這可能會導致系統健康狀態惡化,例如耗電量過高、資料用量超出上限或本機資源耗盡。
Android 應用程式開發人員的因應措施
如要減輕 Android 應用程式中過度代理的問題,重點在於對 LLM 可存取或觸發的每個工具和函式套用最小權限原則。
限制 AI 的工具箱 (細微與開放式函式):
- 提供最少的工具:LLM 應只存取在應用程式中執行工作絕對需要的特定工具 (函式、API、意圖)。如果不需要瀏覽網頁或傳送電子郵件,請勿向 LLM 公開這些功能。
- 使用簡單的單一用途工具:設計工具的範圍有限且特定。舉例來說,請提供只能讀取特定類型使用者設定的工具,而非接受開放式參數來存取多個資料來源的通用工具。避免讓 LLM 定義指令或引數,以免將強大的系統層級 API (例如
Runtime.getRuntime().exec()) 暴露給 LLM。
限制 AI 的功能
- 精細的 Android 權限:當 LLM 觸發的函式與 Android 系統資源或其他應用程式互動時,請確認應用程式只要求並保留所需的最低 Android 權限。
- 使用者專屬權限:當 LLM 代表使用者執行動作時,應使用該使用者的特定權限和情境。LLM 執行的動作必須是直接回應特定使用者指令。
由真人掌控 (重要動作須經使用者同意)
- 要求使用者核准:對於 LLM 可能建議或嘗試執行的任何重要或高風險動作 (例如刪除資料、進行應用程式內購買、傳送訊息、變更重要設定),請務必在 UI 中使用確認對話方塊,要求使用者明確核准。這就像需要經理核准重大決策一樣。
信任但仍須驗證 (輸入/輸出驗證和強大的後端)
- 後端安全性:不要只依賴 LLM 判斷是否允許某項動作。LLM 觸發函式連線的任何後端服務或 API,都應具備完善的驗證、授權和輸入驗證機制,以仔細檢查每項要求,並確認要求合法且符合預期參數。
- 清除資料:與其他安全漏洞一樣,請務必清除並驗證輸入 LLM 的內容,以及 LLM 為函式呼叫產生的參數,以便在執行任何動作前,偵測到惡意指令或非預期的輸出內容。
摘要
「過度自主性」是嚴重程度「最高」的漏洞,LLM 擁有過於廣泛的權限,可與其他系統或函式互動,因此可能遭到誤導而執行有害動作。這可能會導致 Android 應用程式發生未經授權的資料存取、系統遭入侵、財務損失或使用者受害等情況。緩解措施主要依據最小權限原則:嚴格限制 LLM 可用的工具和 Android 權限、確認每項工具都具備最低限度的特定功能,以及要求所有高影響力作業都須經過人工核准。