如何判斷 Jupyter 實例是否安全? NVIDIA AI 紅色團隊開發了 JupyterLab 擴展,以自動評估 Jupyter 環境的安全性。 jupysec 是一種工具,它根據近 100 條規則評估用戶環境,這些規則檢測 AI 紅色團隊確定為潛在漏洞、攻擊向量或危害指標的配置和工件。
NVIDIA AI 紅隊和 Jupyter
NVIDIA AI 紅色團隊積極評估 NVIDIA 人工智能產品和開發管道的安全性。在操作上,團隊經常遇到 Jupyter 生態系統中的軟件,這是一套強大而靈活的工具,許多機器學習( ML )研究人員和工程師使用。 AI 紅色團隊確定了 Jupyter 配置和功能,可用于擴展訪問、獲得持久性或操縱開發運行時和工件。
Jupyter 生態系統由許多互連組件組成,這些組件設計用于在客戶機 – 服務器模型中執行 Julia 、 Python 或 R 代碼。通常,用戶在基于瀏覽器的交互式開發環境中與代碼交互。該代碼通過 HTTP / S 和 WebSocket 發送到 Jupyter 服務器,該服務器可能在本地、本地或云中遠程運行。然后, Jupyter 服務器通過消息隊列分派代碼以在內核中執行。有關更多信息,請參見圖 1 和 Jupyter 架構文檔。
圖 1 。 Jupyter 體系結構概述
盡管非常靈活,但這種模塊化架構為威脅參與者提供了影響機器學習開發周期和衍生系統的多種機會。例如,通過訪問像 JupyterLab 這樣的客戶端應用程序,他們可以在經過身份驗證的用戶的上下文中向服務器發送命令。用 Jupyter 團隊的話說,“命令可能會相互沖突、碰撞和覆蓋。”有關詳細信息,請參閱 運行Notebook 服務器。
類似地,通過訪問服務器和內核,威脅參與者可能能夠與用戶運行時交互,而無需訪問用戶的主機。請注意, JupyterLab 僅適用于一個用戶。根據 運行 Notebook 服務器,官方的多用戶解決方案是 JupyterHub 。
憑借其模塊化和廣泛的用例, Jupyter 生態系統有幾個配置文件和值來實現定制。 Jupyter 開發人員和貢獻者一直在努力平衡安全性和可用性與默認值以及與安全相關的功能和配置。
然而,用戶可能會無意中引入安全漏洞。此外,如果有足夠的訪問權限,這些配置可能會被威脅參與者惡意更改,從而影響 ML 過程。 NVIDIA AI 紅色團隊的一些技術示例包括:
1.默認情況下,當啟動 JupyterServer (獨立或作為 JupyterLab 實例化的一部分)時,服務器僅偵聽本地主機生成的請求。但是,通過修改用于啟動進程的配置值或命令行參數,可以使服務器偵聽包括廣播域在內的其他接口。用戶可能有意通過網絡訪問其服務器,無意中將其服務器暴露給惡意訪問。
2.Jupyter 默認啟用了 check to prevent cross-site request forgeries ( CSRF )。這可以防止用戶在不知不覺中向 Jupyter 服務器提交攻擊者控制的代碼。然而,威脅參與者可以在配置文件中禁用此檢查,從而將用戶暴露于 CSRF 。
3.通過足夠的訪問權限和憑據材料,攻擊者可以將自己的 Jupyter 客戶端連接到用戶運行的內核。這意味著他們可以創建變量和函數,用惡意克隆覆蓋導入,或者運行任意代碼 在與用戶相同的上下文中 。成功瞄準 Jupyter 部署的威脅參與者可能有訓練時間,因此可能會嚴重影響最終 AI 系統的效能。
總之,有風險的配置值可能是有意的、無意的或惡意活動的結果。由于 Jupyter 生態系統的模塊化特性,控制應用程序行為的值可能分散在十幾個配置文件和命令行實用程序中。您如何識別和分類他們,并在必要時采取行動?
使用 jupitec
jupysec 是一組 Jupyter 安全規則和一個 JupyterLab 擴展,旨在針對已知的安全風險審計 Jupyter 環境。它可以作為獨立腳本或 JupyterLab 擴展提供,以最大限度地提高用戶將該工具集成到現有工作流中的能力。
該擴展將安全報告小部件添加到 Launcher 中。這是在用戶瀏覽器中運行的擴展的客戶端組件。當用戶單擊此小部件時, Jupyter 客戶端向 Jupyter 服務器發送 HTTP / GET 請求。服務器驗證請求是否來自經過身份驗證的用戶,執行 jupysec rules ,并將任何結果呈現并返回給用戶。
每個 jupysec finding 都包含一個類別、找到查找結果的文檔、違規行、有關該配置為何存在安全風險的其他詳細信息,以及建議的補救措施。每個發現都被賦予一個 UUID ,并通過 Jinja 模板呈現給用戶。 jupitec 不維護狀態,因此每次執行都會重新評估整個規則集。
在 I Python 啟動目錄中有一個名為10_norm.py的文件。每當使用該配置文件啟動 JupyterLab 時,就會運行該腳本,如 documented by IPython 所示,并在 IPython Profiles: Big Bag o’ Functionality 中演示。該發現是從特定的 jupysec rule 中產生的。
jupitec 不會為用戶修正這些發現,因為這幾乎肯定會對環境產生破壞性的改變。與任何自動安全工具一樣,可能存在誤報。可以使用啟動目錄通過自動連接到遠程數據存儲來改善開發人員的體驗。
然而,同樣的配置更改也可以用于過濾敏感信息。木星無法分辨出兩者的區別,但可以提醒你潛在的問題。在消除誤報后,用戶和管理員應采取建議的步驟來加強環境或調查異常指標。
總結
Jupyter 生態系統非常強大且可配置,這使其成為研究人員和開發人員以及威脅行為者的一個有吸引力的工具。 jupitec 可以自動評估 Jupyter 環境的安全性。
-
NVIDIA
+關注
關注
14文章
4994瀏覽量
103194 -
AI
+關注
關注
87文章
31000瀏覽量
269333 -
機器學習
+關注
關注
66文章
8422瀏覽量
132743
發布評論請先 登錄
相關推薦
評論