Vulnerabilities in pkg:golang/github.com/OpenListTeam/OpenList/v4
PACKAGECVE-2026-69160 is a MODERATE (CVSS 6.5) arbitrary file read vulnerability (CWE-639: Authorization Bypass Through User-Controlled Key) affecting OpenList libraries in the Go ecosystem. The issue involves arbitrary file read via path prefix confusion in share creation api. Remediation is available by upgrading affected packages to version 4.2.4.
pkg:golang/github.com/OpenListTeam/OpenList/v4
Vulnerability advisories affecting package pkg:golang/github.com/OpenListTeam/OpenList/v4. Select an advisory below to view technical details or fixes.
| Advisory ID | CVE / NVD | Severity | Summary |
|---|---|---|---|
| GHSA-86cx-wwf4-phq4 | CVE-2026-69160 | MODERATE | OpenList: Arbitrary File Read via Path Prefix Confusion in Share Creation API |
| GHSA-95cv-r8x4-vh75 | CVE-2026-73509 | HIGH | OpenList: Authenticated users can rename files outside their base path via batch rename `src_name` traversal |
| GHSA-p6ph-3jx2-3337 | - | MODERATE | OpenList: Search metadata/count disclosure via Non-Separator-Aware Path Check in Bleve Search |
| GHSA-wf93-3ghh-h389 | CVE-2026-25060 | HIGH | OpenList has Insecure TLS Default Configuration |
| GHSA-qmj2-8r24-xxcq | CVE-2026-25059 | HIGH | OpenList vulnerable to Path Traversal in file copy and remove handlers |
CVE-2026-69160 at a Glance
Security Impact
CVSS: 6.5
The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N).
How to Fix CVE-2026-69160
To remediate this vulnerability, upgrade all affected OpenList dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
Upgrade github.com/OpenListTeam/OpenList/v4 to 4.2.4
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
inspect dependencies for github.com/OpenListTeam/OpenList/v4
How to Check if You Are Affected
To determine whether your application is affected by CVE-2026-69160, inspect your project dependencies for OpenList:
inspect dependencies for github.com/OpenListTeam/OpenList/v4
Analyze the terminal output to locate any version of OpenList in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 4.2.4), your application is affected.
Note: Verify declared build manifests and deployed runtime container environments.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-639: Authorization Bypass Through User-Controlled Key, where the system's authorization functionality does not prevent one user from gaining access to another user's data or record by modifying the key value identifying the data. In OpenList, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2026-69160 Affected OpenList Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
github.com/OpenListTeam/OpenList/v4
|
Go |
< 4.2.4
|
4.2.4
|
References
Frequently Asked Questions
What is CVE-2026-69160?
Which OpenList versions are affected?
What version fixes CVE-2026-69160?
Is github.com/OpenListTeam/OpenList/v4 affected?
What is the CVSS score of CVE-2026-69160?
What CWE is associated with CVE-2026-69160?
How can I check Go dependencies for CVE-2026-69160?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-86cx-wwf4-phq4",
"modified" : "2026-08-18T18:04:49Z",
"published" : "2026-07-24T22:32:37Z",
"aliases" : [ "CVE-2026-69160" ],
"summary" : "OpenList: Arbitrary File Read via Path Prefix Confusion in Share Creation API",
"details" : "### Summary\nAn authorization bypass vulnerability exists in the file sharing mechanism of `Openlist`. Due to a flawed, non-separator-aware path validation check, an authenticated user can create share links for files outside their restricted base directory. This allows an attacker to bypass tenant/user isolation and gain unauthorized read access to arbitrary files within the system.\n\n### Details\nWhen a user attempts to create or update a file share, the application must verify that the requested file path falls within the user's assigned `BasePath`. However, in `server/handles/sharing.go`, this authorization check relies on a simple string prefix function: `strings.HasPrefix(requested_path, user.BasePath)`.\n\nBecause `strings.HasPrefix` does not account for directory separators (e.g., `/`), an attacker whose `BasePath` is assigned to `/base` can supply a target path like `/base2/secret_document.txt`. The validation `strings.HasPrefix(\"/base2/secret_document.txt\", \"/base\")` evaluates to `true`, successfully passing the authorization filter. \n\nOnce the share is created, the public share download/list handlers unwrap and serve the file based on the stored absolute path without re-verifying the creator's current directory scope, granting the attacker horizontal access to unauthorized data.\n\n### PoC\n**Prerequisites:**\n1. A system with at least two distinct directories at the root level: `/base` and `/base2`.\n2. A sensitive file exists at `/base2/secret.txt`.\n3. An attacker account with the `CanShare` permission enabled and its `Base path` strictly limited to `/base`.\n\n**Exploitation Steps:**\n1. Log in as the attacker account and obtain the JWT authorization token.\n2. Send a `POST` request to create a new share, intentionally targeting the unauthorized sibling directory `/base2`:\n\n```http\nPOST /api/share/create HTTP/1.1\nHost: <your-openlist-host>\nAuthorization: <attacker-jwt-token>\nContent-Type: application/json\n\n{\n \"files\": [\"/base2/secret.txt\"],\n \"pwd\": \"\",\n \"max_accessed\": 0\n}\n```\nObserve the bypass: The API accepts the request and responds with a successful share creation message, returning a `share_id`.\n\nThe attacker can now access the public share endpoint (e.g., via the web UI or API `/api/fs/list` / `/sd/<share-id>/...`) to download or view `/base2/secret.txt`, completely bypassing their directory restrictions.\n\n<img width=\"2457\" height=\"1307\" alt=\"7b0bd29c9d12ad0b7b84a4a156559a5b\" src=\"https://github.com/user-attachments/assets/415e4915-dbc2-4738-8c53-8174998b42a9\" />\n\n<img width=\"1937\" height=\"856\" alt=\"90b16bf15b6e8bfb87f16c4ab8864ea7\" src=\"https://github.com/user-attachments/assets/8dc5205e-2ac6-4f4f-9d40-e1e9d72229d5\" />\n\n### Impact\nThis is a High-severity Horizontal and Vertical Privilege Escalation vulnerability. A malicious user with basic sharing privileges can weaponize this path confusion to expose, read, and download any file from other users' directories or internal application paths, provided the target path shares the same string prefix as their own directory. This completely breaks the data isolation guarantees of the application.\n\n### Remediation Recommendations\nCanonical Path Containment: Replace the raw `strings.HasPrefix` check with a robust, separator-aware path containment validation. Ensure both paths are normalized, and use logic such as: `target == base || strings.HasPrefix(target, base + \"/\")`.\n\nCentralized Validation Utility: Implement a dedicated function (e.g., `utils.IsSubPath(base, target)`) and apply it consistently across share creation, updating, and viewing handlers to prevent regressions.\n\n### Credits\n- Thai Son Dinh from VinSOC Labs (R&D)",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "Go",
"name" : "github.com/OpenListTeam/OpenList/v4"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "4.2.4"
} ]
} ],
"database_specific" : {
"last_known_affected_version_range" : "<= 4.2.3"
}
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/OpenListTeam/OpenList/security/advisories/GHSA-86cx-wwf4-phq4"
}, {
"type" : "WEB",
"url" : "https://github.com/OpenListTeam/OpenList/commit/59bd3431408578f420895457554700cc9a52375a"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/OpenListTeam/OpenList"
}, {
"type" : "WEB",
"url" : "https://github.com/OpenListTeam/OpenList/releases/tag/v4.2.4"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-639" ],
"severity" : "MODERATE",
"github_reviewed" : true,
"github_reviewed_at" : "2026-07-24T22:32:37Z",
"nvd_published_at" : null
}
}