CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-54910

CVE-2026-54910: Multiple Path Traversal Vulnerabilities in FileBrowser Quantum Subtitle Handler

Alon Barad
Alon Barad
Software Engineer

Jul 31, 2026·6 min read·65 visits

Executive Summary (TL;DR)

Authenticated path traversal in FileBrowser Quantum subtitle handler allows reading arbitrary system files via unvalidated query parameters.

FileBrowser Quantum (a fork of Filebrowser) prior to version 1.4.3-beta is vulnerable to multiple directory traversal flaws in its subtitle handler endpoint (`GET /api/media/subtitles`). This allows authenticated users with standard access to read arbitrary text files on the host system.

Vulnerability Overview

FileBrowser Quantum is a web-based file management application. It allows users to manage local directories, stream media, and modify system files through a web interface. The application exposes several API endpoints to handle media content. One such endpoint is GET /api/media/subtitles, handled by the subtitlesHandler function in backend/http/media.go.

This endpoint is designed to allow users to retrieve sidecar subtitles (such as SRT or VTT files) for video streams. It processes user-supplied query parameters to identify the video file and fetch the associated subtitle. However, the handler does not perform adequate input validation on these query parameters.

This lack of validation introduces a directory traversal vulnerability classified under CWE-22. Any authenticated user can exploit this vulnerability to read arbitrary text files on the host operating system. The scope of the vulnerability extends beyond the application root because the underlying file-reading mechanisms run with the privileges of the FileBrowser Quantum process.

Root Cause Analysis

The root cause lies in the logical flow of the subtitlesHandler endpoint. The endpoint reads four parameters: path, source, name, and embedded. The source parameter dictates the user scope under which the directory queries must run. However, the application fails to confine the path operations to this scope when resolving the inputs.

There are two independent path traversal vectors in the vulnerable handler. The first vector is via the path parameter. The application fetches the path string and passes it directly to the indexing engine via idx.GetRealPath(userscope, path). The indexing engine fails to sanitize this parameter using safe path-handling primitives, allowing directory traversal sequences like .. to resolve outside the defined user scope directory.

The second vector exists in the handling of the name parameter. Even if the path parameter points to a valid file inside the scope, the application resolves its parent directory and appends the name parameter using Go's standard filepath.Join(parentDir, name). While filepath.Join cleans the final string, it does not prevent traversing above the parentDir if relative paths are provided in name. This allows an attacker to fetch any file by appending traversal strings to the name parameter.

Code Analysis

To understand the technical mechanism, we must analyze the vulnerable implementation of the subtitlesHandler function in backend/http/media.go. The following code snippet demonstrates the unsafe retrieval and manipulation of query parameters:

// Vulnerable code in backend/http/media.go
path := r.URL.Query().Get("path")
source := r.URL.Query().Get("source")
name := r.URL.Query().Get("name")
 
userscope, err := d.user.GetScopeForSourceName(source)
// ...
idx := indexing.GetIndex(source)
// ...
realPath, _, err := idx.GetRealPath(userscope, path)
// ...
parentDir := filepath.Dir(realPath)
 
if !embedded {
    // UNSAFE: name is concatenated without validation
    content, err = utils.GetSubtitleSidecarContent(filepath.Join(parentDir, name))
}

In this implementation, idx.GetRealPath returns an unsanitized absolute path based on user input. Following this, filepath.Join constructs the file path using the untrusted name parameter. There are no checks to ensure that the constructed path remains within the bounds of parentDir or the defined userscope storage root.

// Patched code in backend/http/media.go (Commit f3f4bbe8)
fileInfo, err := files.FileInfoFaster(utils.FileOptions{
    FollowSymlinks:           true,
    Path:                     path,
    Source:                   source,
    Expand:                   true,
    Content:                  false,
    Metadata:                 true,
    ExtractEmbeddedSubtitles: config.Integrations.Media.ExtractEmbeddedSubtitles,
    // ...
}, store.Access, d.user, store.Share)
 
