CVE-2026-35605
highpriority · track · 30EPSS 0.004 · 33 %ileEUUSEPSS · scored 2026-10-27
File Browser is a file managing interface for uploading, deleting, previewing, renaming, and editing files within a specified directory. Prior to 2.63.1, the Matches() function in rules/rules.go uses strings.HasPrefix() without a trailing directory separator when matching paths against access rules. A rule for /uploads also matches /uploads_backup/, granting or denying access to unintended directories. This vulnerability is fixed in 2.63.1.
cvss
Technical severity, 0–10. One row per scoring source.
base score 0–10 · higher = more severe · hover a vector to decode⚠ sources disagree · low–high · 1.7–7.5
ssvc
A stakeholder decision — act, attend, or track — from exploitation and impact.
weaknesses
The CWE weakness classes this flaw belongs to.
affected products (4)
Products and version ranges known to be affected.
- Go github.com/filebrowser/filebrowser/v2< 2.63.1osvUSpkg:golang/github.com/filebrowser/filebrowser/v2
advisories (2)
Vendor and ecosystem advisories describing this.
- GHSA-5q48-q4fm-g3m6File Browser has an access rule bypass via HasPrefix without trailing separator in path matching2026-04-08ghsa · osvUS
Hi, The `Matches()` function in `rules/rules.go` uses `strings.HasPrefix()` without a trailing directory separator when matching paths against access rules. A rule for `/uploads` also matches `/uploads_backup/`, granting or denying access to unintended directories. Verified against v2.62.2 (commit 860c19d). ## Details At `rules/rules.go:29-35`: func (r *Rule) Matches(path string) bool { if r.Regex { return r.Regexp.MatchString(path) } return strings.HasPrefix(path, r.Path) } When a rule has `Path: "/uploads"`, any path starting with `/uploads` matches, including `/uploads_backup/secret.txt`. The regex variant at line 31 uses proper matching, but the non-regex path uses a prefix check without ensuring the match ends at a directory boundary. The `Check()` function at `http/data.go:29-48` iterates all rules with last-match-wins semantics. No secondary validation exists beyond this prefix check. ## PoC Admin configures: allow rule `Path: "/shared"` for a restricted user. Filesystem contains: - `/shared/` (intended to be accessible) - `/shared_private/` (intended to be restricted) User requests `/shared_private/secret.txt`: - `strings.HasPrefix("/shared_private/secret.txt", "/shared")` returns true - Allow rule applies - Access granted to the unintended directory ## Impact Authenticated users can access files in sibling directories that share a common prefix with an allowed directory, bypassing the admin's intended access configuration. ## Prior art Prior advisories GHSA-4mh3-h929-w968 (path-based access control bypass) and GHSA-9f3r-2vgw-m8xp (path traversal in copy/rename) addressed related access control issues. This HasPrefix prefix-collision is a distinct, unreported variant. ## Suggested Fix func (r *Rule) Matches(path string) bool { if r.Regex { return r.Regexp.MatchString(path) } prefix := r.Path if prefix != "/" && !strings.HasSuffix(prefix, "/") { prefix += "/" } return path == r.Path || strings.HasPrefix(path, prefix) } Koda Reef --- **Update:** Fix submitted as PR #5889.
- GO-2026-5150File Browser has an access rule bypass via HasPrefix without trailing separator in path matching in github.com/filebrowser/filebrowser2026-06-25vendor · osvUS
File Browser has an access rule bypass via HasPrefix without trailing separator in path matching in github.com/filebrowser/filebrowser
also known as (5)
Other names and identifiers for this entity.
sources
Which sources assert this record, and when.
references (7)
External citations — patches, advisories, analysis.
- https://github.com/filebrowser/filebrowser/pull/5889cnnvd
- https://github.com/filebrowser/filebrowser/releasesPatchcnnvd
- https://github.com/filebrowser/filebrowser/security/advisories/GHSA-5q48-q4fm-g3m6cnnvd
- https://github.com/filebrowser/filebrowser/pull/5889enisa_euvd
- https://github.com/filebrowser/filebrowser/security/advisories/GHSA-5q48-q4fm-g3m6enisa_euvd
- https://github.com/filebrowser/filebrowser/pull/5889Patchnvd
- https://github.com/filebrowser/filebrowser/security/advisories/GHSA-5q48-q4fm-g3m6ExploitVendor Advisorynvd
Attackers weaponise vulnerabilities like this against internet-exposed services. See what is exposed on your perimeter with a free passive scan.
Free scan