Skip to content
Heist/ feed
Back to feed
High

SeaweedFS: Authenticated Cross-Prefix IDOR in Filer TUS Handler Enables Arbitrary Write to Tenant-Forbidden Paths

Type: advisorySources: OSV

SeaweedFS is a distributed storage system for files and blobs. In version 4.39, the filer's TUS resumable-upload handler checks JWT allowed_prefixes scoping only when a session is created, letting a low-privilege tenant hijack another tenant's upload session to write content to filer paths their own token forbids. The HEAD, PATCH, and DELETE verbs that act on an existing session by its id never verify that the session's stored target path falls within the caller's allowed prefixes, so a tenant who obtains another upload's session identifier can PATCH attacker bytes into it and, on completion, have the file land at the victim's out-of-scope path. The same token can also DELETE other tenants' sessions and HEAD them to read upload progress and size, defeating the JWT prefix isolation. This vulnerability only affects deployments that configure filer JWT signing and have TUS uploads enabled. This issue is fixed in version 4.40.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-77368
Confirmed fixed CVEs
Not specified
Updated in this feed
6 Nov 2026, 02:23 UTC · Revision 1

Source evidence

SeaweedFS: Authenticated Cross-Prefix IDOR in Filer TUS Handler Enables Arbitrary Write to Tenant-Forbidden Paths

core-osv · Original source

Published 26 Aug 2026, 21:07 UTC

SeaweedFS is a distributed storage system for files and blobs. In version 4.39, the filer's TUS resumable-upload handler checks JWT allowed_prefixes scoping only when a session is created, letting a low-privilege tenant hijack another tenant's upload session to write content to filer paths their own token forbids. The HEAD, PATCH, and DELETE verbs that act on an existing session by its id never verify that the session's stored target path falls within the caller's allowed prefixes, so a tenant who obtains another upload's session identifier can PATCH attacker bytes into it and, on completion, have the file land at the victim's out-of-scope path. The same token can also DELETE other tenants' sessions and HEAD them to read upload progress and size, defeating the JWT prefix isolation. This vulnerability only affects deployments that configure filer JWT signing and have TUS uploads enabled. This issue is fixed in version 4.40.

osv:CVE-2026-77368
Complete source record
{
  "id": "93e37a293b85775b4ad37a58bca09f9e60ab195aa373ebc6be48d02658bf3b47",
  "url": "https://osv.dev/vulnerability/CVE-2026-77368",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "SeaweedFS: Authenticated Cross-Prefix IDOR in Filer TUS Handler Enables Arbitrary Write to Tenant-Forbidden Paths",
    "summary": "SeaweedFS is a distributed storage system for files and blobs. In version 4.39, the filer's TUS resumable-upload handler checks JWT allowed_prefixes scoping only when a session is created, letting a low-privilege tenant hijack another tenant's upload session to write content to filer paths their own token forbids. The HEAD, PATCH, and DELETE verbs that act on an existing session by its id never verify that the session's stored target path falls within the caller's allowed prefixes, so a tenant who obtains another upload's session identifier can PATCH attacker bytes into it and, on completion, have the file land at the victim's out-of-scope path. The same token can also DELETE other tenants' sessions and HEAD them to read upload progress and size, defeating the JWT prefix isolation. This vulnerability only affects deployments that configure filer JWT signing and have TUS uploads enabled. This issue is fixed in version 4.40.",
    "evidence": "osv:CVE-2026-77368",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-77368",
      "aliases": [
        "BIT-seaweedfs-2026-77368",
        "CVE-2026-77368",
        "GHSA-99q7-x53r-6j4g"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/seaweedfs/seaweedfs",
              "type": "GIT",
              "events": [
                {
                  "introduced": "db42bb49757b459551607939807017d7a9d5a94a"
                },
                {
                  "fixed": "875cd1f67ea25e8965a4f5ba1e6aaf501ba6b6fa"
                },
                {
                  "fixed": "ce82e3a057080162a9fba11889157d2255815f71"
                },
                {
                  "fixed": "fa549e9c83b7799d512157d728f52052912831af"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "4.39"
                      },
                      {
                        "fixed": "4.40"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "ce82e3a057080162a9fba11889157d2255815f71"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "fa549e9c83b7799d512157d728f52052912831af"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "4.39"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-77368.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:45.966516041Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/77xxx/CVE-2026-77368.json",
        "https://github.com/seaweedfs/seaweedfs/security/advisories/GHSA-99q7-x53r-6j4g",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-77368",
        "https://github.com/seaweedfs/seaweedfs/commit/ce82e3a057080162a9fba11889157d2255815f71",
        "https://github.com/seaweedfs/seaweedfs/commit/fa549e9c83b7799d512157d728f52052912831af"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-639"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/77xxx/CVE-2026-77368.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-77368",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 514246,
  "published_at": "2026-08-26T21:07:57.105+00:00"
}