/

CVE-2026-119549

Severity:

HIGH RISK

(7.1)

SSRF (CWE-918) in Jellyfin User Image Rendering Path

CVE-2026-119549

Awaiting Analysis

Vulnerability type

Category:

Server-Side Request Forgery

CWE:

CWE-918

Impact:

Internal Resource Access and Denial of Service

Severity:

HIGH RISK

(7.1)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Jellyfin contains a server-side request forgery vulnerability in user image handling that can be triggered when gzip-compressed SVG content is embedded in a non-SVG image data URI. An authenticated user may upload a crafted profile image, after which image retrieval can cause the server to request internal URLs, access local image files, or consume excessive memory.

Jellyfin contains a server-side request forgery vulnerability in user image handling that can be triggered when gzip-compressed SVG content is embedded in a non-SVG image data URI. An authenticated user may upload a crafted profile image, after which image retrieval can cause the server to request internal URLs, access local image files, or consume excessive memory.

Affected context

The issue affects Jellyfin deployments using the user image upload and rendering paths where image data URIs are processed without consistently applying SVG security validation based on the underlying content. Exploitation depends on the ability to upload or control a profile image, while the resulting request may be triggered through an image retrieval endpoint that can be accessible without authentication.

The issue affects Jellyfin deployments using the user image upload and rendering paths where image data URIs are processed without consistently applying SVG security validation based on the underlying content. Exploitation depends on the ability to upload or control a profile image, while the resulting request may be triggered through an image retrieval endpoint that can be accessible without authentication.

Exploit preconditions

  • Attack surface: User image upload and retrieval endpoints
  • Required access: Authenticated access sufficient to upload or change a profile image
  • Trigger point: Server-side rendering or retrieval of the crafted image through the user image endpoint
  • Why exploitation is possible: Compressed SVG content embedded in a non-SVG image data URI can bypass validation and cause server-side resource requests or expensive image processing
  • Attack surface: User image upload and retrieval endpoints
  • Required access: Authenticated access sufficient to upload or change a profile image
  • Trigger point: Server-side rendering or retrieval of the crafted image through the user image endpoint
  • Why exploitation is possible: Compressed SVG content embedded in a non-SVG image data URI can bypass validation and cause server-side resource requests or expensive image processing

Why this happens

The vulnerability results from inconsistent validation of image content and declared data types. A security validator intended to restrict SVG processing can be bypassed when gzip-compressed SVG data is embedded within a non-SVG image data URI, allowing attacker-controlled content to reach downstream rendering logic.

This maps to CWE-918: Server-Side Request Forgery, because the server may interpret attacker-influenced image content in a way that causes requests to internal or local resources. The same processing path may also permit excessive resource consumption when handling specially crafted image data.

The vulnerability results from inconsistent validation of image content and declared data types. A security validator intended to restrict SVG processing can be bypassed when gzip-compressed SVG data is embedded within a non-SVG image data URI, allowing attacker-controlled content to reach downstream rendering logic.

This maps to CWE-918: Server-Side Request Forgery, because the server may interpret attacker-influenced image content in a way that causes requests to internal or local resources. The same processing path may also permit excessive resource consumption when handling specially crafted image data.

Potential impact

  • The server may make requests to internal network services
  • Local image files or other permitted local resources could be exposed
  • Internal service metadata or network topology may be disclosed
  • Image processing could consume excessive memory and cause denial of service
  • Access to internal endpoints could support further attacks depending on network permissions
  • The server may make requests to internal network services
  • Local image files or other permitted local resources could be exposed
  • Internal service metadata or network topology may be disclosed
  • Image processing could consume excessive memory and cause denial of service
  • Access to internal endpoints could support further attacks depending on network permissions

General mitigation guidance

Mitigation generally focuses on enforcing content-aware validation and preventing image rendering from becoming a server-side network client.

