CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-72921

CVE-2026-72921: Incorrect Authorization in SeaweedFS Filer JWT Prefix Match

Amit Schendel
Amit Schendel
Senior Security Researcher

Sep 3, 2026·6 min read·22 visits

Executive Summary (TL;DR)

SeaweedFS Filer prior to 4.24 uses raw prefix matching on raw path strings during JWT validation, allowing scoped tokens to authorize unauthorized access to sibling directories (e.g., /tenant1 matching /tenant1234).

SeaweedFS is a distributed storage system. Prior to version 4.24, the Filer JWT validation mechanism used a raw prefix match, allowing scoped tokens to access sibling directories sharing similar name prefixes.

Vulnerability Overview

SeaweedFS is a high-performance distributed storage system designed to store billions of files efficiently. Within its architecture, the Filer component provides a filesystem abstraction layer over the volume servers, supporting metadata storage and access control. To secure multi-tenant environments, the Filer uses JSON Web Tokens (JWT) to enforce directory-level access restrictions.

Prior to version 4.24, the SeaweedFS Filer implemented a path authorization mechanism that contained a significant logic flaw. When validating scoped tokens containing the allowed_prefixes claim, the server used a simple prefix comparison. This check relied on a raw string-matching function rather than a component-aware path evaluation.

This vulnerability, tracked as CVE-2026-72921, allows an attacker with a valid scoped JWT to access unauthorized directories sharing a common string prefix. For instance, a token authorized only for /tenant1 would also grant access to /tenant1234 or /tenant1backup. The issue has been assigned a Common Vulnerability Scoring System (CVSS) v3.1 base score of 8.1.

Root Cause Analysis

The underlying flaw resides within the Filer handler authorization logic inside weed/server/filer_server_handlers.go. When a request is received, the server extracts the JWT claims and iterates over the prefixes specified in claims.AllowedPrefixes. For each configured prefix, the server determines authorization by executing strings.HasPrefix(r.URL.Path, prefix).

The function strings.HasPrefix performs a literal byte-by-byte comparison from the start of the target string. Because this function has no awareness of path delimiters, it treats the path as an arbitrary sequence of characters. It fails to distinguish between a matching directory path component and a sibling path that merely shares a prefix sequence.

Consequently, any folder namespace that begins with the exact characters of an authorized prefix evaluates to true. If a system contains tenants named /tenant1 and /tenant10, the token for the former permits full access to the latter. Furthermore, the lack of path sanitization on input parameters increases the likelihood of inconsistent path resolution down the stack.

Code Analysis

The vulnerable implementation of the authorization check is shown below. This logic evaluates the HTTP request path against the scoped prefixes using raw string manipulation:

// Vulnerable implementation in weed/server/filer_server_handlers.go
if len(claims.AllowedPrefixes) > 0 {
    hasPrefix := false
    for _, prefix := range claims.AllowedPrefixes {
        // Raw string matching without boundary checks
        if strings.HasPrefix(r.URL.Path, prefix) {
            hasPrefix = true
            break
        }
    }
    // ...
}

The patch introduced in SeaweedFS version 4.24 resolves the issue by replacing the literal string check with a structured path segment analysis. The system now utilizes a dedicated helper function called pathHasComponentPrefix. This helper ensures that matches occur exclusively on complete path segment boundaries.

// Patched implementation utilizing path normalization and component checks
func pathHasComponentPrefix(reqPath, prefix string) bool {
    if prefix == "" {
        return false
    }
    // Normalise paths to resolve directory traversal and empty elements
    cleanedPath := path.Clean(reqPath)
    if cleanedPath == "." {
        cleanedPath = "/"
    }
    cleanedPrefix := path.Clean(prefix)
    if cleanedPrefix == "." {
        cleanedPrefix = "/"
    }
    if cleanedPrefix == "/" {
        return true
    }
    if cleanedPath == cleanedPrefix {
        return true
    }
    // Enforce segment boundaries by requiring a trailing slash
    return strings.HasPrefix(cleanedPath, cleanedPrefix+"/")
}

The helper function first normalizes both the request path and the prefix using Go's path.Clean library. This step removes redundant slashes and resolves relative segments like . and ... By appending a trailing slash / to the prefix during the comparison, the function restricts matches to exact folders or their immediate subdirectories.

Exploitation Methodology

An attacker requires a valid JWT with an active allowed_prefixes scope to execute this exploit. The attack vector is entirely network-based and demands low privileges, making it accessible to compromised or malicious tenants. No user interaction or administrative intervention is required to complete the authorization bypass.

The exploitation sequence begins with the attacker identifying sibling directory names that share the suffix boundary of their own authorized folder. In multi-tenant systems, names such as /tenant1_backup or /tenant1-development are highly predictable. The attacker crafts an HTTP request targeting the target sibling directory, embedding their legitimate scoped JWT within the Authorization header.

When the Filer receives the request, the authorization middleware validates the token signature successfully. It then evaluates the target path /tenant1_backup/file.json against the claim /tenant1. The vulnerable strings.HasPrefix check evaluates to true, granting the request read or write access depending on the HTTP method utilized.

Below is a sequence diagram illustrating the vulnerability mechanism:

Impact Assessment

The impact of CVE-2026-72921 is significant within multi-tenant distributed environments. This vulnerability compromises the fundamental isolation boundary between tenants. An attacker can perform unauthorized read and write operations across any folder that matches their assigned prefix sequence.

Unauthorized read access allows for the exfiltration of proprietary data, database backups, and intellectual property stored in adjacent sibling paths. Write access enables an attacker to modify, delete, or overwrite critical files belonging to other tenants. This capability can be leveraged to corrupt systems or inject malicious payloads into shared application paths.

The vulnerability has been assigned a CVSS v3.1 score of 8.1. The vector string CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N reflects high confidentiality and integrity impact. Although there is no direct impact on system availability, data deletion and corruption can result in operational disruption.

Remediation & Mitigation

The primary remediation strategy is to upgrade all SeaweedFS instances to version 4.24 or later. This release completely replaces the vulnerable matching logic with the secure segment-aware verification function. System administrators should verify that the update has been applied across all Filer nodes.

If an immediate upgrade is not feasible, temporary workarounds can be applied via JWT claim configuration. Administrators can modify token issuance policies to append a trailing slash to all AllowedPrefixes values. For example, issuing a scope of /tenant1/ instead of /tenant1 forces the vulnerable string check to require a trailing slash, neutralizing matches against sibling paths like /tenant1234.

Additionally, tenant namespaces can be refactored to eliminate shared character prefixes. Placing tenant directories under structurally unique parents prevents suffix collisions. Security groups should also monitor Filer logs for anomalous access requests targeting paths outside of a user's normal scope.

Official Patches

seaweedfsCommit fixing Filer prefix matching logic
seaweedfsGitHub Security Advisory

Fix Analysis (1)

Technical Appendix

CVSS Score
8.1/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
EPSS Probability
0.24%
Top 85% most exploited

Affected Systems

SeaweedFS FilerWolfiChainguard

Affected Versions Detail

Product
Affected Versions
Fixed Version
SeaweedFS
seaweedfs
< 4.244.24
AttributeDetail
CWE IDCWE-863
Attack VectorNetwork (AV:N)
CVSS v3.1 Score8.1 (High)
EPSS Score0.00238 (0.24%)
Exploit Statusnone
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
CWE-863
Incorrect Authorization

The software performs an authorization check when an actor attempts to access a resource or perform an action, but it does not correctly obtain or evaluate the access rights of the actor, leading to unauthorized access.

Vulnerability Timeline

Fix commit submitted to upstream repository
2026-05-12
GitHub Advisory GHSA-gv5w-hfx8-8cwq published
2026-08-11
SeaweedFS version 4.24 released
2026-08-11
NVD record modified and completed
2026-08-13

References & Sources

  • [1]GitHub Security Advisory GHSA-gv5w-hfx8-8cwq
  • [2]Fix Commit
  • [3]Pull Request #9439
  • [4]SeaweedFS Release 4.24
  • [5]NVD Entry
  • [6]CVE.org Record
  • [7]Wiz Vulnerability Database Reference

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•1 day ago•CVE-2026-11748
6.9

CVE-2026-11748: Unauthenticated LDAP Injection in Central Dogma Server Authentication

An LDAP injection vulnerability exists in the centraldogma-server-auth-shiro module of LY Corporation Central Dogma before version 0.84.0. The search logic dynamically constructs LDAP search filters by interpolating user-provided usernames without escaping RFC 4515 metacharacters. Unauthenticated remote attackers can leverage this flaw to bypass authentication, enumerate directory hierarchies, and access unauthorized resources.

Alon Barad
Alon Barad
9 views•6 min read
•1 day ago•CVE-2026-11746
9.4

CVE-2026-11746: Use of Hard-coded ZooKeeper Replication Secret 'ch4n63m3' in Central Dogma Server

CVE-2026-11746 is a critical vulnerability in Central Dogma Server prior to version 0.84.0, where an embedded ZooKeeper replication secret silently falls back to a publicly known, hard-coded default string ('ch4n63m3'). Remote attackers with access to the replication network can authenticate as legitimate cluster peers, potentially leading to unauthorized data exposure, state manipulation, or complete cluster takeover.

Amit Schendel
Amit Schendel
7 views•6 min read
•1 day ago•CVE-2026-56665
4.2

CVE-2026-56665: Logical Validation Bypass in ZITADEL External JWT Identity Provider

A logical verification flaw in ZITADEL's external JWT Identity Provider validation allows attackers to bypass session expiration checks. If an incoming JWT lacks the 'exp' claim, the system skips validation entirely, creating an indefinitely valid session. This issue has been addressed in versions 3.4.12 and 4.15.2.

Alon Barad
Alon Barad
6 views•7 min read
•1 day ago•CVE-2026-59149
6.5

CVE-2026-59149: Sibling Directory Path Traversal in Mockoon Backend Server

CVE-2026-59149 identifies a directory traversal vulnerability in `@mockoon/commons-server`, the backend mock-server library powering the Mockoon application. The flaw occurs in the path containment validation logic used during raw file response generation. An unauthenticated attacker can exploit this weakness to retrieve arbitrary files from sibling directories sharing a common prefix with the designated static base directory.

Amit Schendel
Amit Schendel
9 views•5 min read
•1 day ago•CVE-2026-59148
8.8

CVE-2026-59148: Unauthenticated Administrative API and CORS Misconfiguration in Mockoon

An in-depth analysis of CVE-2026-59148, a high-severity flaw in Mockoon where unauthenticated administrative endpoints and a wildcard Cross-Origin Resource Sharing (CORS) policy allow remote execution, state poisoning, and credential theft.

Alon Barad
Alon Barad
11 views•6 min read
•1 day ago•CVE-2026-56666
4.8

CVE-2026-56666: Account Takeover via Improper Email Verification in ZITADEL Federated Identity Handler

An improper authentication vulnerability (CWE-287) in ZITADEL's external identity provider handler before version 4.15.3 allows remote attackers to perform complete account takeover. When auto-linking by email is enabled, ZITADEL verifies that the local target account has a verified email address but fails to verify if the external provider confirmed ownership of that same email. Attackers can exploit this by registering an unverified account with a victim's email address on a permissive external provider, leading to unauthorized account binding and persistent access.

Amit Schendel
Amit Schendel
7 views•7 min read