CVE-2026-73291 in Seerr
Summary
by MITRE • 08/12/2026
Seerr is an open-source media request and discovery manager for Jellyfin, Plex, and Emby. Prior to version 3.4.0, Seerr's ImageProxy in server/lib/imageproxy.ts uses the upstream ETag and Content-Type response headers to build a cache filename for the unauthenticated GET /avatarproxy/:jellyfinUserId route, allowing a malicious or compromised Jellyfin or Emby server, or a man-in-the-middle attacker on a plaintext media-server connection, to supply traversal sequences that path.join and fs.writeFile normalize outside the cache directory, overwrite /app/dist/index.js or other files, and execute code as the node user after a container restart. This issue is fixed in version 3.4.0.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.
Analysis
by VulDB Data Team • 08/12/2026
The vulnerability in Seerr affects versions prior to 3.4.0 and stems from insecure handling of image proxy functionality within the server's imageproxy.ts module. The flaw exists in how the system processes upstream response headers, specifically ETag and Content-Type, when constructing cache filenames for the unauthenticated avatarproxy endpoint. This design oversight creates a path traversal vulnerability that can be exploited by malicious actors who have compromised or privileged access to Jellyfin or Emby servers, or those capable of performing man-in-the-middle attacks on plaintext connections.
The technical implementation involves the ImageProxy component using path.join and fs.writeFile functions to create cache files based on data derived from upstream server responses. When a malicious attacker supplies specially crafted ETag or Content-Type headers containing directory traversal sequences such as ../ or ..\, these sequences are not properly sanitized before being processed by the file system operations. The normalization behavior of path.join and fs.writeFile allows these traversal sequences to escape the intended cache directory structure, potentially targeting critical application files including /app/dist/index.js which contains the core application logic.
This vulnerability represents a critical security risk that aligns with CWE-22 (Path Traversal) and follows attack patterns consistent with those documented in the ATT&CK framework under T1059.006 (Python), though applicable to node.js environments. The impact extends beyond simple file system manipulation as the exploitation can result in arbitrary code execution with the privileges of the node user running the Seerr application. When combined with a container restart event, the compromised code becomes active and executable within the application context, creating a persistent threat vector that could allow attackers to gain full control over the media request management system.
The attack surface is particularly concerning given Seerr's integration with popular media servers like Jellyfin, Plex, and Emby where attackers may already have access through legitimate user accounts or compromised server environments. The vulnerability affects both authenticated and unauthenticated scenarios, though the most significant risk occurs when attackers can manipulate upstream server responses, making this a particularly dangerous flaw in distributed media management systems. Organizations using Seerr should immediately update to version 3.4.0 or later where the fix addresses the path traversal issue through proper input sanitization and validation of upstream response headers before they are used in file system operations. The mitigation strategy should also include network monitoring for unusual header patterns and ensuring that all media server connections are encrypted using TLS to prevent man-in-the-middle attacks that could exploit this vulnerability.