GHSA-mmpx-jh39-wrv6 FileBrowser Vulnerable to Stored XSS via SVG File in Public Share (Missing CSP Header)

Not scored Published

Attackers can execute arbitrary JavaScript in victims' browsers via malicious SVG files shared publicly, potentially stealing sessions.

Exploited in the wild
Not known
Login needed
Any signed-in user
Attackable
Over the internet
Victim action needed
A user has to click or open something
Fix
Available

What is GHSA-mmpx-jh39-wrv6?

GHSA-mmpx-jh39-wrv6 is a cross-site scripting vulnerability in github.com/gtsteffaniak/filebrowser, published on 7 May 2026. Any signed-in user can exploit it over the network, and only if a user opens a file or follows a link.

Official description

Summary

FileBrowser Quantum serves inline SVG files without a Content-Security-Policy header, allowing embedded JavaScript in SVG files to execute when accessed via public share links.

Verified on v1.3.0-stable.

Affected product

  • Product: FileBrowser Quantum (gtsteffaniak/filebrowser)
  • Verified version: v1.3.0-stable
  • Docker image: gtstef/filebrowser:latest
  • Affected endpoint: GET /public/api/resources/download?hash=HASH&inline=true
  • CWE: CWE-79 — Cross-site Scripting (Stored)

Impact

  • Stored XSS — Malicious SVG persists and executes for every visitor to the share link
  • No authentication required to trigger — Public share links are accessible to anyone
  • Session hijacking — If authenticated users click the link, their session can be stolen
  • Phishing — Attacker can redirect or overlay fake login forms

Reproduction

  1. Login as any user with upload permission
  2. Upload SVG file:
    <svg xmlns="http://www.w3.org/2000/svg">
      <script>alert(document.domain)</script>
    </svg>
    
  3. Create public share for the file
  4. Access the share link with ?inline=true
  5. JavaScript executes in browser

Root cause

The inline download endpoint returns SVG files with:

Content-Type: image/svg+xml
Content-Disposition: inline; filename="xss.svg"
X-Content-Type-Options: nosniff

But no CSP header to block script execution. The upstream project (filebrowser/filebrowser) mitigates this with:

Content-Security-Policy: script-src 'none'

Suggested fix

Add CSP header on inline file downloads:

w.Header().Set("Content-Security-Policy", "script-src 'none'")

This matches the upstream filebrowser/filebrowser implementation.

Which versions are affected by GHSA-mmpx-jh39-wrv6?

3 open source packages ship an affected version, including github.com/gtsteffaniak/filebrowser.

PackageAffectedFixed in
github.com/gtsteffaniak/filebrowser GoAll versions0.0.0-20260501184955-6bfc3974192e
github.com/gtsteffaniak/filebrowser GoAll versions0.0.0-20260501184955-6bfc3974192e
github.com/gtsteffaniak/filebrowser GoAll versions0.0.0-20260501184955-6bfc3974192e

How do I fix GHSA-mmpx-jh39-wrv6?

Upgrade github.com/gtsteffaniak/filebrowser to 0.0.0-20260501184955-6bfc3974192e or later.

Escape output for the context it lands in and set a strict Content Security Policy. Upgrading the affected component is the real fix. More about Cross-site scripting.

Is GHSA-mmpx-jh39-wrv6 being exploited?

There is no known exploitation of GHSA-mmpx-jh39-wrv6 in the wild and no public exploit code.

Sources

Also known as GO-2026-5511.

Is GHSA-mmpx-jh39-wrv6 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free