利用AI攻擊鏈框架對AI應用進行攻擊建模
AI應用引入了傳統安全模型無法完全捕捉的新攻擊面,尤其是隨着這些智能系統自主性的增強。不斷演變的攻擊面的指導原則很明確:假設存在提示詞注入。但將其轉化為有效的防禦措施通常並不簡單。
網絡攻擊鏈安全框架定義了攻擊者的操作方式。在某中心,我們構建了AI攻擊鏈,以展示攻擊者如何危害AI應用,並説明防禦者可以在何處中斷攻擊鏈。與強調攻擊者使用AI的模型不同,此框架側重於針對AI系統本身的攻擊。
本文將概述各個階段,展示示例,並將其與其他安全模型聯繫起來。
AI攻擊鏈如何將攻擊分解為可操作的階段?
我們的AI攻擊鏈包括五個階段——偵察、投毒、劫持、持久化和影響——以及一個迭代/轉向分支。在接下來的部分,我們將深入探討AI攻擊鏈的每個階段,如上圖所示。
AI攻擊鏈的偵察階段會發生什麼?
在偵察階段,攻擊者會映射系統以規劃攻擊。攻擊者此時提出的關鍵問題包括:
- 我控制的數據可以通過哪些路徑進入AI模型?
- 應用程序使用了哪些可能被利用的工具、模型上下文協議服務器或其他功能?
- 應用程序使用了哪些開源庫?
- 系統防護措施應用於何處?它們如何工作?
- 應用程序使用哪些類型的系統內存?
偵察通常是交互式的。攻擊者會探測系統以觀察錯誤和行為。他們對系統行為的可見性越高,下一步行動就越精確。
中斷偵察的防禦優先事項:
- 訪問控制:將系統訪問權限限制在授權用户範圍內。
- 最小化信息:清理錯誤信息、清除系統提示、防護措施披露和組件標識符,防止其出現在輸出中。
- 監控探測行為:實現遙測技術,以檢測表明偵察活動的異常輸入或訪問模式。
- 強化模型:對模型進行微調,以抵禦轉移攻擊和敏感信息誘導。
早期中斷偵察可以防止攻擊者獲得在執行後續攻擊鏈步驟時所需的知識。
攻擊者在此階段如何對AI系統進行投毒?
在投毒階段,攻擊者的目標是將惡意輸入放置到最終會被AI模型處理的位置。主要有兩種技術占主導地位:
- 直接提示詞注入:攻擊者就是用户,通過正常的用户交互提供輸入。影響通常侷限於攻擊者的會話,但可用於探測行為。
- 間接提示詞注入:攻擊者毒化應用程序代表其他用户攝取的數據。這是影響擴大化的地方。
基於文本的提示詞感染是最常見的技術。然而,還有其他方法,例如:
- 訓練數據投毒:將受污染的數據注入用於微調或訓練模型的數據集中。
- 對抗性樣本攻擊:對輸入進行比特級操作,以強制錯誤分類。
- 視覺載荷:在物理環境中影響模型輸出的惡意符號、貼紙或隱藏數據。
中斷投毒的防禦優先事項:
- 淨化所有數據:不要假設內部管道是安全的,對用户輸入、RAG源、插件數據和API源應用防護措施。
- 重述輸入:在攝取前轉換內容,以破壞攻擊者精心設計的載荷。
- 控制數據攝取:在攝取前淨化任何可公開寫入的數據源。
- 監控攝取:關注攝取管道中的意外數據峯值、異常嵌入或高頻貢獻。
投毒成功後,攻擊者如何劫持AI模型行為?
劫持階段是攻擊變得活躍的地方。在投毒階段成功放置的惡意輸入被模型攝取,劫持其輸出以服務於攻擊者的目標。常見的劫持模式包括:
- 攻擊者控制的工具使用:強制模型使用攻擊者定義的參數調用特定工具。
- 數據外泄:將模型上下文中的敏感數據編碼到輸出中。
- 虛假信息生成:精心製作故意虛假或誤導性的迴應。
- 上下文特定載荷:僅在目標用户上下文中觸發惡意行為。
在智能工作流中,劫持變得更加強大。授予LLM的更高自主權意味着攻擊者可以操縱模型的目標,而不僅僅是輸出,引導其自主執行未經授權的操作。
中斷劫持的防禦優先事項:
- 隔離可信與不可信數據:避免在同一模型上下文中處理攻擊者控制的敏感數據。
- 增強模型魯棒性:使用對抗性訓練、魯棒RAG、CaMeL等技術或指令層次結構技術來訓練模型抵禦注入模式。
- 在上下文中驗證工具調用:確保每個工具調用都與原始用户請求保持一致。
- 實施輸出層防護措施:在使用前檢查模型輸出的意圖、安全性和下游影響。
劫持是攻擊者獲得功能控制權的關鍵點。在此中斷攻擊鏈可以保護下游系統,即使未能完全防止投毒。
攻擊者如何在不同會話和系統中持久化其影響?
持久化允許攻擊者將單次劫持轉化為持續控制。通過將惡意載荷嵌入持久存儲,攻擊者確保其影響在用户會話內部和跨會話持續存在。持久化路徑取決於應用程序的設計:
- 會話歷史持久化:在許多應用程序中,注入的提示詞在實時會話中保持活動狀態。
- 跨會話記憶:在具有用户特定記憶的系統中,攻擊者可以嵌入跨會話存活的載荷。
- 共享資源投毒:攻擊者針對共享數據庫,以影響多個用户。
- 智能體計劃持久化:在自主智能體中,攻擊者劫持智能體的目標,確保其持續追求攻擊者定義的目標。
持久化使攻擊者能夠反覆利用被劫持的狀態,增加產生下游影響的可能性。在智能系統中,持久化的載荷可以演變成自主的、由攻擊者控制的工作流。
中斷持久化的防禦優先事項:
- 持久化前淨化:在將數據發送到會話歷史、記憶或共享資源之前,對所有數據應用防護措施。
- 提供用户可見的記憶控制:讓用户查看、管理和刪除他們存儲的記憶。
- 上下文記憶檢索:確保僅在記憶與當前用户請求相關時才進行檢索。
- 強制執行數據血緣和可審計性:跟蹤數據的整個生命週期,以實現快速補救。
- 控制寫操作:要求人工批准或進行更嚴格的淨化處理,然後再執行可能影響共享系統狀態的數據寫入操作。
持久化使攻擊者能夠從單點攻擊升級為在AI應用中持續存在,可能影響多個會話。
攻擊者如何迭代或轉向以擴大其在智能系統中的控制?
對於簡單的應用,單次劫持可能就是攻擊路徑的終點。但在智能系統中,AI模型可以自主計劃、決策和行動,攻擊者可以利用一個反饋循環:迭代和轉向。一旦攻擊者成功劫持了模型行為,他們可以:
- 橫向轉向:毒化額外的數據源,以影響其他用户或工作流,擴大持久化範圍。
- 迭代計劃:在完全智能的系統中,攻擊者可以重寫智能體的目標,用攻擊者定義的目標替換它們。
- 建立命令與控制:嵌入載荷,指示智能體在每次迭代時獲取新的、由攻擊者控制的指令。
這個循環將單點被入侵轉變為系統性利用。每次迭代都強化了攻擊者的地位和影響,使系統越來越難以保護。
中斷迭代/轉向的防禦優先事項:
- 限制工具訪問:限制智能體可以交互的工具、API或數據源,尤其是在不可信的上下文中。
- 持續驗證智能體計劃:實施防護措施,確保智能體行動與原始用户意圖保持一致。
- 持久隔離不可信數據:防止不可信的輸入影響可信的上下文或行動,即使跨越迭代。
- 監控智能體異常行為:檢測智能體何時偏離預期的任務流、提升權限或訪問異常資源。
- 在轉向時應用人在迴路:對於改變智能體操作範圍或資源訪問權限的行動,需要手動驗證。
迭代/轉向是攻擊者在智能系統中影響力複合增長的方式。打破這個循環對於防止小的劫持升級為大規模的入侵至關重要。
攻擊者通過被入侵的AI系統實現哪些類型的影響?
影響階段是攻擊者的目標得以實現的地方,通過強制被劫持的模型輸出觸發影響系統、數據或用户的行動。
在AI應用中,當輸出連接到在現實世界中執行行動的工具、API或工作流時,影響就會發生:
- 改變狀態的操作:修改文件、數據庫或系統配置。
- 金融交易:批准付款、發起轉賬或更改財務記錄。
- 數據外泄:將敏感數據編碼到離開系統的輸出中。
- 外部通信:發送電子郵件、消息或命令,冒充受信任的用户。
AI模型本身通常無法造成影響;是其輸出造成了影響。安全必須超越模型本身,控制輸出在下游如何使用。
中斷影響的防禦優先事項:
- 分類敏感操作:識別哪些工具調用、API或行動能夠改變外部狀態或暴露數據。
- 用防護措施包裹敏感操作:在執行前強制執行人在迴路批准或自動化策略檢查。
- 為最小權限而設計:工具應具有狹窄的範圍以最小化誤用,避免使用擴大攻擊面的多功能API。
- 淨化輸出:清除可能觸發意外行動的載荷。
- 使用內容安全策略:防止基於前端的泄露方法,例如加載惡意URL或內聯CSS攻擊。
對工具調用和數據流實施魯棒的下游控制通常可以限制攻擊者的觸及範圍。
如何將AI攻擊鏈應用於現實世界的AI系統示例?
在本節中,我們將使用AI攻擊鏈分析一個簡單的RAG應用,以及它如何可能被用於泄露數據。我們將展示如何嘗試在每個步驟中斷AI攻擊鏈來提高其安全性。
攻擊者穿越AI攻擊鏈的旅程可能如下所示:
-
偵察:攻擊者發現使用了三個模型:嵌入、重新排序和LLM。他們檢查開源文檔中已知的漏洞,以及面向用户的系統文檔,以瞭解向量數據庫中存儲了什麼信息。通過與系統交互,他們嘗試分析模型行為並從系統引出錯誤,希望獲得有關底層軟件堆棧的更多信息。他們還嘗試了各種形式的內容注入,尋找可觀察到的影響。
攻擊者發現文檔表明向量數據庫中包含有價值的信息,但受訪問控制保護。他們的測試發現,開發者論壇評論也被應用程序收集,並且Web前端容易受到內聯樣式修改的影響,這可能允許數據泄露。最後,他們發現系統中可能存在ASCII走私,表明這些字符沒有被淨化,可以影響LLM行為。
-
投毒:利用偵察步驟獲得的知識,攻擊者精心製作了一個論壇帖子,希望它能被攝取到向量數據庫中。在帖子中,他們通過ASCII走私嵌入了一個包含Markdown數據泄露載荷的提示詞注入。這個帖子後來被一個攝取工作器檢索並插入到向量數據庫中。
緩解措施:在攝取之前,應對可公開寫入的數據源(如公共論壇)進行淨化。在過濾步驟中引入防護措施或提示詞注入檢測工具可以幫助防止通過這些源進行提示詞注入。添加對ASCII走私字符的過濾可以增加註入隱藏提示詞的難度,提高檢測的可能性。
-
劫持:當另一個用户提出與攻擊者論壇帖子主題相關的問題時,該帖子被向量數據庫返回,並且——連同隱藏的提示詞注入——被包含在發送給LLM的增強提示詞中。模型執行了提示詞注入並被劫持:所有相關文檔都被編碼並通過Markdown準備進行泄露。
緩解措施:在處理過程中隔離可信和不可信的數據。如果不可信的論壇數據與內部可信數據分開處理,那麼當LLM被內部數據中的提示詞注入劫持時,它就沒有可信的內部數據可供編碼。對每個輸入進行重述或總結也可能導致提示詞注入操作的難度更高。
-
持久化:在這種情況下,持久化是自動的。只要被污染的數據保留在向量數據庫中,額外的查詢就能夠觸發它。
緩解措施:此處的數據隔離,結合對包含來源的仔細審計日誌記錄,可以減少攻擊的影響範圍,並允許檢測和移除受污染的數據。
-
影響:當包含LLM生成的數據泄露載荷的LLM響應被受害者的瀏覽器在RAG應用前端加載時,它會觸發向攻擊者控制的服務器的請求。此時,數據被泄露,攻擊(在此次交互中)完成。
緩解措施:從LLM產生的輸出中刪除任何URL可以防止此類中的許多泄露攻擊。內容隔離將防止除了不可信數據之外的任何數據被泄露。最後,前端強大的內容安全策略可以阻止向不可信域的請求,同時阻止泄露。
因為此應用只是一個具有確定性流程的“1級”智能體,所以迭代/轉向步驟沒有體現。
結論
保護AI需要理解AI如何改變攻擊面,並建立隨着自主性級別而擴展的分層防禦。隨着企業部署LLM、RAG系統和智能工作流,攻擊者正在積極改進他們的方法以利用這些AI驅動的系統。
AI攻擊鏈提供了一種清晰、可操作的方式來分解這些攻擊如何展開——階段性地。它幫助團隊超越泛泛的“提示詞注入”擔憂,看到攻擊者可以在何處、如何以及為何升級他們的控制。在某中心,我們通過諸如NeMo防護措施、越獄檢測NIM和架構最佳實踐等技術,將許多這些防禦措施付諸實踐。 更多精彩內容 請關注我的個人公眾號 公眾號(辦公AI智能小助手) 對網路安全、黑客技術感興趣的朋友可以關注我的安全公眾號(網絡安全技術點滴分享)