Loading...
Skip to main content

CVE-2026-54096 — Vulnerability in...

HIGH

File Browser: Improper Access Control Occurs via Pre-Created Public Share for a Non-existent Path

Published June 12, 2026Updated July 21, 2026Source: osv

Summary

### Summary This is similar vulnrability of **`CVE-2026-0035`**, which was fixed in Android `MediaProvider` with **high** severity. In the original Java issue, `MediaStore.createWriteRequest()` accepted attacker-controlled URIs and created a future grant even when the referenced media item did not exist yet. The Android fix added an existence check before creating the request. `filebrowser/filebrowser` has the analogous issue in Go. `POST /api/share/<path>` accepts an authenticated request for an arbitrary path and stores a public share record without checking whether the target file currently exists. Later, when a file is created at that same path, the previously created public share immediately becomes valid and exposes the new file through `GET /api/public/dl/<hash>`. ### Details The vulnerable create path is: - `http/share.go` - `sharePostHandler()` - route: `POST /api/share/<path>` `sharePostHandler()` only checks that the caller is authenticated and has share/download permissions. It then builds a `share.Link` directly from `r.URL.Path` and saves it: ```go s = &share.Link{ Path: r.URL.Path, Hash: str, Expire: expire, UserID: d.user.ID, PasswordHash: string(hash), Token: token, } if err := d.store.Share.Save(s); err != nil { return http.StatusInternalServerError, err } ``` There is no `Stat`, `Exists`, or equivalent check before the public share record is committed. The vulnerable consume path is: - `http/public.go` - `withHashFile()` - routes: `GET /api/public/share/<hash>`, `GET /api/public/dl/<hash>` Each public request loads the saved share by hash and then resolves `link.Path` against the owner's current filesystem state: ```go file, err := files.NewFileInfo(&files.FileOptions{ Fs: d.user.Fs, Path: link.Path, ... }) ``` This means the share is not bound to an object that existed at creation time. It is bound only to a path string, so a share created for a nonexistent path becomes valid later as soon as that path is populated. ### PoC The PoC below starts from external HTTP input only. 1. Authenticate to File Browser. 2. Confirm `/future4.txt` does not exist. 3. Create a public share for `/future4.txt` anyway. 4. Confirm the public share returns `404`. 5. Upload a file to `/future4.txt`. 6. Reuse the same public share URL and read the file content. Reproduction commands: ```bash TOKEN=$(curl -s -X POST http://127.0.0.1:8091/api/login \ -H 'Content-Type: application/json' \ -d '{"username":"admin","password":"Password123!"}') curl -i -X POST http://127.0.0.1:8091/api/share/future4.txt \ -H "X-Auth: $TOKEN" \ -H 'Content-Type: application/json' \ -d '{}' curl -i http://127.0.0.1:8091/api/public/dl/JVeEQlLO curl -i -X POST http://127.0.0.1:8091/api/resources/future4.txt \ -H "X-Auth: $TOKEN" \ --data-binary 'fourth-secret' curl -i http://127.0.0.1:8091/api/public/dl/JVeEQlLO ``` ### Impact An authenticated user can create a public share for a path before the file exists, and that same share later exposes whatever file is created at that path. This can unintentionally publish future sensitive files and bypass the expected invariant that a share grants access only to an existing object reviewed at creation time. ### Reference Original CVE: https://nvd.nist.gov/vuln/detail/CVE-2026-0035

Advisory Timeline

  • First published June 12, 2026 (122 days ago).
  • Last revised July 21, 2026 — 39 days after initial publication.

Remediation

Upgrade to the fixed version using your package manager.

Go
Update github.com/filebrowser/filebrowser/v2 to 2.63.7 or later
go get github.com/filebrowser/filebrowser/v2@v2.63.7

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (2)

Affects 1 ecosystem: go (2).

PackageEcosystemAffectedFixed In
github.com/filebrowser/filebrowser/v2
go
All versions2.63.7
github.com/filebrowser/filebrowser
go
All versionsRange-based data available

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 8.4 score means for each attack dimension.

Attack Vector
Local
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Frequently Asked Questions

What is CVE-2026-54096?
File Browser: Improper Access Control Occurs via Pre-Created Public Share for a Non-existent Path This vulnerability has been assigned a severity rating of HIGH (CVSS score: 8.4/10).
How do I check if my project is affected by CVE-2026-54096?
CVE-2026-54096 affects github.com/filebrowser/filebrowser/v2 and github.com/filebrowser/filebrowser. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-54096 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
8.4

High exploitability or significant impact. Prioritize remediation within days.

Also Known As

GHSA-3q2p-72cj-682c
GO-2026-5096

Related CVEs

  • CVE-2026-32760
    CRITICAL

    File Browser Signup Grants Admin When Default Permissions Include Admin

  • CVE-2026-29188
    CRITICAL

    File Browser's TUS Delete Endpoint Bypasses Delete Permission Check

  • CVE-2026-54088
    CRITICAL

    File Browser: Command Injection via Authentication Hook Shell Substitution (Pre-Authentication RCE)

  • CVE-2026-54089
    CRITICAL

    File Browser: Authentication Bypass via Proxy Auth Header Forgery

  • CVE-2026-54097
    HIGH

    File Browser: Cross-user unauthorized share-link deletion via unbounded prefix match in DeleteWithPathPrefix

  • CVE-2025-64523
    HIGH

    File Browser is Vulnerable to Insecure Direct Object Reference (IDOR) in Share Deletion Function

  • CVE-2026-54090
    HIGH

    File Browser has a Command Execution Allowlist Bypass via Shell Metacharacter Injection

  • CVE-2026-55667
    HIGH

    File Browser: Out-of-scope file deletion by a Create-only scoped user via symlink-following RemoveAll in upload failure-cleanup

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies