网络安全/欺诈检测

Jupyter 环境安全评估

如何判断 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 架构文档 。

A diagram showing that users interact with a browser that uses HTTP and web sockets to connect to the Jupyter server. The Jupyter server connects both to the notebook file and through a message queue to the kernel.
图 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 扩展提供,以最大限度地提高用户将该工具集成到现有工作流中的能力。

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

An animation showing how users can install the extension with pip and use the Jupyter extension to see a report in their browser.
图 2 :作为 JupyterLab 扩展安装并运行 jupysec

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

图 3 显示了 jupitec 检测到的潜在代码执行。在 I Python 启动目录中有一个名为10_norm.py的文件。每当使用该配置文件启动 JupyterLab 时,就会运行该脚本,如 documented by IPython 所示,并在 IPython Profiles: Big Bag o’ Functionality 中演示。该发现是从特定的 jupysec rule 中产生的。

A screenshot of the report card feature. The report card is text with category, source, details, and remediation fields.
图 3 。 Jupitec 查找示例

jupitec 不会为用户修正这些发现,因为这几乎肯定会对环境产生破坏性的改变。与任何自动安全工具一样,可能存在误报。例如,在图 3 所示的查找中,可以使用启动目录通过自动连接到远程数据存储来改善开发人员的体验。

然而,同样的配置更改也可以用于过滤敏感信息。木星无法分辨出两者的区别,但可以提醒你潜在的问题。在消除误报后,用户和管理员应采取建议的步骤来加强环境或调查异常指标。

总结

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

NVIDIA AI 红色团队将继续研究 jupysec rules 中的 Jupyter 安全和编码知识和技术。无论您的 Jupyter 部署是本地部署还是托管在云上,都可以尝试使用pip install jupysec[jupyterlab]。访问 GitHub 上的 jupysec ,将您的反馈和贡献作为问题进行分享。

Register for free for GTC 2023 , 3 月 20 日至 23 日,请与我们一起参加 Connect with the Experts: Using AI to Modernize CybersecurityCreating and Executing an Effective Cyberdefense Strategy in an AI-Driven Business 和更多相关会议。

 

标签