👋 嘿,我是 Browny。
Informal Writing 著墨琢磨 技術趨勢、溝通領導、概念理解 與 生活實踐。
每週一四派送,免費訂閱起來👇
❏ 引言
時節走進 “立秋”,最近下班後可以感受到已經沒有之前那麼悶熱了。不曉得是不是順應氣候的節奏的關係,LLM 模型版本的迭代熱度好像也進入了秋天。
企業從一開始發散地探索各種可能,慢慢走向實際落地,整合既有系統產出具體的商業價值。一些生產級別的問題 (穩定性、擴展性、安全性,等等…) 逐漸得到更多的關注與討論。
前陣子在協助客戶導入生成式 AI 的時候,客戶諮詢:「我們內部導入 LLM 應用以後,在資安與稽核上應該如何因應」。這真是一個大哉問 (架構師經常遇到沒有明確答案的問題) — 經過幾次與客戶的訪談以及調查研究,今天就讓我們來聊聊,該如何系統化地看待這個問題:
❏ 資安的本質
❏ LLM應用(更複雜)的生命週期
❏ LLM 帶來新的威脅
❏ 全週期防護: 在LLM應用生命週期中應對新威脅
.
❏ 資安的本質
資安的本質並不會因為生成式 AI 的出現,或是 LLM 的導入而產生變化。可以將其歸納為 2 個議題 x 2 個舉措。既然叫做「資安」那肯定和資料有關 (這是直接層面),要取得資料需要通過層層關卡,那就跟存取有關 (這是間接層面)。
因此,2 個議題分別是:1. 存取控制 (Access Control) 2. 資料生命週期 (Data Lifecycle)。對這 2 個議題,我們需要對應的 2 個舉措,來診斷以及預防其造成的影響,這 2 個舉措分別是:1. 稽核與監控 (Observability) 2. 防護 (Protection)。
大體上,和資安相關的議題都可以套用這個 2x2 來思考。具體舉措的展開,可能會根據不同的 人事時地物,有不同的作法,比如下面兩種資安議題:
只允許從辦公室的網路登入程式碼版控系統
Access Control(登入程版控系統) + Protection(只允許) + 地(辦公室網路)
追蹤紀錄特定模型的各迭代版本中使用哪些訓練資料
Data Lifecycle(使用哪些訓練資料) + Observability(追蹤紀錄) + 物(特定模型的版本)
資安的本質是不變的,但是 LLM 整合到既有系統/流程以後,存取/資料 流的複雜度相對提升,帶來更嚴峻的挑戰。
.
❏ LLM應用(更複雜)的生命週期
從世界經濟論壇的 AI Governance 白皮書 [1] 可以看到,當 LLM model 整合進來以後,軟體的佈署變得更為複雜。以前,軟體系統大致可用三層式架構來理解:儲存 (Persistent layer) → 後端 (Logic layer) → 前端 (Presentation layer)。
LLM model 導入後,多出了 模型創建 (Model creation layer) 和 模型採用/整合(Model adaption/integration layer)。如上圖,整個 LLM 應用的生命週期,多了許多階段,每個階段有各自的資安考量:
資料管理:訓練資料的來源、標籤和管理,強調資料存取梯度和與各種資料來源類型相關的法律影響。
基礎模型建置:設計 LLM 架構、訓練模型以及在發布前進行內部審核和批准。
基礎模型發布:發布經過訓練的基礎模型,並附有透明的文檔,包括資料表、模型卡和使用限制。
模型採用:下游使用者針對特定任務調整基礎模型,可能涉及微調和特定領域的訓練。
模型整合:將改編後的 LLM 整合到應用程式中,與應用程式元件和使用者介面進行互動。
模型使用(企業或個人):LLM 支援的應用程式的部署,其中使用者與模型互動以執行各種任務。
.
模型的採用進入到整個軟體開發流程以後,看待資安議題不僅要關注到 DevOps 也要融合 LLMOps 視角進來作一併的考量。階段的增加也意味著 新介面 的 存取控制 和 資料流動 也需要納入資安考量範圍。
.
❏ LLM 帶來新的威脅
除了存取控制和資料生命週期外,模型本身也帶來了新的攻擊型態。對這些攻擊有系統性的認識,可以幫助我們在 LLM 應用的整個生命週期中,更好地實施相應的對策。
adversa.ai 在白皮書 [2] 當中將 LLM 攻擊,大致區分為三大類:
操縱 (Manipulation):旨在繞過 LLM 預期行為的攻擊。這些攻擊利用漏洞產生符合攻擊者意圖而非預期功能的輸出。
感染 (Infection):這些攻擊旨在損害 LLM 本身的完整性,可能會毒害訓練資料或操縱模型的內部工作,從而隨著時間的推移降低其效能或可靠性。
滲透 (Exfiltration):這些攻擊的重點是從 LLM 竊取敏感訊息,包括模型的訓練資料、智慧財產權或模型處理的機密使用者資料。
.
此外,OWASP (Open Worldwide Application Security Project) 也整理了 10 個最常見的 LLM 風險 [3]:
LLM01:提示詞(Prompt)注入(Injection)
駭客透過設計過的輸入(提示詞)操縱大型語言模型(LLM),從而導致LLM執行意外操作。提示詞注入會覆蓋系統提示詞,而間接注入操縱外部資料來源進行注入攻擊。
LLM02:不安全的輸出處理
當LLM輸出未經審查而被接受時,就會出現此漏洞,從而暴露後端系統。濫用可能會導致XSS、CSRF、SSRF、權限升級或遠端程式碼執行等嚴重後果。
LLM03:訓練數據中毒
當LLM培訓數據被篡改,引入損害安全性、有效性或道德行為的漏洞或偏見時,就會發生這種情況。來源包括Common Crawl、WebText、OpenWebText和書籍。
LLM04:拒絕服務模型攻擊
攻擊者對大型語言模型進行資源密集型操作,導致服務降級或高成本。由於LLM的資源密集型性質和用戶輸入的不可預測性,該漏洞被放大。
LLM05:供應鏈漏洞
LLM應用程式生命週期可能會受到易受攻擊的組件或服務的影響,從而導致安全攻擊。使用第三方數據集、預先訓練的模型和插件可能會增加漏洞。
LLM06:敏感資訊洩露
LLM可能會在其回覆中洩露機密數據,從而導致未經授權的數據訪問、隱私侵犯和安全漏洞。實施數據清理和嚴格的用戶策略來緩解這種情況至關重要。
LLM07:不安全的插件設計
LLM插件可能具有不安全的輸入和不足的訪問控制。缺乏應用程式控制使它們更容易被利用,並可能導致遠端程式碼執行等後果。
LLM08:過度代理
基於LLM的系統可能會採取導致意想不到的後果的行動。該問題源於授予基於LLM的系統過多的功能、權限或自主權。
LLM09:過度依賴
過度依賴LLM而不受監督的系統或人員可能會因LLM生成的不正確或不適當的內容而面臨錯誤資訊、溝通不暢、法律問題和安全漏洞。
LLM10:模型盜竊
這涉及對專有LLM模型的未經授權的訪問、複製或洩露。影響包括經濟損失、競爭優勢受損以及敏感資訊的潛在訪問。
.
將這些常見的風險,對應到三個大分類,大致上就會像下面這樣:
操縱 (Manipulation): 提示詞注入, 不安全的輸出處理, 拒絕服務模型攻擊
Infection: 訓練數據中毒
Exfiltration: 敏感資訊洩露
.
❏ 全週期防護: 在LLM應用生命週期中應對新威脅
LLM 生命週期中的每個階段都會引入獨特的安全考慮因素:是三大類中的哪一類風險? 可以透過 2x2 的哪些手段來防止/緩解? 詳細的對每一個階段進行盤點,制定出有針對性且前後一致的政策:
資料管理:資料來源、安全儲存、匿名技術、資料集存取控制以及資料處理的稽核追蹤。
基礎模型建置:安全編碼實踐、模型訓練程式碼的版本控制、訓練期間的資料驗證和清理,以及模型架構的定期安全審計。
基礎模型發布:模型的存取控制機制、明確的使用指南和許可協議、漏洞揭露策略以及模型使用的監控。
模型適配:微調前後的安全評估、適配模型的輸入驗證、監控適配模型效能是否有潛在偏差或惡意意圖。
模型整合:LLM整合的安全API設計、整合點的輸入/輸出驗證、整合系統的定期安全測試、LLM相關事件的事件回應計畫。
模型使用:使用者身分驗證和授權、防止濫用的速率限制、惡意或有害輸出的內容過濾以及對可疑使用者行為的持續監控。
.
❏ 結語
我們深入探討了企業在導入 LLM 應用時面臨的資安挑戰。從資安的本質出發,介紹了一個 2x2 的框架,包括存取控制和資料生命週期兩大議題,以及稽核與監控和防護兩大舉措。
隨後,我們探討了 LLM 應用的生命週期,從資料管理到模型使用,每個階段都帶來了新的安全考量。我們也看到 LLM 自身帶來的新威脅,包括操縱、感染和滲透三大類攻擊,以及 OWASP 列出的十大 LLM 風險。
最後,我們利用 三大分類 和 2x2 的資安本質框架 來思考如何在 LLM 應用的各個階段量身定制緩解策略。
.
❏ 補充 (2024/09/11)
本期內容在 2024/09/11 擴展成一個約 20 分鐘的 talk,投影片分享給大家:點此下載
.
你的公司是否正在考慮或已經導入 LLM 應用?如果是,您認為最大的資安挑戰是什麼? 在實施 LLM 相關的資安措施時,您認為最大的挑戰是什麼?技術、人員培訓,還是其他方面?
如果你也有想法,歡迎與我分享。這篇文章有幫助到你嗎,別忘了按讚、訂閱加分享喔,我們下期再見 👋
~
🔍 工人智慧猜你也喜歡
🔖 參考資料
[1] AI Governance Alliance: Briefing Paper Series - https://www.weforum.org/publications/ai-governance-alliance-briefing-paper-series/
[2] The Road to Secure and Trusted AI - https://adversa.ai/report-secure-and-trusted-ai/
[3] OWASP Top 10 for Large Language Model Applications - https://owasp.org/www-project-top-10-for-large-language-model-applications/
[4] Mitigate 3 Major LLM Security Threats to Protect Your Business - https://masterofcode.com/blog/llm-security-threats
寫得太好了!正好最近在推LLM的feature,一隻也知道需要提防injection,剛好有你這篇文章更有架構的看待這件事…
感謝您的分享!