CVE-2026-72921: SeaweedFS Filer JWT authorization bypass in allowed_prefixes

CVE-2026-72921 · Severity: high · CVSS 8.1 · Published 2026-09-02

SeaweedFS is a distributed storage system used to store and manage files across multiple servers in multi-tenant environments. A flaw in its JWT-based path authorization allows a token scoped to one tenant path (e.g., `/tenant1`) to also access sibling paths with similar names (e.g., `/tenant1234`, `/tenant1-old`). This enables unauthorized cross-tenant data access for both reading and writing, affecting the confidentiality and integrity of isolated tenant data.

Technologies: github.com/seaweedfs/seaweedfs (Go). Vendors: Go.

Quick answers

Is CVE-2026-72921 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-72921 being exploited in the wild.
How severe is CVE-2026-72921?
High severity, with a CVSS score of 8.1, published 2 September 2026.
Which products and versions are affected?
github.com/seaweedfs/seaweedfs (Go) < 0.0.0-20260512171048-05ed5c9ae8a2, SEMVER:introduced=0,fixed=0.0.0-20260512171048-05ed5c9ae8a2.
Is there a fix for CVE-2026-72921?
Yes. github.com/seaweedfs/seaweedfs (Go): upgrade to 0.0.0-20260512171048-05ed5c9ae8a2 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-72921 attacked?
It is attacked over the network, in a hosted service.
Am I affected by CVE-2026-72921?
Check whether you run github.com/seaweedfs/seaweedfs (Go) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • github.com/seaweedfs/seaweedfs (Go): upgrade to 0.0.0-20260512171048-05ed5c9ae8a2 or later
    go get github.com/seaweedfs/seaweedfs@v0.0.0-20260512171048-05ed5c9ae8a2

Technical details

The vulnerability is a path traversal / authorization bypass in SeaweedFS Filer's JWT validation logic. The affected component `weed/server/filer_server_handlers.go` uses `strings.HasPrefix()` for a literal byte-prefix match when validating tokens against the `allowed_prefixes` configuration. This means a token authorized for `/tenant1` will incorrectly match paths like `/tenant1234`, `/tenant1-old`, and `/tenant1backup`. The attack requires a valid, legitimately-issued JWT scoped to a tenant; an attacker cannot forge tokens. Once in possession of a scoped token, the holder can read and write to unintended tenant directories. The fix, available in version 4.24 and later, normalizes paths with `path.Clean()` and matches on `/`-separated path components, ensuring `/tenant1` only authorizes `/tenant1` and its true descendants.

Affected products

  • SeaweedFS SeaweedFS < 4.24

Identifiers

  • CVE-2026-72921
  • GHSA-gv5w-hfx8-8cwq
  • GO-2026-6361

Timeline

  • 2026-07-08: disclosed
  • 2026-09-02: advisory: GitHub Advisory published
  • 2026-04-12: patched: Fixed in version 4.24

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.