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-54917

CVE-2026-54917: Cross-Bucket Path Traversal and Authorization Bypass in SeaweedFS S3 and Iceberg Gateways

Amit Schendel
Amit Schendel
Senior Security Researcher

Aug 12, 2026·5 min read·3 visits

Executive Summary (TL;DR)

SeaweedFS gateways disable routing path cleaning, allowing '..' segments to reach the backend. This permits users with access to a single bucket to bypass IAM boundaries and read/write files in any other bucket on the cluster.

CVE-2026-54917 is a critical path traversal and authorization bypass vulnerability affecting the S3 and Iceberg REST catalog gateways in SeaweedFS. By explicitly disabling canonical path cleaning in the gorilla/mux routing system, relative path segments such as '..' are allowed to bypass routing constraints and access control checks. When these paths are collapsed server-side by the backend filer, they resolve to folders outside the authorized bucket boundary, allowing unauthorized cross-bucket access.

Vulnerability Overview

SeaweedFS is a highly scalable distributed storage system designed to support object storage (S3), file systems, and Iceberg tables. Within its architecture, the S3 API gateway and the Iceberg REST catalog gateway serve as translation layers, converting high-level object queries into low-level operations processed by the SeaweedFS distributed filer. These gateways rely on the gorilla/mux library for HTTP routing and parameter parsing.

To preserve raw path structures for specific storage use cases, both gateways historically initialized their routing engines with mux.NewRouter().SkipClean(true). Disabling canonical path cleaning prevents the routing engine from resolving relative directory navigation tokens, such as double dots (..), before matching incoming URIs. This configuration leaves the gateways exposed to path manipulation attacks.

When a request contains a directory traversal sequence, the router matches the catch-all pattern and forwards the unmodified path to the application logic. This behavior violates tenant isolation boundaries, as the relative segments remain intact during the routing and authorization phases. The complete bypass allows any authenticated tenant to access assets across the entire cluster.

Root Cause Analysis

The root cause of CVE-2026-54917 lies in a logic discrepancy between the router's path parameter extraction and the backend's path resolution mechanisms. In a standard configuration, relative path elements are normalized at the edge; however, with SkipClean(true) active, the raw traversal tokens bypass edge validation entirely.

When an attacker issues a crafted request, the router assigns the first segment as the {bucket} variable and the remainder as the {object} variable. Because the IAM authorization check is evaluated solely against the extracted {bucket} variable, the gateway validates and permits the request under the assumption that the caller is accessing their own authorized resource.

Following authorization, the gateway constructs the physical storage path by joining the bucket root with the unsanitized object key. The backend filer relies on Go's path.Join or util.JoinPath (which call filepath.Clean) to finalize the path structure. This execution collapses the relative directory sequences, shifting the target of the operation to an unauthorized destination.

Code-Level Analysis

Prior to version 4.30, the S3 API gateway lacked validation checks to verify whether captured route variables contained relative directory traversal sequences. The system's standard variable sanitization function, NormalizeObjectKey, was designed only to convert backslashes and collapse duplicate slashes.

// Vulnerable path resolution logic
func (s3a *S3ApiServer) toFilerPath(bucket, object string) string {
    object = s3_constants.NormalizeObjectKey(object)
    return fmt.Sprintf("%s/%s", s3a.bucketDir(bucket), object)
}

To resolve this vulnerability, the maintainers implemented path validation middleware to intercept incoming requests before handlers process them. This middleware verifies that neither the bucket name nor the object key contains elements capable of traversing directories.

// Patched object key validation checks
func IsValidObjectKey(object string) bool {
    if object == "" {
        return true
    }
    if strings.ContainsRune(object, '\x00') {
        return false
    }
    object = strings.ReplaceAll(object, "\\", "/")
    for _, seg := range strings.Split(object, "/") {
        if seg == "." || seg == ".." {
            return false
        }
    }
    return true
}

This validation logic ensures that any route variable containing null bytes, directory traversal patterns, or structural separators is rejected immediately. The corresponding middleware throws an HTTP 400 Bad Request error before downstream operations are triggered.

Exploitation Methodology

Exploiting CVE-2026-54917 requires that the attacker possess valid S3 API credentials for at least one bucket on the targeted SeaweedFS deployment. Because standard client libraries automatically normalize directory traversal sequences before transmission, attackers must manually construct the raw HTTP requests.

To execute the exploit, a script manually computes and appends the S3 AWS Signature Version 4 (SigV4) headers. The raw HTTP request line is written directly to the socket to prevent the client runtime from removing the traversal characters. The request includes the traversal sequence inside the path parameter, targeting an unauthorized bucket.

# Signature generation logic requires signing the unnormalized canonical URI
wire, canon = build_paths(bucket, target_bucket, key, variant)
payload_sha = hashlib.sha256(body).hexdigest()
headers = sign_v4(method, host, port, wire, canon, ak, sk, region, payload_sha)

When the S3 gateway receives this request, it decodes the URI and authenticates the user for the legitimate bucket. After authorization, the backend resolves the path traversal to perform read or write operations against the target bucket, completely bypassing tenant isolation boundaries.

Impact Assessment

