OWASP 定義的大模型應(yīng)用最常見的10個關(guān)鍵安全問題
1. 《OWASP 大模型應(yīng)用最常見的10個關(guān)鍵安全問題》項目簡介(OWASP TOP10 LLMs Project)
*OWASP Top 10 for Large Language Model Applications
OWASP 大模型應(yīng)用程序 Top 10 項目旨在向開發(fā)人員、設(shè)計人員、架構(gòu)師、經(jīng)理和組織介紹部署和管理大型語言模型 (LLM) 時的潛在安全風(fēng)險。該項目提供了LLM應(yīng)用程序中常見的10大最關(guān)鍵漏洞的列表,突出了它們的潛在影響,易于利用以及在實際應(yīng)用程序中的普遍性。漏洞的示例包括提示注入、數(shù)據(jù)泄漏、沙盒不足和未經(jīng)授權(quán)的代碼執(zhí)行等。目標(biāo)是提高對這些漏洞的認(rèn)識,建議修正策略,并最終改善LLM應(yīng)用程序的安全狀況。
本文主要參照目前最新的版本:《OWASP Top 10 for Large Language Models (0.5)》翻譯整理。
OWASP LLMs TOP10 示意圖

2. LLM01: 提示注入(Prompt Injections)
LLMs 中的提示注入漏洞涉及狡猾的輸入,導(dǎo)致未檢測到的操作。影響范圍從數(shù)據(jù)暴露到未經(jīng)授權(quán)的操作,以及為攻擊者的目標(biāo)服務(wù)。
當(dāng)攻擊者通過多個通道使用構(gòu)建的輸入提示操縱受信任的大型語言模型 (LLM) 時,就會發(fā)生提示注入漏洞。由于對LLM輸出的固有信任,這種操作通常未被發(fā)現(xiàn)。
存在兩種類型:直接(攻擊者影響 LLM 的輸入)和間接(“中毒”數(shù)據(jù)源影響 LLM)。
結(jié)果的范圍可以從暴露敏感信息到影響決策。在復(fù)雜的情況下,LLM可能會被誘騙到未經(jīng)授權(quán)的操作或冒充中,有效地服務(wù)于攻擊者的目標(biāo),而不會提醒用戶或觸發(fā)保護措施。
2.1. 預(yù)防措施
權(quán)限控制
將LLM的權(quán)限限制為其功能所需的最低權(quán)限。防止 LLM 在未經(jīng)明確批準(zhǔn)的情況下更改用戶的狀態(tài)。
增強的輸入驗證
實施可靠的輸入驗證和清理方法,以過濾掉來自不受信任來源的潛在惡意提示輸入。
外部內(nèi)容交互的隔離和控制
將不受信任的內(nèi)容與用戶提示隔離開來,并控制與外部內(nèi)容的交互,尤其是與可能導(dǎo)致不可逆轉(zhuǎn)的操作或暴露個人身份信息 (PII) 的插件的交互。
信任管理
在LLM,外部源和可擴展功能(例如,插件或下游函數(shù))之間建立信任邊界。將LLM視為不受信任的用戶,并保持最終用戶對決策過程的控制。
3. LLM02: 不安全輸出(Insecure Output Handling)
當(dāng)插件或應(yīng)用程序接受LLM輸出時,如果缺少安全控制就可能導(dǎo)致 XSS、CSRF、SSRF、權(quán)限提升、遠程代碼執(zhí)行,并可能啟用代理劫持攻擊。
不安全輸出處理漏洞是一種提示注入漏洞,當(dāng)插件或應(yīng)用程序在沒有適當(dāng)審查的情況下盲目接受大型語言模型 (LLM) 輸出并將其直接傳遞給后端、特權(quán)或客戶端函數(shù)時,就會出現(xiàn)該漏洞。由于LLM生成的內(nèi)容可以通過提示輸入來控制,因此此行為類似于為用戶提供對附加功能的間接訪問。
成功利用不安全輸出處理漏洞可導(dǎo)致 Web 瀏覽器中出現(xiàn) XSS 和 CSRF,以及后端系統(tǒng)上的 SSRF、權(quán)限提升或遠程代碼執(zhí)行。當(dāng)應(yīng)用程序允許 LLM 內(nèi)容執(zhí)行超出預(yù)期用戶權(quán)限的操作時,此漏洞的影響會增加。此外,這可以與代理劫持攻擊結(jié)合使用,以允許攻擊者以特權(quán)訪問目標(biāo)用戶的環(huán)境。
3.1. 預(yù)防措施
將模型視為任何其他用戶,并對從模型到后端函數(shù)的響應(yīng)應(yīng)用適當(dāng)?shù)妮斎腧炞C;
將來自模型的輸出進行編碼,以減少不需要的JavaScript或Markdown代碼解釋。
4. LLM03: 訓(xùn)練數(shù)據(jù)投毒(Training Data Poisoning)
LLM從不同的文本中學(xué)習(xí),但有訓(xùn)練數(shù)據(jù)中毒的風(fēng)險,導(dǎo)致用戶錯誤信息。
大型語言模型 (LLM) 使用不同的原始文本來學(xué)習(xí)和生成輸出。攻擊者引入漏洞的訓(xùn)練數(shù)據(jù)中毒可能會破壞模型,使用戶接觸到不正確的信息。LLM的OWASP列表強調(diào)了過度依賴AI內(nèi)容的風(fēng)險。關(guān)鍵數(shù)據(jù)源包括用于 T5 和 GPT-3 等模型的Common Crawl、WebText 和 OpenWebText,包含公共新聞和維基百科和書籍,占 GPT-16 訓(xùn)練數(shù)據(jù)的 3%。
4.1. 預(yù)防措施
驗證培訓(xùn)數(shù)據(jù)的供應(yīng)鏈(如果來自外部)并保持證明,類似于 SBOM(軟件物料清單)方法;
驗證數(shù)據(jù)源和其中數(shù)據(jù)的合法性;
通過針對不同用例的單獨訓(xùn)練數(shù)據(jù)制作不同的模型,以創(chuàng)建更精細、更準(zhǔn)確的生成AI輸出;
確保存在足夠的沙盒,以防止模型抓取意外數(shù)據(jù)源;
對特定訓(xùn)練數(shù)據(jù)或數(shù)據(jù)源類別使用嚴(yán)格的審查或輸入過濾器來控制偽造數(shù)據(jù)的數(shù)量;
實施專門的LLM來衡量不良后果,并使用強化學(xué)習(xí)技術(shù)培訓(xùn)其他LLM;
在LLM生命周期的測試階段執(zhí)行基于LLM的紅隊練習(xí)或LLM漏洞掃描。
5. LLM04: 拒絕服務(wù)(Denial of Service)
攻擊者以特別消耗資源的方式與LLM交互,導(dǎo)致他們和其他用戶的服務(wù)質(zhì)量下降,或產(chǎn)生高資源成本。
5.1. 預(yù)防措施
限制每個請求的資源使用量;
限制每個步驟的資源使用,以便涉及復(fù)雜部分的請求執(zhí)行速度;
限制系統(tǒng)中對LLM響應(yīng)做出反應(yīng)的排隊操作數(shù)和總操作數(shù)。
6. LLM05: 供應(yīng)鏈安全(Supply Chain)
由于漏洞導(dǎo)致偏見,安全漏洞或系統(tǒng)故障,LLM供應(yīng)鏈存在完整性風(fēng)險。問題來自預(yù)先訓(xùn)練的模型、眾包數(shù)據(jù)和插件擴展。
LLM 中的供應(yīng)鏈可能容易受到攻擊,影響訓(xùn)練數(shù)據(jù)、ML 模型、部署平臺的完整性,并導(dǎo)致有偏見的結(jié)果、安全漏洞或完整的系統(tǒng)故障。傳統(tǒng)上,漏洞集中在軟件組件上,但由于遷移學(xué)習(xí)、重用預(yù)訓(xùn)練模型以及眾包數(shù)據(jù)的普及,漏洞在人工智能中得到了擴展。在公共LLM中,諸如OpenGPT擴展插件之類的LLM也是易受此漏洞影響的領(lǐng)域。
6.1. 預(yù)防措施
仔細審查來源和供應(yīng)商;
對組件進行漏洞掃描,不僅在部署到生產(chǎn)環(huán)境時,而且在用于開發(fā)和測試之前;
模型開發(fā)環(huán)境使用自己的精選包存儲庫進行漏洞檢查;
代碼簽名;
對提供服務(wù)的整個鏈路進行穩(wěn)健性測試,防止對模型和數(shù)據(jù),以及整個 MLOps 管道的篡改和投毒;
實施對抗性穩(wěn)健性訓(xùn)練,以幫助檢測提取查詢;
審查和監(jiān)控供應(yīng)商安全和訪問;
審計。
7. LLM06: 權(quán)限問題(Permission Issues)
插件之間缺乏授權(quán)跟蹤可能會使間接提示注入或惡意插件使用成為可能,從而導(dǎo)致權(quán)限提升、機密性丟失和潛在的遠程代碼執(zhí)行。
插件之間不跟蹤授權(quán),允許惡意行為者通過間接提示注入、使用惡意插件或其他方法在 LLM 用戶的上下文中采取行動。這可能會導(dǎo)致權(quán)限提升、機密性丟失,甚至遠程代碼執(zhí)行,具體取決于可用的插件。
7.1. 預(yù)防措施
需要手動授權(quán)敏感插件執(zhí)行的任何操作;
每個用戶輸入調(diào)用不超過一個插件,在調(diào)用之間重置任何插件提供的數(shù)據(jù);
防止在任何其他插件之后調(diào)用敏感插件;
對所有插件內(nèi)容執(zhí)行污點跟蹤,確保調(diào)用插件的授權(quán)級別對應(yīng)于向 LLM 提示符提供輸入的任何插件的最低授權(quán)。
8. LLM07: 數(shù)據(jù)泄露(Data Leakage)
LLM中的數(shù)據(jù)泄漏可能會暴露敏感信息或?qū)S性敿毿畔?,從而?dǎo)致隱私和安全漏洞。適當(dāng)?shù)臄?shù)據(jù)清理和明確的使用條款對于預(yù)防至關(guān)重要。
當(dāng)LLM通過其響應(yīng)意外泄露敏感信息,專有算法或其他機密細節(jié)時,就會發(fā)生數(shù)據(jù)泄漏。這可能會導(dǎo)致未經(jīng)授權(quán)訪問敏感數(shù)據(jù)或知識產(chǎn)權(quán)、侵犯隱私和其他安全漏洞。重要的是要注意,LLM應(yīng)用程序的用戶應(yīng)該了解如何與LLM交互,并確定他們?nèi)绾螣o意中輸入敏感數(shù)據(jù)的風(fēng)險。
反之亦然,LLM 應(yīng)用程序應(yīng)執(zhí)行足夠的數(shù)據(jù)清理和清理驗證,以幫助防止用戶數(shù)據(jù)進入訓(xùn)練模型數(shù)據(jù)。此外,托管LLM的公司應(yīng)提供適當(dāng)?shù)挠脩魲l款政策,以使用戶了解如何處理數(shù)據(jù)。
8.1. 預(yù)防措施
集成適當(dāng)?shù)臄?shù)據(jù)清理和清理技術(shù),以防止用戶數(shù)據(jù)進入訓(xùn)練模型數(shù)據(jù);
實施強大的輸入驗證和清理方法,以識別和過濾掉潛在的惡意輸入;
通過 SAST(靜態(tài)應(yīng)用程序安全測試)和 SBOM(軟件物料清單)證明等技術(shù),保持持續(xù)的供應(yīng)鏈風(fēng)險緩解,以識別和修復(fù)第三方軟件或軟件包依賴項中的漏洞;
實施專門的LLM以針對不良后果進行基準(zhǔn)測試,并使用強化學(xué)習(xí)技術(shù)培訓(xùn)其他LLM;
在LLM生命周期的測試階段執(zhí)行基于LLM的紅隊練習(xí)或LLM漏洞掃描。
9. LLM08: 過度代理(Excessive Agency)
當(dāng)LLM與其他系統(tǒng)接口時,不受限制的代理可能會導(dǎo)致不良的操作和操作。像網(wǎng)絡(luò)應(yīng)用程序一樣,LLM不應(yīng)該自我監(jiān)管, 控件必須嵌入到 API 中。
LLM可以被授予一定程度的代理權(quán) - 與其他系統(tǒng)接口以采取行動的能力。LLM的任何不受限制的不良操作(無論根源原因如何,例如,幻覺,直接/間接提示注射,或只是設(shè)計不良的良性提示等)都可能導(dǎo)致采取不希望的行動。就像我們從不信任 Web 應(yīng)用程序中的客戶端驗證一樣,LLM 不應(yīng)該被信任來自我監(jiān)管或自我限制,控件應(yīng)嵌入到所連接系統(tǒng)的 API 中。
9.1. 預(yù)防措施
將授予 LMM 的權(quán)限減少到限制不良操作范圍所需的最小值;
實施速率限制以減少不良操作的數(shù)量;
利用人機交互控制,要求人工在執(zhí)行所有操作之前批準(zhǔn)所有操作。
10. LLM09: 過度依賴LLM生成的內(nèi)容(Overreliance)
過度依賴LLM會導(dǎo)致錯誤信息或由于“幻覺”而導(dǎo)致的不當(dāng)內(nèi)容。如果沒有適當(dāng)?shù)谋O(jiān)督,這可能會導(dǎo)致法律問題和聲譽損害。
過度依賴LLM是一個安全漏洞,當(dāng)系統(tǒng)過度依賴LLM進行決策或內(nèi)容生成而沒有足夠的監(jiān)督,驗證機制或風(fēng)險溝通時,就會出現(xiàn)這種漏洞。LLM雖然能夠產(chǎn)生創(chuàng)造性和信息豐富的內(nèi)容,但也容易受到“幻覺”的影響,產(chǎn)生事實上不正確,荒謬或不適當(dāng)?shù)膬?nèi)容。如果不經(jīng)過檢查,這些幻覺可能導(dǎo)致錯誤信息、溝通不暢、潛在的法律問題以及對公司聲譽產(chǎn)生影響。
10.1. 預(yù)防措施
持續(xù)監(jiān)控
定期監(jiān)控和審查LLM的輸出,以確保它們是事實,連貫和適當(dāng)?shù)?。將手動審查或自動化工具用于更大?guī)模的應(yīng)用程序;
事實核查
在將LLM提供的信息用于決策,信息傳播或其他關(guān)鍵功能之前,驗證其準(zhǔn)確性;
模型調(diào)整
調(diào)整您的LLM以減少幻覺的可能性。技術(shù)包括快速工程、參數(shù)高效調(diào)優(yōu)(parameter efficient tuning(PET)) 和完整模型調(diào)優(yōu);
設(shè)置驗證機制
實施自動驗證機制,根據(jù)已知事實或數(shù)據(jù)檢查生成的輸出;
改善風(fēng)險溝通
遵循風(fēng)險溝通文獻和其他部門的最佳實踐,以促進與用戶的對話,建立可操作的風(fēng)險溝通,并持續(xù)衡量風(fēng)險溝通的有效性。
11. LLM10: 不安全的插件(Insecure Plugins)
如果將 LLM 連接到外部資源的插件接受自由格式的文本輸入,則可能會被利用,從而啟用可能導(dǎo)致不良行為或遠程代碼執(zhí)行的惡意請求。
在將LLM連接到某些外部資源的插件接受自由格式的文本作為輸入,而不是參數(shù)化和類型檢查的輸入。這允許潛在的攻擊者有很大的自由度來構(gòu)造對插件的惡意請求,這可能導(dǎo)致各種不良行為,甚至包括遠程代碼執(zhí)行。
11.1. 預(yù)防措施
插件調(diào)用應(yīng)盡可能嚴(yán)格參數(shù)化,包括對輸入的類型和范圍檢查;
當(dāng)必須接受自由格式輸入時,應(yīng)仔細檢查它以確保沒有調(diào)用可能有害的方法;
插件應(yīng)該從最小特權(quán)的角度設(shè)計,在執(zhí)行其所需功能的同時盡可能少地公開功能。