Description
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.
Published: 2026-08-12
Score: 7.1 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Seerr's image proxy constructs cache filenames from the upstream ETag and Content-Type headers without performing proper validation. This flaw permits an attacker who can supply malicious values for these headers—such as a compromised upstream Jellyfin or Emby server, or a man‑in‑the‑middle on an unencrypted media‑server connection—to include traversal sequences. The path handling and file write functions then normalize the filename outside the intended cache directory, allowing the attacker to overwrite critical application files like /app/dist/index.js. After the container restarts, the overwritten code executes under the node user’s privileges, providing remote code execution. The vulnerability represents a classic path traversal combined with untrusted file overwrite (CWE‑22 and CWE‑94).

Affected Systems

Seerr, the open‑source media request and discovery manager maintained by the seerr-team, is affected. All versions prior to v3.4.0 are vulnerable; the product is used with Jellyfin, Plex, and Emby. No other vendors or products are listed.

Risk and Exploitability

The CVSS score of 7.1 classifies the issue as high severity. The EPSS score is not available, and the vulnerability is not listed in CISA KEV. Exploitation requires the ability to supply malicious upstream headers, which is attainable if the attacker controls the media server or can witness plaintext traffic. Once the cache file is overwritten, the attack can only be realized after the Seerr container restarts, thus a successful exploit also needs a container reboot or restart. Under these conditions, the likelihood of exploitation is moderate for environments lacking secure transport or where the media server is compromised.

Generated by OpenCVE AI on August 13, 2026 at 00:05 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Seerr to version 3.4.0 or later, which corrects the cache filename handling.
  • If an immediate upgrade is not feasible, disable or restrict unauthenticated access to the /avatarproxy/:jellyfinUserId route, or employ a reverse proxy that filters request headers.
  • Secure the upstream Jellyfin or Emby connections with TLS to prevent an attacker from injecting malicious ETag or Content‑Type headers.

Generated by OpenCVE AI on August 13, 2026 at 00:05 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 13 Aug 2026 17:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 12 Aug 2026 19:30:00 +0000

Type Values Removed Values Added
First Time appeared Seerr-team
Seerr-team seerr
Vendors & Products Seerr-team
Seerr-team seerr

Wed, 12 Aug 2026 15:15:00 +0000

Type Values Removed Values Added
Description 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.
Title Seerr: Path traversal to RCE via /avatarproxy image cache filename from upstream ETag
Weaknesses CWE-22
CWE-94
References
Metrics cvssV3_1

{'score': 7.1, 'vector': 'CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:H'}


Subscriptions

Seerr-team Seerr
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-08-13T16:23:07.044Z

Reserved: 2026-08-11T19:42:11.450Z

Link: CVE-2026-73291

cve-icon Vulnrichment

Updated: 2026-08-13T16:23:03.461Z

cve-icon NVD

Status : Received

Published: 2026-08-12T15:18:33.020

Modified: 2026-08-13T17:17:36.260

Link: CVE-2026-73291

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-13T00:15:04Z

Weaknesses
  • CWE-22

    Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

  • CWE-94

    Improper Control of Generation of Code ('Code Injection')