if !strings.HasPrefix(fileInfo.Type, "video") {
    return http.StatusNotFound, fmt.Errorf("file is not a video")
}
 
track := findSubtitleTrack(fileInfo.Subtitles, name, embedded)
// ...
if !embedded {
    // SECURE: filepath.Base strips directory traversal sequences from track.Name
    subtitlePath := filepath.Join(filepath.Dir(fileInfo.RealPath), filepath.Base(track.Name))
    content, err = utils.GetSubtitleSidecarContent(subtitlePath)
}

The patched version introduces three key security enhancements. First, path resolution is delegated to files.FileInfoFaster, which uses the central, scope-aware file resolver. Second, the code validates that the target file is a video, preventing direct access to non-video configuration files. Third, it applies filepath.Base to the subtitle track name, which strips all directory traversal segments before joining it to the video's parent directory.

Exploitation

An attacker can exploit either path traversal vector using a standard web browser or command-line utility. The attacker must possess valid credentials to authenticate to the FileBrowser Quantum instance and obtain an active JSON Web Token (JWT) or session cookie.

In the first exploitation scenario, the attacker targets the path parameter directly. The attacker constructs an HTTP GET request to /api/media/subtitles and populates the path parameter with traversal sequences. For example, setting path=/../../../../etc/passwd allows the attacker to traverse to the root directory. Setting the name parameter to passwd matches the final path construction logic, prompting the server to read and return /etc/passwd:

GET /api/media/subtitles?source=default&path=/../../../../etc/passwd&name=passwd&embedded=false HTTP/1.1
Host: target-filebrowser.local
Authorization: Bearer <JWT_TOKEN>

In the second exploitation scenario, the attacker leverages the name parameter traversal vulnerability. The attacker selects an existing, valid video file within their scoped directory to satisfy the initial path check. The attacker then implements the traversal sequences directly in the name parameter. The application resolves the valid video directory and appends the malicious name argument, resolving to the targeted file:

GET /api/media/subtitles?source=default&path=movies/clip.mp4&name=../../../../etc/passwd&embedded=false HTTP/1.1
Host: target-filebrowser.local
Authorization: Bearer <JWT_TOKEN>

Impact Assessment

The impact of successful exploitation is critical. Although the vulnerability requires authentication, FileBrowser Quantum is frequently deployed in multi-tenant environments where standard users are intended to have restricted directory access. An attacker with a low-privileged account can read arbitrary system text files, effectively breaking tenant isolation.

By accessing arbitrary host files, an attacker can extract sensitive system information. This includes reading /etc/passwd to map user accounts, accessing application configuration files to retrieve database credentials, or reading private SSH keys from user home directories. Additionally, if the attacker retrieves the server's private JWT signing key, they can forge administrative session tokens and gain full control over the application.

The vulnerability is classified as CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N, yielding a base score of 7.7. The scope is marked as 'Changed' (S:C) because the traversal allows the attacker to read files directly from the host operating system, escaping the application's logical directory restrictions.

Remediation & Detection Guidance

The primary remediation strategy is upgrading FileBrowser Quantum to version 1.4.3-beta or higher. The update introduces robust authorization logic, file-type checks, and path normalization to effectively neutralize traversal attacks. This version can be downloaded from the official repository release page.

If upgrading is not immediately feasible, system administrators should implement containerization or operating system-level process isolation. Running FileBrowser Quantum inside a minimal Docker container limits host file exposure. The application container should execute with non-root privileges and map only necessary data directories, preventing access to host files like /etc/passwd or ssh keys.

Administrators can detect exploitation attempts by monitoring application access logs for anomalous GET requests. Requests to /api/media/subtitles containing .. or %2f sequences in either the path or name query parameters are high-fidelity indicators of exploitation. Additionally, deployment of a web application firewall (WAF) or an intrusion detection system (IDS) can block incoming requests containing common traversal patterns.

Official Patches

gtsteffaniakFix commit implementing FileInfoFaster and filepath.Base sanitization
gtsteffaniakPull Request detailing the refactoring of media files handling

Fix Analysis (1)

