{"schemaVersion":3,"id":"CVE-2026-48777","aliases":["GHSA-qqqm-5547-774x","GO-2026-5591"],"status":"published","duplicateOf":null,"title":"FileBrowser Quantum: Path Traversal in public share PATCH allows file ops outside shared directory","description":"FileBrowser Quantum is a free, self-hosted, web-based file manager. Versions prior to 1.3.2-stable, 1.4.0-beta and 1.4.1-beta are vulnerable to Path Traversal through the publicPatchHandler in backend/http/public.go which joins user-controlled fromPath and toPath body fields with the trusted d.share.Path BEFORE the downstream sanitizer runs. Because filepath.Join collapses .. segments during the join, the sanitizer in resourcePatchHandler never sees the traversal and the move/copy/rename operates on a path outside the shared directory. The same root-cause pattern was patched for the bulk DELETE endpoint as CVE-2026-44542 (GHSA-fwj3-42wh-8673), but the PATCH handler with the identical pattern was not updated. A public share link with AllowModify=true is sufficient to exploit this. Anyone holding such a link can move, copy, or rename arbitrary files within the share owner's source root. This issue has been fixed in versions 1.3.3-stable and 1.4.2-beta.","dates":{"published":"2026-06-16T18:40:06.121Z","modified":"2026-06-17T14:45:51.660Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":9.3,"severity":"critical","version":"4.0","versionLabel":"v4.0","source":"CVE.org","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","computed":false,"selection":"backend-summary"},"metrics":[{"version":"4.0","versionLabel":"v4.0","source":"CVE.org","score":9.3,"severity":"critical","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","exploitability":null,"impact":null,"computed":false},{"version":"4.0","versionLabel":"v4.0","source":"OSV · Go","score":9.3,"severity":"critical","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","exploitability":null,"impact":null,"computed":true},{"version":"4.0","versionLabel":"v4.0","source":"NVD","score":9.3,"severity":"critical","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.00522,"percentile":0.43482,"severity":"low","asOf":"2026-10-22T00:00:00.000Z","change":{"pp":0.07599999999999994,"baselineDate":"2026-09-22T00:00:00.000Z","baselineScore":0.00446},"history":[{"date":"2026-09-14T00:00:00.000Z","score":0.00446,"percentile":null},{"date":"2026-09-15T00:00:00.000Z","score":0.00446,"percentile":null},{"date":"2026-09-16T00:00:00.000Z","score":0.00446,"percentile":null},{"date":"2026-09-17T00:00:00.000Z","score":0.00446,"percentile":null},{"date":"2026-09-18T00:00:00.000Z","score":0.00446,"percentile":null},{"date":"2026-09-19T00:00:00.000Z","score":0.00446,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.00446,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.00446,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.00446,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00446,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-22T00:00:00.000Z","score":0.00522,"percentile":0.43482}],"last30":[{"date":"2026-09-22T00:00:00.000Z","score":0.00446,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00446,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.00522,"percentile":null},{"date":"2026-10-22T00:00:00.000Z","score":0.00522,"percentile":0.43482}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[],"exploitCount":0,"weaknesses":[{"id":"CWE-22","name":"Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')","description":"The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.","type":"weakness","status":"Stable","abstraction":"Base","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/22.html"}],"affected":[{"vendor":"github.com/gtsteffaniak/filebrowser","product":"backend","name":"github.com/gtsteffaniak/filebrowser/backend","label":"backend","ecosystem":"Go","cpePart":null,"purl":"pkg:golang/github.com/gtsteffaniak/filebrowser/backend","purlType":"golang","versions":[{"text":"< 0.0.0-20260518193514-28e9b81e438e","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 0.0.0-20260518193514-28e9b81e438e","eol":null,"hubHref":null},{"vendor":"gtsteffaniak","product":"filebrowser","name":"filebrowser","label":"filebrowser","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 1.3.3-stable","noFixRecorded":false,"fixedIn":null},{"text":"≥ 1.4.0-beta, < 1.4.2-beta","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 1.3.3-stable | ≥ 1.4.0-beta, < 1.4.2-beta","eol":null,"hubHref":"/vendor/gtsteffaniak/filebrowser"}],"affectedCount":2,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/gtsteffaniak/filebrowser/security/advisories/GHSA-qqqm-5547-774x","label":"github.com/gtsteffaniak/filebrowser/security/advisories/GHSA-qqqm-5547-774x","hostname":"github.com","tags":["X Refsource CONFIRM","WEB","Advisory"]},{"url":"https://github.com/gtsteffaniak/filebrowser/releases/tag/v1.3.3-stable","label":"github.com/gtsteffaniak/filebrowser/releases/tag/v1.3.3-stable","hostname":"github.com","tags":["X Refsource MISC"]},{"url":"https://github.com/gtsteffaniak/filebrowser/releases/tag/v1.4.2-beta","label":"github.com/gtsteffaniak/filebrowser/releases/tag/v1.4.2-beta","hostname":"github.com","tags":["X Refsource MISC"]},{"url":"https://github.com/gtsteffaniak/filebrowser","label":"github.com/gtsteffaniak/filebrowser","hostname":"github.com","tags":["PACKAGE"]}],"lineage":{"upstream":[],"downstream":["OPENSUSE-SU-2026:21483-1"],"duplicates":[],"related":["OPENSUSE-SU-2026:21483-1"]},"timeline":[{"kind":"published","date":"2026-06-16T18:40:06.121Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-06-17T14:45:51.660Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":70,"level":"high","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-22T21:49:28.318Z","stale":false,"partial":false}}