The impact of this vulnerability is critical, as it allows complete horizontal privilege escalation across tenant boundaries. Any user with read or write credentials for a single bucket can access, modify, or delete files across all other buckets on the system.

This bypass undermines the data confidentiality and integrity guarantees of multi-tenant SeaweedFS deployments. Attackers can exfiltrate raw database backups, sensitive system files, or proprietary data objects, or overwrite existing objects with malicious payloads.

This flaw has been assigned a CVSS v3.1 base score of 10.0, reflecting its low complexity, network-based attack vector, and the lack of high-level privileges required to compromise tenant isolation. Because the flaw affects multiple protocol gateways, it represents a systemic vulnerability in the access control layer.

Fix Analysis (1)

Technical Appendix

CVSS Score
10.0/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N
EPSS Probability
0.38%
Top 69% most exploited

Affected Systems

SeaweedFS S3 API GatewaySeaweedFS Iceberg REST Catalog Gateway

Affected Versions Detail

Product
Affected Versions
Fixed Version
SeaweedFS
SeaweedFS
< 4.304.30
AttributeDetail
CWE IDCWE-22
Attack VectorNetwork
CVSS Score10.0
Exploit StatusProof-of-Concept Available
CISA KEV StatusNot Listed

MITRE ATT&CK Mapping

T1083File and Directory Discovery
Discovery
T1005Data from Local System
Collection
CWE-22
Path Traversal

Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

Known Exploits & Detection

GitHubhttps://github.com/BiiTts/CVE-2026-54917-SeaweedFS-Cross-Bucket-Traversal

References & Sources

  • [1]https://nvd.nist.gov/vuln/detail/CVE-2026-54917
  • [2]https://github.com/seaweedfs/seaweedfs/security/advisories/GHSA-w62w-66v9-vvgv
  • [3]https://github.com/seaweedfs/seaweedfs/pull/9687
  • [4]https://github.com/seaweedfs/seaweedfs/commit/dd1b4287899eed3dfd73c2f3b1de001996fda229

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

•about 5 hours ago•CVE-2026-9318
5.4

CVE-2026-9318: Stored Cross-Site Scripting via HTML Export in Jazzband tablib

CVE-2026-9318 is a stored cross-site scripting (XSS) vulnerability affecting Jazzband tablib versions prior to 3.10.0. The flaw is located in the HTML export functionality of multi-sheet Databook objects. Due to raw f-string interpolation, unsanitized sheet titles containing malicious script tags are rendered directly as HTML, allowing arbitrary client-side code execution in a victim's browser.

Amit Schendel
Amit Schendel
4 views•8 min read
•about 7 hours ago•GHSA-JWJP-4649-V8JP
7.5

GHSA-jwjp-4649-v8jp: Out-of-Bounds Read in SIPSorcery SCTP SACK Chunk Parsing

An out-of-bounds read vulnerability in the SCTP SACK chunk parser of SIPSorcery leads to Denial of Service (DoS) or silent internal state corruption due to lack of boundary validation on incoming chunk elements.

Amit Schendel
Amit Schendel
3 views•6 min read
•about 8 hours ago•GHSA-PFVM-W89X-94JW
7.5

GHSA-pfvm-w89x-94jw: Uncaught Exception in STUN Parser Causes Complete TurnServer Receive Loop Termination

An uncaught exception vulnerability exists in SIPSorcery's TurnServer component, where unauthenticated malformed UDP packets can crash the core UDP receive loop, resulting in a persistent Denial of Service.

Amit Schendel
Amit Schendel
7 views•6 min read
•1 day ago•CVE-2026-62898
7.5

CVE-2026-62898: Use After Free Information Disclosure in Microsoft QUIC

A critical use-after-free vulnerability in Microsoft QUIC allows unauthenticated remote attackers to disclose sensitive system memory over the network. The vulnerability is caused by a race condition during rapid connection termination and asynchronous packet retransmission.

Alon Barad
Alon Barad
12 views•6 min read
•1 day ago•CVE-2026-62899
5.9

CVE-2026-62899: .NET Security Feature Bypass Vulnerability (HTTP Request Smuggling)

CVE-2026-62899 is a security feature bypass vulnerability in the Microsoft .NET runtime environment on non-Windows platforms. The flaw manifests as an HTTP Request/Response Smuggling vulnerability (CWE-444) within the managed implementation of the System.Net.HttpListener class. This allows unauthenticated remote attackers to desynchronize request boundaries when the backend .NET application is hosted behind an upstream reverse proxy.

Amit Schendel
Amit Schendel
16 views•6 min read
•1 day ago•CVE-2026-62901
7.5

CVE-2026-62901: Remote Denial of Service via Infinite Loop in .NET WebSockets Engine

CVE-2026-62901 is a high-severity Denial of Service (DoS) vulnerability in the Microsoft .NET ecosystem, specifically affecting the System.Net.WebSockets frame-processing engine and associated network transports. Under certain circumstances, a remote, unauthenticated attacker can exploit this vulnerability by sending malformed or specifically crafted WebSocket packets over the network, causing a targeted .NET application server to enter a tight infinite loop. This behavior results in 100% CPU utilization on the executing thread, starving application resources and leading to a complete Denial of Service.

Alon Barad
Alon Barad
17 views•6 min read