评估Jupyter环境的安全性

news2024/11/15 5:55:07

评估Jupyter环境的安全性

在这里插入图片描述

如何判断您的 Jupyter 实例是否安全? NVIDIA AI 红队开发了一个 JupyterLab 扩展来自动评估 Jupyter 环境的安全性。 jupysec 是一种根据近 100 条规则评估用户环境的工具,这些规则检测配置和工件,这些配置和工件已被 AI Red Team 识别为潜在漏洞、攻击向量或妥协指标。

NVIDIA AI Red Team 和 Jupyter

NVIDIA AI Red Team 主动评估 NVIDIA AI 产品和开发管道的安全性。 在运营方面,该团队经常遇到来自 Jupyter 生态系统的软件,这是一组功能强大且灵活的工具,许多机器学习 (ML) 研究人员和工程师都在使用它。 AI 红队确定了可用于扩展访问、获得持久性或操纵开发运行时和工件的 Jupyter 配置和功能。

Jupyter 生态系统由许多相互连接的组件组成,这些组件旨在在客户端-服务器模型中执行 Julia、Python 或 R 代码。 通常,用户在基于浏览器的交互式开发环境中与代码进行交互。 该代码通过 HTTP/S 和 WebSockets 发送到可能在本地、远程本地或云端运行的 Jupyter 服务器。 然后,Jupyter 服务器通过消息队列分派代码以在内核中执行。 有关更多信息,请参见下图 和 Jupyter 体系结构文档。

在这里插入图片描述

虽然非常灵活,但这种模块化架构为威胁参与者提供了多种机会来影响机器学习开发周期和衍生系统。 例如,通过访问像 JupyterLab 这样的客户端应用程序,他们可以在经过身份验证的用户的上下文中向服务器发送命令。 用 Jupyter 团队的话说,“命令可能会相互冲突、破坏和覆盖。” 有关详细信息,请参阅运行notebook服务器。

同样,通过访问服务器和内核,威胁参与者可能能够与用户运行时进行交互,而无需访问用户的主机。 请注意,JupyterLab 仅适用于一个用户。 根据 运行notebook服务器,官方的多用户解决方案是 JupyterHub。

凭借其模块化和广泛的用例,Jupyter 生态系统有多个配置文件和值来实现定制。 Jupyter 开发人员和贡献者一直致力于通过默认值和安全相关的功能和配置来平衡安全性和可用性。

但是,用户可能会无意中引入安全漏洞。 此外,如果有足够的访问权限,这些配置可能会被威胁行为者恶意更改以影响 ML 过程。 NVIDIA AI Red Team 的一些技术示例包括:

  1. 默认情况下,启动 Jupyter Server 时(独立启动或作为 JupyterLab 实例化的一部分),服务器仅侦听本地主机生成的请求。 但是,通过修改用于启动进程的配置值或命令行参数,可以使服务器侦听其他接口,包括广播域。 用户可能故意这样做以通过网络访问他们的服务器,无意中将他们的服务器暴露给恶意访问。

  2. Jupyter 默认启用检查以防止跨站点请求伪造 (CSRF)。 这可以防止用户在不知不觉中将攻击者控制的代码提交到 Jupyter 服务器。 但是,威胁参与者可以在配置文件中禁用此检查,从而使用户暴露于 CSRF。

  3. 有了足够的访问权限和凭证材料,攻击者就可以将他们自己的 Jupyter 客户端附加到用户正在运行的内核中。 这意味着他们可以创建变量和函数,用恶意克隆覆盖导入,以及以其他方式在与用户相同的上下文中运行任意代码。 成功瞄准 Jupyter 部署的威胁行为者很可能拥有训练时间访问权限,因此可能会显着影响最终 AI 系统的功效。

总而言之,有风险的配置值可能是有意的、无意的或恶意活动的结果。 由于 Jupyter 生态系统的模块化特性,控制应用程序行为的值可能分散在十几个配置文件和命令行实用程序中。 您如何识别和分类它们,并在必要时采取行动?

使用 jupysec

jupysec 是一组 Jupyter 安全规则和 JupyterLab 扩展,旨在针对已知的安全风险审计 Jupyter 环境。 它可作为独立脚本或 JupyterLab 扩展使用,以最大限度地提高用户将该工具集成到现有工作流程中的能力。

如图 2 所示,该扩展将安全报告小部件添加到启动器。 这是在用户浏览器中运行的扩展的客户端组件。 当用户单击此小部件时,Jupyter 客户端会向 Jupyter 服务器发送 HTTP/GET 请求。 服务器验证请求来自经过身份验证的用户,执行 jupysec 规则,并呈现并将任何发现返回给用户。

在这里插入图片描述

每个 jupysec 调查结果都包含一个类别、发现调查结果的文档、违规行、有关为什么该配置代表安全风险的其他详细信息以及建议的补救措施。 每个发现都有一个 UUID,并通过 Jinja 模板呈现给用户。 jupysec 不维护状态,因此每次执行都会重新评估整个规则集。

下图显示了 jupysec 检测到的潜在代码执行。 IPython 启动目录中有一个名为 10_norm.py 的文件。 每当使用该配置文件启动 JupyterLab 时,该脚本就会运行,如 IPython 所记录并在 IPython 配置文件:Big Bag o’ Functionality 中进行了演示。 该发现是根据特定的 jupysec 规则生成的。

在这里插入图片描述

jupysec 不会为用户修复结果,因为这几乎肯定会对环境产生重大改变。 与任何自动化安全工具一样,可能存在误报。 例如,在图 3 所示的发现中,启动目录可用于通过自动连接到远程数据存储来改善开发人员体验。

但是,同样的配置更改也可用于泄露敏感信息。 jupysec 无法区分,但可以提醒您潜在的问题。 消除误报后,用户和管理员应采取建议的步骤来强化环境或调查异常指标。

总结

Jupyter 生态系统非常强大且可配置,这使其成为对研究人员和开发人员以及威胁参与者具有吸引力的工具。 jupysec 可以自动评估 Jupyter 环境的安全性。

NVIDIA AI Red Team 将继续研究 jupysec 规则中的 Jupyter 安全和编码知识和技术。 无论您的 Jupyter 部署是本地的还是托管在云端,都可以使用 pip install jupysec [jupyterlab] 尝试 jupysec。 访问 GitHub 上的 jupysec,以问题的形式分享您的反馈和贡献。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/382096.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

暴力递归到动态规划

暴力递归到动态规划 假设有排成一行的n个位置, 记为1~n,n-定大于或等于2。开始时机器人在其中的m位置上(m 一定是1~n中的一个)。如果机器人来到1位置,那么下一步只能往右来到2位置;如果机器人来到n位置, 那么下一步只能…

js中splice方法和slice方法

splice方法用来操作数组splice(startIndex,deleteNum,item1,....,)此操作会改变原数组。删除数组中元素参数解释:startIndex为起始index索引。deleteNum为从startIndex索引位置开始需要删除的个数。分三种情况:没有传第三个参数的情况下,dele…

pytest两种生成测试报告的方法——html

pytest有两种生成测试报告的方法(html和allure),今天就给大家一介绍下html 一.pytest-html基本语法 1.安装:pip install pytest-html 2.查看版本:pip show pytest-html 3.生成测试报告基本语法: 语法一…

STM32物联网项目之程序框架

前言: 这个系列,我主要写我用32f103实现的各种功能模块,已经程序编写过程中,硬件调试中出现的问题,一边记录,一边分享,一边复盘。 使用的是STM32cubemax,自动生成代码,…

每日学术速递3.2

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Interactive Segmentation as Gaussian Process Classification(CVPR 2023) 标题:作为高斯过程分类的交互式分割 作者:Minghao Zhou, Hong Wang, Qian Zha…

tensorflow1.14.0安装教程--保姆级

//方法不止一种,下面仅展示一种。 注:本人电脑为win11,anaconda的python版本为3.9,但tensorflow需要python版本为3.7,所以下面主要阐述将python版本改为3.7后的安装过程以及常遇到的问题。 1.首先电脑安装好anaconda…

java进阶—多线程

学习线程,我们先来了解了解什么是进程?什么是线程 进程:就是在操作系统中运行的程序 线程:就是进程的一个执行单元,或者一条执行路劲 比如:我们打开应用商店,这个应用商店就是一个进程&#…

字节实习二面

网络体系结构分层(7、5、4) 答: OSI七层网络体系结构:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 TCP/IP四层网络体系结构:物理层、网际层、传输层、应用层 TCP/IP五层网络体系结构:物…

ShopWind 多商户商城更新,Vue 3 前后端分离,页面自定义装修

本次为 V4 版本更新,新系统架构(技术栈)vue3 vite (打包编译工具) Composition API(组合式 API setup) Element Plus vueRouter (路由) 第三方组件:axios (数据请求) wangeditor(编辑器),都是通过接口访问数据,页面效果更佳了…

【强烈建议收藏:MySQL面试必问系列之并发事务锁专题】

一.知识回顾 上节课我们一起学习了MySQL面试必问系列之事务,没有学习的同学可以看一下上一篇文章,肯定对你会有帮助,学习过的同学肯定知道,上节课我们留了一个小尾巴,这个小尾巴是什么呢?就是没有详细展开…

MPI ubuntu安装,mpicc,mpicxx,mpif90的区别

介绍 MPI是并行计算的一个支持库,支持对C、C、fortran语言进行并行计算。 安装基础环境 ubuntu进行gcc/g/gfortran的安装: gcc: ubuntu下自带gcc编译器。可以通过gcc -v命令来查看是否安装。 g: sudo apt-get install buil…

【Python学习笔记】第二十四节 Python 正则表达式

一、正则表达式简介正则表达式(regular expression)是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特…

Day07-flex布局

文章目录弹性布局一 简介二 弹性容器案例-让多个div排成一行三 容器项目的对齐方式案例1-justify-content(主轴对齐)案例2-flex-wrap(换行)案例3-align-items(侧轴对齐)案例4-align-self(项目垂直对齐)案例5-flex-direction(改变轴向)案例6-弹性布局应用四 弹性项目-flex属性案…

离开央视的欧阳夏丹,在艺考培训机构当老师,是金子到哪都会发光

说起中央电视台,大家都认为这是主持界的殿堂,但凡能在这里工作的人,都是出类拔萃的人才。在中央电视台,确实也出现过很多人才,比如说主持界的康辉、撒贝宁、朱军、周涛等等。 除了以上这些主持人,欧阳夏丹也…

【高效办公】批量生成固定模板的文件夹名称

老师让你按照他的要求生成每位学生的文件夹,你是学委,让你马上完成该任务,但你又不想是手动一个一个码字,因此聪明的你就看到了本篇文章啦!!! 虽说一个人懒惰,并不是好的事情。 但这个似乎合情合理啊~ 然后,就动手想办法,一开始就真的打算码字了。。 思路 在实际开…

机器学习笔记之狄利克雷过程(二)基于标量参数作用的推导过程

机器学习笔记之狄利克雷过程——基于标量参数作用的推导过程引言回顾:狄利克雷过程——基本介绍狄利克雷过程——定义小插曲:狄利克雷分布的简单性质关于标量参数作用的推导过程引言 上一节以高斯混合模型为引,简单介绍了狄利克雷过程(Diric…

虹科分享| 浅谈HK-Edgility边缘计算平台

上周,我们推出了虹科新品HK-Edgility边缘计算平台以及uCPE解决方案。本篇文章我们再来谈一谈到底什么是边缘计算?为什么需要边缘计算?边缘计算和云计算有什么关系?HK-Edgility边缘计算平台将为您带来什么?一、边缘计算…

【C++】vector实现(深浅拷贝详细理解,迭代器失效)

🍅可以先去这个网站看一下个个函数的功能 本文不再详细介绍,vector的底层还是顺序表,我讲的很详细,建议没学过顺序表的先预习一下(主页搜索顺序表,还有配套习题) C网站关于vector的接口函数信息…

雅思积累(十八)同义替换

同义替换:sophisticated —— complicatedspecific —— detailed —— particularquantity —— wealth —— volume —— numbersettle —— schedule —— arrange —— fixswift —— rapid —— fast —— quickexpertise —— professional knowledge —— sk…

【云原生kubernetes】k8s中job与cronjob使用详解

一、前言 job,顾名思义就是任务,job的概念在很多框架中都有,而且实际业务场景中也使用非常广泛,比如大家熟悉的hadoop,客户端可以向集群提交一个job,然后集群根据一定的调度策略来处理这个job; …