SeaweedFS: SFTP path ACL literal prefix match permits cross-tenant file read and overwrite
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 sourcePublished 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"
}