Skip to content
Heist/ feed
Back to feed
High

SeaweedFS: SFTP path ACL literal prefix match permits cross-tenant file read and overwrite

Type: advisorySources: OSV

SeaweedFS is a distributed storage system for files and blobs. In versions from 3.88 through 4.39, the SFTP server evaluates configured path permissions with a literal string-prefix comparison, so a user scoped to a path is also granted the same access to any sibling path whose name merely begins with the same characters. A user granted access to /tenants/alice therefore also matches /tenants/alice-archive, /tenants/alice2, and similar siblings, because the check does not require a path-component boundary. An authenticated low-privilege SFTP user with a root home directory and narrow path permissions can thereby cross the configured ACL boundary to read another tenant's files, and to overwrite them if granted write, all through the documented SFTP service with its own valid credentials. This issue is fixed in version 4.40.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-77317
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 09:54 UTC · Revision 1

Source evidence

SeaweedFS: SFTP path ACL literal prefix match permits cross-tenant file read and overwrite

core-osv · Original source

Published 26 Aug 2026, 21:25 UTC

SeaweedFS is a distributed storage system for files and blobs. In versions from 3.88 through 4.39, the SFTP server evaluates configured path permissions with a literal string-prefix comparison, so a user scoped to a path is also granted the same access to any sibling path whose name merely begins with the same characters. A user granted access to /tenants/alice therefore also matches /tenants/alice-archive, /tenants/alice2, and similar siblings, because the check does not require a path-component boundary. An authenticated low-privilege SFTP user with a root home directory and narrow path permissions can thereby cross the configured ACL boundary to read another tenant's files, and to overwrite them if granted write, all through the documented SFTP service with its own valid credentials. This issue is fixed in version 4.40.

osv:CVE-2026-77317
Complete source record
{
  "id": "296b54236f2377faeffa2b49c13eca1120f2d3e7580b453ef29f5dd5f0298176",
  "url": "https://osv.dev/vulnerability/CVE-2026-77317",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "SeaweedFS: SFTP path ACL literal prefix match permits cross-tenant file read and overwrite",
    "summary": "SeaweedFS is a distributed storage system for files and blobs. In versions from 3.88 through 4.39, the SFTP server evaluates configured path permissions with a literal string-prefix comparison, so a user scoped to a path is also granted the same access to any sibling path whose name merely begins with the same characters. A user granted access to /tenants/alice therefore also matches /tenants/alice-archive, /tenants/alice2, and similar siblings, because the check does not require a path-component boundary. An authenticated low-privilege SFTP user with a root home directory and narrow path permissions can thereby cross the configured ACL boundary to read another tenant's files, and to overwrite them if granted write, all through the documented SFTP service with its own valid credentials. This issue is fixed in version 4.40.",
    "evidence": "osv:CVE-2026-77317",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-77317",
      "aliases": [
        "BIT-seaweedfs-2026-77317",
        "CVE-2026-77317",
        "GHSA-fvpg-g364-j8vh"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/seaweedfs/seaweedfs",
              "type": "GIT",
              "events": [
                {
                  "introduced": "6677f1f5639b8994f0fbe11a1bf991e9f88fa1da"
                },
                {
                  "fixed": "875cd1f67ea25e8965a4f5ba1e6aaf501ba6b6fa"
                },
                {
                  "fixed": "29981f8d24a62e9571962c4534fb23c48c00bae2"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "3.88"
                      },
                      {
                        "fixed": "4.40"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "29981f8d24a62e9571962c4534fb23c48c00bae2"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "4.39",
            "4.38",
            "4.37",
            "4.36",
            "4.35",
            "4.34",
            "4.33",
            "4.32",
            "4.31",
            "4.30",
            "4.29",
            "4.28",
            "4.27",
            "4.26",
            "4.25",
            "4.24",
            "4.23",
            "4.22",
            "4.21",
            "4.20",
            "4.19",
            "4.18",
            "4.17",
            "4.16",
            "4.15",
            "4.13",
            "4.12",
            "4.09",
            "4.08",
            "4.07",
            "4.06",
            "4.05",
            "4.04",
            "4.03",
            "4.02",
            "4.01",
            "4.00",
            "3.99",
            "3.97",
            "3.96",
            "3.95",
            "3.94",
            "3.93",
            "3.92",
            "3.91",
            "3.90",
            "3.89",
            "3.88"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-77317.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:27.753017309Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/77xxx/CVE-2026-77317.json",
        "https://github.com/seaweedfs/seaweedfs/security/advisories/GHSA-fvpg-g364-j8vh",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-77317",
        "https://github.com/seaweedfs/seaweedfs/commit/29981f8d24a62e9571962c4534fb23c48c00bae2"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-863"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/77xxx/CVE-2026-77317.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-77317",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 494343,
  "published_at": "2026-08-26T21:25:46.531+00:00"
}