<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://db.gcve.eu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Tue, 27 Oct 2026 23:17:51 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-116682</title>
      <link>https://db.gcve.eu/vuln/fkie_cve-2026-116682</link>
      <description>&lt;p&gt;FileBrowser Quantum is a free, self-hosted, web-based file manager. Prior to 1.5.2-stable and 2.0.1-beta, file read handling in backend/pkg/indexing/indexingFiles.go resolves symbolic links through GetRealPath without confirming that the resolved target remains inside the source root and the user&amp;#39;s authorized scope. Download, preview, media, OnlyOffice, and public-share read flows that enable FollowSymlinks can therefore serve an out-of-scope target through a reachable in-scope symlink. An authenticated user with download access can read server-accessible files outside the assigned scope, and a holder of a public share link can do the same without an account when the shared directory exposes such a symlink. This issue is fixed in 1.5.2-stable and 2.0.1-beta.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;FileBrowser Quantum is a free, self-hosted, web-based file manager. Prior to 1.5.2-stable and 2.0.1-beta, file read handling in backend/pkg/indexing/indexingFiles.go resolves symbolic links through GetRealPath without confirming that the resolved target remains inside the source root and the user&amp;#39;s authorized scope. Download, preview, media, OnlyOffice, and public-share read flows that enable FollowSymlinks can therefore serve an out-of-scope target through a reachable in-scope symlink. An authenticated user with download access can read server-accessible files outside the assigned scope, and a holder of a public share link can do the same without an account when the shared directory exposes such a symlink. This issue is fixed in 1.5.2-stable and 2.0.1-beta.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/fkie_cve-2026-116682</guid>
    </item>
    <item>
      <title>GHSA-mgqf-5mf5-prfj — FileBrowser: Symlink following escapes user scope allowing arbitrary file read outside the served directory</title>
      <link>https://db.gcve.eu/vuln/ghsa-mgqf-5mf5-prfj</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/gtsteffaniak/filebrowser/backend&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;File read paths resolve symbolic links with `filepath.EvalSymlinks` and then operate on the resolved target without re-checking that the target still lies inside the user&amp;#39;s source/scope.&lt;/p&gt;
&lt;p&gt;A symlink located inside a user&amp;#39;s accessible directory that points outside the scope (for example to `/etc/passwd`, another tenant&amp;#39;s directory, SSH keys, or container secrets) is followed transparently, and its contents are served through the normal download, preview, media, and OnlyOffice endpoints. Any authenticated user with download access can read files anywhere the server process can, whenever such a symlink is reachable in their scope.&lt;/p&gt;
&lt;p&gt;The same symlink-following read path is used by the public share endpoints, which are authorized only by a share hash and not by any account, so when a public share exposes a directory that contains such a symlink, an unauthenticated attacker holding only the share link reads files outside the scope with no credential.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;**1. Symlink resolution performs no containment check (`indexing/iteminfo/utils.go:110-119`)**&lt;/p&gt;
&lt;p&gt;```go
func ResolveSymlinks(path string) (string, bool, error) {
    resolvedPath, err := filepath.EvalSymlinks(path)   // follows the link to its real target
    if err != nil {
        return path, false, fmt.Errorf(&amp;#34;could not resolve symlinks for %s: %v&amp;#34;, path, err)
    }
    info, err := os.Lstat(resolvedPath)
    // ...
    return resolvedPath, IsDirectory(info), nil         // returned with no scope validation…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/gtsteffaniak/filebrowser/backend&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;File read paths resolve symbolic links with `filepath.EvalSymlinks` and then operate on the resolved target without re-checking that the target still lies inside the user&amp;#39;s source/scope.&lt;/p&gt;
&lt;p&gt;A symlink located inside a user&amp;#39;s accessible directory that points outside the scope (for example to `/etc/passwd`, another tenant&amp;#39;s directory, SSH keys, or container secrets) is followed transparently, and its contents are served through the normal download, preview, media, and OnlyOffice endpoints. Any authenticated user with download access can read files anywhere the server process can, whenever such a symlink is reachable in their scope.&lt;/p&gt;
&lt;p&gt;The same symlink-following read path is used by the public share endpoints, which are authorized only by a share hash and not by any account, so when a public share exposes a directory that contains such a symlink, an unauthenticated attacker holding only the share link reads files outside the scope with no credential.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;**1. Symlink resolution performs no containment check (`indexing/iteminfo/utils.go:110-119`)**&lt;/p&gt;
&lt;p&gt;```go
func ResolveSymlinks(path string) (string, bool, error) {
    resolvedPath, err := filepath.EvalSymlinks(path)   // follows the link to its real target
    if err != nil {
        return path, false, fmt.Errorf(&amp;#34;could not resolve symlinks for %s: %v&amp;#34;, path, err)
    }
    info, err := os.Lstat(resolvedPath)
    // ...
    return resolvedPath, IsDirectory(info), nil         // returned with no scope validation…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-mgqf-5mf5-prfj</guid>
    </item>
  </channel>
</rss>
