CVE-2025-31499

8.8 HIGH

📋 TL;DR

This vulnerability allows argument injection in Jellyfin's FFmpeg processing, which can lead to arbitrary file write and potentially remote code execution. Attackers with low-privileged user credentials can exploit this, and unauthenticated endpoints are vulnerable if a valid itemId is obtained. All Jellyfin instances before version 10.10.7 are affected.

💻 Affected Systems

Products:
  • Jellyfin
Versions: All versions before 10.10.7
Operating Systems: All platforms running Jellyfin
Default Config Vulnerable: ⚠️ Yes
Notes: The vulnerability affects the same endpoints previously patched in CVE-2023-49096, including /Videos/<itemId>/stream and similar audio endpoints.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution leading to complete system compromise, data theft, and lateral movement within the network.

🟠

Likely Case

Arbitrary file write allowing attackers to modify configuration files, install malicious plugins, or disrupt service availability.

🟢

If Mitigated

Limited impact if proper network segmentation and least privilege access controls are implemented, though file writes could still occur.

🌐 Internet-Facing: HIGH
🏢 Internal Only: HIGH

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires a valid itemId, which authenticated attackers can easily obtain. The vulnerability bypasses the previous patch for CVE-2023-49096.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 10.10.7

Vendor Advisory: https://github.com/jellyfin/jellyfin/security/advisories/GHSA-2c3c-r7gp-q32m

Restart Required: Yes

Instructions:

1. Backup your Jellyfin configuration and database. 2. Stop the Jellyfin service. 3. Update to version 10.10.7 using your package manager or manual installation. 4. Restart the Jellyfin service. 5. Verify the update was successful.

🔧 Temporary Workarounds

Network Access Restriction

all

Restrict access to Jellyfin endpoints to trusted networks only

Use firewall rules to limit access to Jellyfin ports (default 8096)

Authentication Enforcement

all

Require authentication for all media streaming endpoints

Configure Jellyfin to require authentication for all users

🧯 If You Can't Patch

  • Implement strict network segmentation to isolate Jellyfin from critical systems
  • Enforce multi-factor authentication and limit user privileges to minimum required

🔍 How to Verify

Check if Vulnerable:

Check Jellyfin version in web interface dashboard or via systemctl status jellyfin

Check Version:

jellyfin --version or check /usr/share/jellyfin/web/index.html

Verify Fix Applied:

Confirm version is 10.10.7 or later in Jellyfin dashboard

📡 Detection & Monitoring

Log Indicators:

  • Unusual FFmpeg parameter patterns in Jellyfin logs
  • Multiple failed authentication attempts followed by successful itemId enumeration

Network Indicators:

  • Unusual HTTP requests to /Videos/*/stream endpoints with suspicious parameters
  • Outbound connections from Jellyfin server to unexpected destinations

SIEM Query:

source="jellyfin.log" AND ("FFmpeg" AND "argument" OR "parameter")

🔗 References

📤 Share & Export