Common defensive patterns include:

  • Decode and inspect image content before selecting a processing path
  • Apply SVG validation to compressed, encoded, and disguised SVG representations
  • Prefer allowlisted image formats and safe decoders over format inference from user-controlled metadata
  • Restrict outbound connections from image-processing components using network egress controls
  • Block access to loopback, link-local, private, and other sensitive address ranges where outbound requests are not required
  • Run image processing with least-privilege filesystem and network permissions
  • Enforce memory, CPU, and request-size limits for image decoding and rendering

Mitigation generally focuses on enforcing content-aware validation and preventing image rendering from becoming a server-side network client.

Common defensive patterns include:

  • Decode and inspect image content before selecting a processing path
  • Apply SVG validation to compressed, encoded, and disguised SVG representations
  • Prefer allowlisted image formats and safe decoders over format inference from user-controlled metadata
  • Restrict outbound connections from image-processing components using network egress controls
  • Block access to loopback, link-local, private, and other sensitive address ranges where outbound requests are not required
  • Run image processing with least-privilege filesystem and network permissions
  • Enforce memory, CPU, and request-size limits for image decoding and rendering

How teams detect issues like this

High-level detection can include:

  • Static analysis and code review rules for image renderers that process user-controlled data URIs
  • Tests covering encoded, compressed, mislabeled, and nested image content
  • Monitoring for image-processing requests that target loopback, private, link-local, or cloud metadata addresses
  • Alerts for unusual outbound connections originating from the Jellyfin process
  • Resource monitoring for repeated image requests associated with abnormal memory growth
  • Policy enforcement requiring network isolation and bounded resource usage for media-processing components

Automated security testing and code review tools may help identify inconsistent validation and SSRF-prone request flows.

High-level detection can include:

  • Static analysis and code review rules for image renderers that process user-controlled data URIs
  • Tests covering encoded, compressed, mislabeled, and nested image content
  • Monitoring for image-processing requests that target loopback, private, link-local, or cloud metadata addresses
  • Alerts for unusual outbound connections originating from the Jellyfin process
  • Resource monitoring for repeated image requests associated with abnormal memory growth
  • Policy enforcement requiring network isolation and bounded resource usage for media-processing components

Automated security testing and code review tools may help identify inconsistent validation and SSRF-prone request flows.

Sources

SourceLink
abraxaslabs.techabraxaslabs.tech/research/jellyfin-svg-gzip
github.comgithub.com/jellyfin/jellyfin
github.comgithub.com/jellyfin/jellyfin/blob/v12.4/Jellyfin.Api/Controllers/ImageController.cs#L96
github.comgithub.com/jellyfin/jellyfin/blob/v12.4/src/Jellyfin.Drawing.Skia/SvgSecurityValidator.cs#L169-L173
github.comgithub.com/jellyfin/jellyfin/security/advisories/GHSA-cf3c-8m59-2vhx
vulncheck.comvulncheck.com/advisories/jellyfin-through-12.4-ssrf-via-gzip-compressed-data-uri-in-svg-profile-images

Frequently asked

questions

It can be remotely triggered through Jellyfin endpoints when an attacker has the required ability to upload or control a user image and the affected rendering path is reachable.

Uploading the crafted profile image generally requires authentication. The subsequent image retrieval or rendering step may be available without authentication, depending on deployment configuration.

Validate image content after decoding and decompression, apply SVG restrictions based on actual content, and prevent image-processing components from making unnecessary internal or local resource requests.

Use strict format allowlists, isolate media processing with network and filesystem controls, enforce resource limits, and test security validation against encoded, compressed, and misleadingly labeled inputs.

It can be remotely triggered through Jellyfin endpoints when an attacker has the required ability to upload or control a user image and the affected rendering path is reachable.

Uploading the crafted profile image generally requires authentication. The subsequent image retrieval or rendering step may be available without authentication, depending on deployment configuration.

Validate image content after decoding and decompression, apply SVG restrictions based on actual content, and prevent image-processing components from making unnecessary internal or local resource requests.

Use strict format allowlists, isolate media processing with network and filesystem controls, enforce resource limits, and test security validation against encoded, compressed, and misleadingly labeled inputs.

Find out what's already
exploitable in your codebase.