Skip to main content

Suse CVE-2026-54719

| EUVDEUVD-2026-50080 HIGH
Missing Authorization (CWE-862)
2026-07-28 https://github.com/goshs-labs/goshs GHSA-rmxw-pq4x-3fvh
7.5
CVSS 3.1 · Vendor: https://github.com/goshs-labs/goshs
Share

Severity by source

Vendor (https://github.com/goshs-labs/goshs) PRIMARY
7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
SUSE
HIGH
qualitative

Primary rating from Vendor (https://github.com/goshs-labs/goshs).

CVSS VectorVendor: https://github.com/goshs-labs/goshs

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

3
Source Code Evidence Fetched
Jul 28, 2026 - 22:20 vuln.today
Analysis Generated
Jul 28, 2026 - 22:20 vuln.today
CVE Published
Jul 28, 2026 - 21:59 github-advisory
HIGH 7.5

DescriptionCVE.org

GHSA-wvhv-qcqf-f3cx fixed the per-folder .goshs ACL bypass on the state-changing routes (PUT/POST upload/?mkdir/?delete) and added recursive ACL resolution, and its description states the read/list path correctly enforces .goshs. That premise does not hold for the ?bulk zip-download route. bulkDownload (httpserver/updown.go) takes one or more ?file= parameters, runs each through sanitizePath(fs.Webroot, file), and streams the contents back as a ZIP without ever calling findEffectiveACL/applyCustomAuth. It is dispatched from earlyBreakParameters (?bulk) before the normal doDir/doFile/sendFile flow that performs the ACL check. An unauthenticated attacker can therefore read any file under the webroot protected solely by a .goshs ACL, bypassing both the folder auth (401 on the normal path) and the per-file block list (404 on the normal path). Same authorization-inconsistency root cause as the original advisory, surviving on a read route the fix did not cover.

Proof of concept (live, against the fixed v2.1.0 build which includes fix commit f212c4f4, served with no global -b auth, only a per-folder .goshs): GET /protected/secret.txt -> 401 (ACL enforced on normal path) GET /protected/secret.txt -u admin:admin -> 200 GET /?bulk&file=/protected/secret.txt -> 200, zip contains the protected file contents (BYPASS) GET /?bulk&file=/protected/blocked.txt -> 200, zip contains the block-listed file (block bypass) GET /protected/secret.txt?share -> 403 'Sharing disabled when auth is disabled' (correctly gated, NOT a bypass)

Impact: any unauthenticated network attacker can read files an operator protected with the documented per-folder .goshs ACL/basic-auth feature, by requesting them through ?bulk. Confidentiality only (the write/delete equivalents were closed by GHSA-wvhv-qcqf-f3cx). Applies to deployments relying on .goshs as the access boundary (a server-wide -b basic auth, if configured, also gates ?bulk via its middleware).

Remediation: enforce the effective .goshs ACL inside bulkDownload for every requested file exactly as sendFile/processDir do (resolve findEffectiveACL(filepath.Dir(absPath)) + applyCustomAuth + honor acl.Block), or route ?bulk through the same authorization gate as the normal read path. Audit ?cbDown and other alternate read routes for the same gap.

Credit: anir0y (independent security research).

AnalysisAI

An authorization bypass in goshs’s bulk zip-download route allows unauthenticated attackers to read any file protected solely by a per-folder .goshs ACL, circumventing both folder-based authentication and per-file block lists. The vulnerability affects goshs v2.x up to 2.1.0 and all v1.x versions. A proof-of-concept is publicly available, demonstrating the bypass against a patched version that had addressed a related ACL gap on write/delete routes but left the read path unprotected.

Vendor StatusVendor

SUSE

Severity: Important

Share

CVE-2026-54719 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy