CVE-2026-54097: File Browser Cross-user Unauthorized Share-link Deletion Vulnerability

HIGH
Advisory Identifier: GHSA-5ww9-jg6q-38r7
CWE-639
Published
Advisory Summary

CVE-2026-54097 is a HIGH cross-user unauthorized share-link deletion vulnerability (CWE-639: Authorization Bypass Through User-Controlled Key) affecting File Browser libraries in the Go ecosystem. The issue involves cross-user unauthorized share-link deletion via unbounded prefix match in deletewithpathprefix. Remediation is available by upgrading affected packages to version 2.63.6.

CVE-2026-54097 at a Glance

CVE Identifier CVE-2026-54097
GHSA Identifier GHSA-5ww9-jg6q-38r7
Severity HIGH
CVSS v3.1 Base Score N/A
CWE Classification CWE-639: Authorization Bypass Through User-Controlled Key
Affected Product File Browser
Package Ecosystem Go
Published Date
Last Updated

How to Fix CVE-2026-54097

To remediate this vulnerability, upgrade all affected File Browser dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

github.com/filebrowser/filebrowser fixed: Latest secure release
Upgrade github.com/filebrowser/filebrowser to Latest secure release
github.com/filebrowser/filebrowser/v2 fixed: 2.63.6
Upgrade github.com/filebrowser/filebrowser/v2 to 2.63.6
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

inspect dependencies for github.com/filebrowser/filebrowser

How to Check if You Are Affected

To determine whether your application is affected by CVE-2026-54097, inspect your project dependencies for File Browser:

inspect dependencies for github.com/filebrowser/filebrowser

Analyze the terminal output to locate any version of File Browser in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 2.63.6), your application is affected.

Note: Verify declared build manifests and deployed runtime container environments.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-639: Authorization Bypass Through User-Controlled Key, where the system's authorization functionality does not prevent one user from gaining access to another user's data or record by modifying the key value identifying the data. In File Browser, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

### Summary A low-privileged authenticated user of filebrowser (with `create` + `delete` permissions in their own isolated scope) can silently destroy share-link records belonging to any other user — including the administrator — by performing a legitimate DELETE on a file in their own directory whose logical path happens to be a byte-prefix of another user's stored `share.Link.Path`. The file contents of the victim are not exposed, but the victim's share links are irrevocably wiped. ### Details `resourceDeleteHandler` in `http/resource.go` cleans up any share records that reference a deleted file by calling: ```go // http/resource.go err = d.store.Share.DeleteWithPathPrefix(file.Path) ``` `file.Path` here is the *logical* path from the URL of the deleting user's request (e.g. `/a`), not the absolute filesystem path. It is passed as-is to the bolt backend: ```go // storage/bolt/share.go func (s shareBackend) DeleteWithPathPrefix(pathPrefix string) error { var links []share.Link if err := s.db.Prefix("Path", pathPrefix, &links); err != nil { return err } for _, link := range links { err = errors.Join(err, s.db.DeleteStruct(&share.Link{Hash: link.Hash})) } return err } ``` **Why the design contradicts this behavior.** `share.Link` carries a `UserID` field and the application elsewhere treats shares as per-user owned resources. `shareDeleteHandler` explicitly enforces `link.UserID != d.user.ID && !d.user.Perm.Admin → 403`. The file-deletion side-effect path is the only location that bypasses this rule. ### Impact - Integrity: unauthorized deletion of share-link metadata belonging to arbitrary users, including administrators. - Availability: effective denial-of-service of the share-link feature — a cooperating (or malicious) low-priv user can wipe the bulk of existing share links by iterating a short set of one- and two-character prefixes.

CVE-2026-54097 Affected File Browser Versions

2 component(s)
Fixed Versions:
2.63.6
Product / Package Ecosystem Affected Versions Fixed Version
github.com/filebrowser/filebrowser
Go
≤ 1.11.0
github.com/filebrowser/filebrowser/v2
Go
< 2.63.6
2.63.6

References

Frequently Asked Questions

What is CVE-2026-54097?
CVE-2026-54097 is a security vulnerability in File Browser involving Cross-user unauthorized share-link deletion via unbounded prefix match in DeleteWithPathPrefix under CWE-639: Authorization Bypass Through User-Controlled Key.
Which File Browser versions are affected?
Affected versions include releases prior to 2.63.6 across affected packages: github.com/filebrowser/filebrowser, github.com/filebrowser/filebrowser/v2.
What version fixes CVE-2026-54097?
Upgrading to 2.63.6 (or the latest patched release for your respective branch) resolves the vulnerability.
Is github.com/filebrowser/filebrowser affected?
Yes, github.com/filebrowser/filebrowser is affected in releases prior to Latest secure release. Upgrade your dependency to Latest secure release or later.
Is github.com/filebrowser/filebrowser/v2 affected?
Yes, github.com/filebrowser/filebrowser/v2 is affected in releases prior to 2.63.6. Upgrade your dependency to 2.63.6 or later.
What CWE is associated with CVE-2026-54097?
CVE-2026-54097 is classified under CWE-639: Authorization Bypass Through User-Controlled Key (The system's authorization functionality does not prevent one user from gaining access to another user's data or record by modifying the key value identifying the data.).
How can I check Go dependencies for CVE-2026-54097?
Run the dependency tree command: 'inspect dependencies for github.com/filebrowser/filebrowser'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-5ww9-jg6q-38r7",
  "modified" : "2026-07-21T14:44:53Z",
  "published" : "2026-06-12T21:00:55Z",
  "aliases" : [ "CVE-2026-54097" ],
  "summary" : "File Browser: Cross-user unauthorized share-link deletion via unbounded prefix match in DeleteWithPathPrefix",
  "details" : "### Summary\nA low-privileged authenticated user of filebrowser (with `create` + `delete` permissions in their own isolated scope) can silently destroy share-link records belonging to any other user — including the administrator — by performing a legitimate DELETE on a file in their own directory whose logical path happens to be a byte-prefix of another user's stored `share.Link.Path`. The file contents of the victim are not exposed, but the victim's share links are irrevocably wiped.\n\n### Details\n`resourceDeleteHandler` in `http/resource.go` cleans up any share records that reference a deleted file by calling:\n\n```go\n// http/resource.go\nerr = d.store.Share.DeleteWithPathPrefix(file.Path)\n```\n\n`file.Path` here is the *logical* path from the URL of the deleting user's request (e.g. `/a`), not the absolute filesystem path. It is passed as-is to the bolt backend:\n\n```go\n// storage/bolt/share.go\nfunc (s shareBackend) DeleteWithPathPrefix(pathPrefix string) error {\n    var links []share.Link\n    if err := s.db.Prefix(\"Path\", pathPrefix, &links); err != nil {\n        return err\n    }\n    for _, link := range links {\n        err = errors.Join(err, s.db.DeleteStruct(&share.Link{Hash: link.Hash}))\n    }\n    return err\n}\n```\n**Why the design contradicts this behavior.** `share.Link` carries a `UserID` field and the application elsewhere treats shares as per-user owned resources. `shareDeleteHandler` explicitly enforces `link.UserID != d.user.ID && !d.user.Perm.Admin → 403`. The file-deletion side-effect path is the only location that bypasses this rule.\n\n\n\n### Impact\n- Integrity: unauthorized deletion of share-link metadata belonging to arbitrary users, including administrators.\n- Availability: effective denial-of-service of the share-link feature — a cooperating (or malicious) low-priv user can wipe the bulk of existing share links by iterating a short set of one- and two-character prefixes.",
  "severity" : [ {
    "type" : "CVSS_V4",
    "score" : "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "Go",
      "name" : "github.com/filebrowser/filebrowser"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "last_affected" : "1.11.0"
      } ]
    } ]
  }, {
    "package" : {
      "ecosystem" : "Go",
      "name" : "github.com/filebrowser/filebrowser/v2"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "fixed" : "2.63.6"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 2.63.5"
    }
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/filebrowser/filebrowser/security/advisories/GHSA-5ww9-jg6q-38r7"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-54097"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/filebrowser/filebrowser/commit/0231b7ebdfbe77a6c54027d30c4856c3fd81ee4d"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/filebrowser/filebrowser"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/filebrowser/filebrowser/releases/tag/v2.63.6"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-639" ],
    "severity" : "HIGH",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-06-12T21:00:55Z",
    "nvd_published_at" : "2026-06-25T19:16:41Z"
  }
}