Technical Appendix

CVSS Score
7.7/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N
EPSS Probability
0.31%
Top 77% most exploited

Affected Systems

FileBrowser Quantum

Affected Versions Detail

Product
Affected Versions
Fixed Version
FileBrowser Quantum
gtsteffaniak
< 1.4.3-beta1.4.3-beta
AttributeDetail
CWE IDCWE-22
Attack VectorNetwork
CVSS Score7.7
EPSS Score0.00307
ImpactArbitrary File Read
Exploit Statuspoc
KEV StatusNo

MITRE ATT&CK Mapping

T1083File and Directory Discovery
Discovery
T1005Data from Local System
Collection
CWE-22
Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

The application uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize security-sensitive elements such as directory traversal sequences.

Known Exploits & Detection

GitHub Security AdvisoryExploit methodology and context details provided in the security advisory.

References & Sources

  • [1]GitHub Security Advisory GHSA-vvp7-h4fj-m28w
  • [2]Fix Patch Commit f3f4bbe
  • [3]Pull Request #2524
  • [4]FileBrowser Quantum v1.4.3-beta Release
  • [5]National Vulnerability Database Entry
  • [6]CVE.org Authority Record

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•36 minutes ago•CVE-2026-108258
6.9

CVE-2026-108258: Path Traversal in Shiny for Python Bookmark Restoration

A path traversal vulnerability in Shiny for Python (posit-dev/py-shiny) versions 1.4.0 through 1.6.3 allows unauthenticated remote attackers to read arbitrary files and traverse directories via crafted _state_id_ query parameters.

Alon Barad
Alon Barad
0 views•4 min read
•about 2 hours ago•CVE-2026-108260
7.6

CVE-2026-108260: Stored Cross-Site Scripting (XSS) in @tinacms/web-components

A Stored Cross-Site Scripting vulnerability in @tinacms/web-components prior to version 0.2.1 allows low-privileged content authors to execute arbitrary JavaScript code in the context of website visitors via unsanitized URL attributes in custom Markdown rendering components.

Alon Barad
Alon Barad
1 views•5 min read
•about 3 hours ago•CVE-2026-108261
9.3

CVE-2026-108261: Admin Preview Cross-Origin Bypass and GraphQL Hijacking in TinaCMS

A critical origin validation flaw in TinaCMS admin preview allows unauthenticated attackers to bypass cross-origin postMessage checks and execute unauthorized GraphQL queries and mutations under an authenticated editor's context.

Alon Barad
Alon Barad
5 views•5 min read
•about 4 hours ago•CVE-2026-108259
8.2

CVE-2026-108259: Code Injection in @tinacms/cli via Unsanitized Git Branch Name Interpolation

@tinacms/cli prior to version 3.0.0 dynamically constructs client source files using string interpolation without properly sanitizing runtime configuration variables. An attacker with permissions to create a branch or pull request can inject arbitrary JavaScript statements via a crafted Git ref name, leading to execution during automated build processes.

Amit Schendel
Amit Schendel
8 views•5 min read
•about 5 hours ago•CVE-2026-107804
5.3

CVE-2026-107804: Client IP Resolution Flaw & Authentication Lockout in Nginx UI

Nginx UI versions 2.2.0 through 2.5.10 fail to properly configure Gin framework trusted proxies when deployed behind a reverse proxy. This causes all incoming HTTP requests to be attributed to the loopback IP (127.0.0.1), enabling IP allowlist bypass and global authentication lockouts.

Amit Schendel
Amit Schendel
6 views•5 min read
•about 6 hours ago•CVE-2026-107805
7.5

CVE-2026-107805: Unauthenticated Storage Exhaustion in Nginx UI Node Authentication

Nginx UI versions 2.5.0 through 2.5.10 contain an uncontrolled resource consumption vulnerability in the node authentication handler. Unauthenticated remote attackers can exhaust host disk storage and I/O resources by submitting large HTTP request bodies to node-signature endpoints prior to cryptographic signature validation.

Alon Barad
Alon Barad
4 views•6 min read