如何判斷 Jupyter 實(shí)例是否安全? NVIDIA AI 紅色團(tuán)隊(duì)開發(fā)了 JupyterLab 擴(kuò)展,以自動(dòng)評(píng)估 Jupyter 環(huán)境的安全性。 jupysec 是一種工具,它根據(jù)近 100 條規(guī)則評(píng)估用戶環(huán)境,這些規(guī)則檢測(cè) AI 紅色團(tuán)隊(duì)確定為潛在漏洞、攻擊向量或危害指標(biāo)的配置和工件。
NVIDIA AI 紅隊(duì)和 Jupyter
NVIDIA AI 紅色團(tuán)隊(duì)積極評(píng)估 NVIDIA 人工智能產(chǎn)品和開發(fā)管道的安全性。在操作上,團(tuán)隊(duì)經(jīng)常遇到 Jupyter 生態(tài)系統(tǒng)中的軟件,這是一套強(qiáng)大而靈活的工具,許多機(jī)器學(xué)習(xí)( ML )研究人員和工程師使用。 AI 紅色團(tuán)隊(duì)確定了 Jupyter 配置和功能,可用于擴(kuò)展訪問、獲得持久性或操縱開發(fā)運(yùn)行時(shí)和工件。
Jupyter 生態(tài)系統(tǒng)由許多互連組件組成,這些組件設(shè)計(jì)用于在客戶機(jī) – 服務(wù)器模型中執(zhí)行 Julia 、 Python 或 R 代碼。通常,用戶在基于瀏覽器的交互式開發(fā)環(huán)境中與代碼交互。該代碼通過 HTTP / S 和 WebSocket 發(fā)送到 Jupyter 服務(wù)器,該服務(wù)器可能在本地、本地或云中遠(yuǎn)程運(yùn)行。然后, Jupyter 服務(wù)器通過消息隊(duì)列分派代碼以在內(nèi)核中執(zhí)行。有關(guān)更多信息,請(qǐng)參見圖 1 和 Jupyter 架構(gòu)文檔。
圖 1 。 Jupyter 體系結(jié)構(gòu)概述
盡管非常靈活,但這種模塊化架構(gòu)為威脅參與者提供了影響機(jī)器學(xué)習(xí)開發(fā)周期和衍生系統(tǒng)的多種機(jī)會(huì)。例如,通過訪問像 JupyterLab 這樣的客戶端應(yīng)用程序,他們可以在經(jīng)過身份驗(yàn)證的用戶的上下文中向服務(wù)器發(fā)送命令。用 Jupyter 團(tuán)隊(duì)的話說,“命令可能會(huì)相互沖突、碰撞和覆蓋。”有關(guān)詳細(xì)信息,請(qǐng)參閱 運(yùn)行Notebook 服務(wù)器。
類似地,通過訪問服務(wù)器和內(nèi)核,威脅參與者可能能夠與用戶運(yùn)行時(shí)交互,而無(wú)需訪問用戶的主機(jī)。請(qǐng)注意, JupyterLab 僅適用于一個(gè)用戶。根據(jù) 運(yùn)行 Notebook 服務(wù)器,官方的多用戶解決方案是 JupyterHub 。
憑借其模塊化和廣泛的用例, Jupyter 生態(tài)系統(tǒng)有幾個(gè)配置文件和值來(lái)實(shí)現(xiàn)定制。 Jupyter 開發(fā)人員和貢獻(xiàn)者一直在努力平衡安全性和可用性與默認(rèn)值以及與安全相關(guān)的功能和配置。
然而,用戶可能會(huì)無(wú)意中引入安全漏洞。此外,如果有足夠的訪問權(quán)限,這些配置可能會(huì)被威脅參與者惡意更改,從而影響 ML 過程。 NVIDIA AI 紅色團(tuán)隊(duì)的一些技術(shù)示例包括:
1.默認(rèn)情況下,當(dāng)啟動(dòng) JupyterServer (獨(dú)立或作為 JupyterLab 實(shí)例化的一部分)時(shí),服務(wù)器僅偵聽本地主機(jī)生成的請(qǐng)求。但是,通過修改用于啟動(dòng)進(jìn)程的配置值或命令行參數(shù),可以使服務(wù)器偵聽包括廣播域在內(nèi)的其他接口。用戶可能有意通過網(wǎng)絡(luò)訪問其服務(wù)器,無(wú)意中將其服務(wù)器暴露給惡意訪問。
2.Jupyter 默認(rèn)啟用了 check to prevent cross-site request forgeries ( CSRF )。這可以防止用戶在不知不覺中向 Jupyter 服務(wù)器提交攻擊者控制的代碼。然而,威脅參與者可以在配置文件中禁用此檢查,從而將用戶暴露于 CSRF 。
3.通過足夠的訪問權(quán)限和憑據(jù)材料,攻擊者可以將自己的 Jupyter 客戶端連接到用戶運(yùn)行的內(nèi)核。這意味著他們可以創(chuàng)建變量和函數(shù),用惡意克隆覆蓋導(dǎo)入,或者運(yùn)行任意代碼 在與用戶相同的上下文中 。成功瞄準(zhǔn) Jupyter 部署的威脅參與者可能有訓(xùn)練時(shí)間,因此可能會(huì)嚴(yán)重影響最終 AI 系統(tǒng)的效能。
總之,有風(fēng)險(xiǎn)的配置值可能是有意的、無(wú)意的或惡意活動(dòng)的結(jié)果。由于 Jupyter 生態(tài)系統(tǒng)的模塊化特性,控制應(yīng)用程序行為的值可能分散在十幾個(gè)配置文件和命令行實(shí)用程序中。您如何識(shí)別和分類他們,并在必要時(shí)采取行動(dòng)?
使用 jupitec
jupysec 是一組 Jupyter 安全規(guī)則和一個(gè) JupyterLab 擴(kuò)展,旨在針對(duì)已知的安全風(fēng)險(xiǎn)審計(jì) Jupyter 環(huán)境。它可以作為獨(dú)立腳本或 JupyterLab 擴(kuò)展提供,以最大限度地提高用戶將該工具集成到現(xiàn)有工作流中的能力。
該擴(kuò)展將安全報(bào)告小部件添加到 Launcher 中。這是在用戶瀏覽器中運(yùn)行的擴(kuò)展的客戶端組件。當(dāng)用戶單擊此小部件時(shí), Jupyter 客戶端向 Jupyter 服務(wù)器發(fā)送 HTTP / GET 請(qǐng)求。服務(wù)器驗(yàn)證請(qǐng)求是否來(lái)自經(jīng)過身份驗(yàn)證的用戶,執(zhí)行 jupysec rules ,并將任何結(jié)果呈現(xiàn)并返回給用戶。
每個(gè) jupysec finding 都包含一個(gè)類別、找到查找結(jié)果的文檔、違規(guī)行、有關(guān)該配置為何存在安全風(fēng)險(xiǎn)的其他詳細(xì)信息,以及建議的補(bǔ)救措施。每個(gè)發(fā)現(xiàn)都被賦予一個(gè) UUID ,并通過 Jinja 模板呈現(xiàn)給用戶。 jupitec 不維護(hù)狀態(tài),因此每次執(zhí)行都會(huì)重新評(píng)估整個(gè)規(guī)則集。
在 I Python 啟動(dòng)目錄中有一個(gè)名為10_norm.py的文件。每當(dāng)使用該配置文件啟動(dòng) JupyterLab 時(shí),就會(huì)運(yùn)行該腳本,如 documented by IPython 所示,并在 IPython Profiles: Big Bag o’ Functionality 中演示。該發(fā)現(xiàn)是從特定的 jupysec rule 中產(chǎn)生的。
jupitec 不會(huì)為用戶修正這些發(fā)現(xiàn),因?yàn)檫@幾乎肯定會(huì)對(duì)環(huán)境產(chǎn)生破壞性的改變。與任何自動(dòng)安全工具一樣,可能存在誤報(bào)。可以使用啟動(dòng)目錄通過自動(dòng)連接到遠(yuǎn)程數(shù)據(jù)存儲(chǔ)來(lái)改善開發(fā)人員的體驗(yàn)。
然而,同樣的配置更改也可以用于過濾敏感信息。木星無(wú)法分辨出兩者的區(qū)別,但可以提醒你潛在的問題。在消除誤報(bào)后,用戶和管理員應(yīng)采取建議的步驟來(lái)加強(qiáng)環(huán)境或調(diào)查異常指標(biāo)。
總結(jié)
Jupyter 生態(tài)系統(tǒng)非常強(qiáng)大且可配置,這使其成為研究人員和開發(fā)人員以及威脅行為者的一個(gè)有吸引力的工具。 jupitec 可以自動(dòng)評(píng)估 Jupyter 環(huán)境的安全性。
-
NVIDIA
+關(guān)注
關(guān)注
14文章
5076瀏覽量
103728 -
AI
+關(guān)注
關(guān)注
87文章
31536瀏覽量
270344 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8441瀏覽量
133087
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
如何判斷Tina板子中的固件是否是安全呢
以后Jupyter也能做可視化Debug了
神器jupyter的優(yōu)勢(shì)和使用教程
![神器<b class='flag-5'>jupyter</b>的優(yōu)勢(shì)和使用教程](https://file.elecfans.com/web1/M00/DE/F0/pIYBAGAcobuATCe7AAIlN4VbXiw454.gif)
如何判斷是否需要安全地毯呢?
![如何<b class='flag-5'>判斷</b><b class='flag-5'>是否</b>需要<b class='flag-5'>安全</b>地毯呢?](https://file1.elecfans.com/web2/M00/8E/96/wKgZomTIlSqACi0mAAYXyj1nUVI957.png)
如何判斷安全光柵是否安全?
什么是 Jupyter Notebook
![什么是 <b class='flag-5'>Jupyter</b> Notebook](https://file1.elecfans.com/web2/M00/A8/48/wKgaomUsqtKAfbGlAACjBd8RbIY011.jpg)
如何判斷繼電器是否正常工作
華為云 Flexus X 實(shí)例部署安裝 Jupyter Notebook,學(xué)習(xí) AI,機(jī)器學(xué)習(xí)算法
![華為云 Flexus X <b class='flag-5'>實(shí)例</b>部署安裝 <b class='flag-5'>Jupyter</b> Notebook,學(xué)習(xí) AI,機(jī)器學(xué)習(xí)算法](https://file1.elecfans.com//web3/M00/04/8B/wKgZPGd2J4SABwWpAAGTB6rKYaM050.png)
評(píng)論