Skip to main content

gonic CVE-2026-49339

| EUVDEUVD-2026-38062 HIGH
Path Traversal (CWE-22)
2026-06-19 GitHub_M GHSA-2fp4-5v5c-4448
7.1
CVSS 3.1 · Vendor: GitHub_M
Share

Severity by source

Vendor (GitHub_M) PRIMARY
7.1 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N
vuln.today AI
7.1 HIGH

Network-reachable Subsonic API, any authenticated user (PR:L), no user interaction; integrity high due to arbitrary cross-user playlist deletion and out-of-base writes, confidentiality low (playlist metadata and path-existence oracle), no availability impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N
SUSE
HIGH
qualitative

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

3
Patch available
Jun 19, 2026 - 21:02 EUVD
Source Code Evidence Fetched
Jun 19, 2026 - 19:01 vuln.today
Analysis Generated
Jun 19, 2026 - 19:01 vuln.today

DescriptionCVE.org

gonic is a music streaming server / free-software subsonic server API implementation. The maintainer's fix in commit 6dd71e6a3c966867ef8c900d359a7df75789f410 added an ownership check based on playlist.UserID. However, playlist.UserID is derived from the *first path segment* of the attacker-controlled playlist ID, with no path containment on the resolved file path. Any authenticated Subsonic user can therefore bypass the ownership check and read any other user's playlist, delete any other user's playlist, and probe arbitrary file paths on the host for existence/readability. This is a bypass of the boundary the 6dd71e6 fix is trying to enforce; it is closely related to the original GONIC-1 IDOR but uses a different primitive (path traversal in the id parameter rather than direct cross-user access). Commit 0824bed88f6bbc490ba28bf09d28e5dfeb07b445 in version 0.21.0 fixes the issue.

AnalysisAI

Authenticated path traversal in gonic music streaming server allows any Subsonic user to read or delete other users' playlists and probe arbitrary host file paths by smuggling .. segments into the playlist id parameter. The flaw bypasses the ownership check introduced in commit 6dd71e6, which derived playlist.UserID from the first path segment of the attacker-controlled ID without containing the resolved file path. No public exploit identified at time of analysis, but a proof-of-concept test case is embedded in the upstream patch.

Technical ContextAI

gonic (cpe:2.3:a:sentriz:gonic) is a self-hosted Subsonic-compatible music streaming server written in Go. Playlists are stored as files (e.g. m3u) under a base directory, addressed by a relative path encoded into the Subsonic id parameter. The vulnerable playlist.Store.Read/Write/Delete methods called filepath.Join(basePath, relPath) without verifying the resulting path remained under basePath, and the ownership decision (userIDFromPath) was computed from the raw, attacker-supplied first path segment rather than the canonicalized path. This is a textbook CWE-22 path traversal combined with a TOCTOU-style identity spoof: a crafted ID such as <victimID>/../<attackerID>/... passes the first-segment check while resolving to a victim file, and an ID starting with .. escapes the playlist directory entirely.

RemediationAI

Vendor-released patch: upgrade gonic to version 0.21.0 or later, which introduces a fileutil.SafeJoin helper that rejects any relative path escaping the playlist base and recomputes playlist.UserID from the cleaned relative path (commit 0824bed88f6bbc490ba28bf09d28e5dfeb07b445; advisory GHSA-2fp4-5v5c-4448). Operators who cannot upgrade immediately should restrict the gonic instance to a single trusted user (gonic is a multi-user Subsonic server, so this effectively disables shared-server use), or front the Subsonic API with a reverse proxy that rejects requests whose decoded id parameter contains .., encoded traversal sequences (%2e%2e, ..%2f), or absolute paths - this will break legitimate playlist IDs that legitimately contain those byte sequences, so test before rolling out. As a further hardening step, run the gonic process under a dedicated unprivileged user with read/write access only to the playlist directory, limiting the blast radius of the file-existence probing primitive.

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise Server 16.1 Affected
SUSE Linux Enterprise Server for SAP applications 16.1 Affected
SUSE Linux Enterprise Module for Package Hub 15 SP5 Affected
SUSE Linux Enterprise Module for Package Hub 15 SP6 Affected
openSUSE Leap 15.5 Affected

Share

CVE-2026-49339 vulnerability details – vuln.today

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