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.

