SeaweedFS: Filer JWT allowed_prefixes literal prefix match allows cross-tenant access to sibling paths
High8.1CVE-2026-72921 · Published Sep 2, 2026 · updated Sep 10, 2026
Affected versions
| Package | Affected | Fixed in |
|---|---|---|
| github.com/seaweedfs/seaweedfs Go | < 0.0.0-20260512171048-05ed5c9ae8a2 | 0.0.0-20260512171048-05ed5c9ae8a2 |
Details and references
### Impact When a filer JWT restricts a token to a set of path prefixes via `allowed_prefixes`, the authorization check used a literal byte-prefix match (`strings.HasPrefix`). A token scoped to `/tenant1` therefore also authorized requests to sibling paths such as `/tenant1234`, `/tenant1-old`, and `/tenant1backup`. In a multi-tenant deployment this lets the holder of one tenant's token access another tenant's data. Because `allowed_prefixes` gates both read and write tokens, the impact covers cross-tenant reads and writes. A valid scoped token is required, so this is an authorization bypass rather than a fully unauthenticated flaw. ### Affected component - `weed/server/filer_server_handlers.go` (JWT `allowed_prefixes` authorization check) ### Patches Fixed in **4.24**. The check now matches on `/`-separated path components after `path.Clean` normalisation, so `/tenant1` authorizes only `/tenant1` and its descendants , not `/tenant1234` or other sibling paths. ### Workarounds Where feasible, choose prefix names that are not string-prefixes of one another (e.g. keep a trailing separator convention). Upgrade to 4.24. ### References - Reported by Kadir Arslan (https://github.com/KadirArslan)
- CVSS 3.1
- CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
- Severity from
- GitHub (reviewed advisory)
- Weakness
- CWE-863
- Also known as
- BIT-seaweedfs-2026-72921, CVE-2026-72921, GO-2026-6361
- github.com/seaweedfs/seaweedfs/security/advisories/GHSA-gv5w-hfx8-8cwq
- nvd.nist.gov/vuln/detail/CVE-2026-72921
- github.com/seaweedfs/seaweedfs/pull/9439
- github.com/seaweedfs/seaweedfs/commit/05ed5c9ae8a2a45101b52b61d02f170d20d587ff
- github.com/seaweedfs/seaweedfs
- github.com/seaweedfs/seaweedfs/releases/tag/4.24
More seaweedfs advisories
All| Date | Advisory | Severity | Fixed in |
|---|---|---|---|
| Sep 2 | SeaweedFS: Unauthenticated filer IAM gRPC service grants S3 administrative control CVE-2026-72920Critical9.8fixed in 0.0.0-20260512171108-5e8f99f40a8a | Critical9.8 | 0.0.0-20260512171108-5e8f99f40a8a |
| Aug 28 | SeaweedFS: Path traversal in the S3 gateway X-Amz-Copy-Source header allows cross-bucket object read CVE-2026-55874High7.7fixed in 0.0.0-20260612000715-b44cf51fe931 | High7.7 | 0.0.0-20260612000715-b44cf51fe931 |
| Aug 28 | SeaweedFS: Improper authorization in the S3Tables / Iceberg REST management API lets a low-privileged S3 user enumerate administrator-owned table buckets CVE-2026-55873Medium4.3fixed in 0.0.0-20260614205536-b13463880c1f | Medium4.3 | 0.0.0-20260614205536-b13463880c1f |
| Aug 12 | SeaweedFS: Path traversal in the S3 and Iceberg REST gateways allows cross-bucket access CVE-2026-54917Highfixed in 0.0.0-20260526080459-dd1b4287899e | High | 0.0.0-20260526080459-dd1b4287899e |
| Aug 11 | SeaweedFS: Unauthenticated SSRF with response read-back via VolumeServer.FetchAndWriteNeedle CVE-2026-73080Critical9.3fixed in 0.0.0-20260512171120-69da20bdaec9 | Critical9.3 | 0.0.0-20260512171120-69da20bdaec9 |
| May 162025 | SeaweedFS Vulnerable to SQL Injection CVE-2024-40120Medium6.5fixed in 0.0.0-20240625155419-9ac102336200 | Medium6.5 | 0.0.0-20240625155419-9ac102336200 |