CVE-2025-27112 — navidrome
Fix: navidrome/navidrome@287079aCVE-2025-27112 is a Improper Authentication vulnerability in github.com/navidrome/navidrome. A fix is available for github.com/navidrome/navidrome — see the affected versions and patch details below.
Navidrome has authentication bypass in Subsonic API with non-existent username
Exploitation Status
Proof-of-concept exploit code exists
- CISA’s SSVC triage found public proof-of-concept exploit code for this CVE, though no confirmed active exploitation.
- CISA assesses this as automatable — exploitation doesn’t require manual, per-target effort, which raises the odds of mass scanning and opportunistic attacks.
Exploitation and automatability from CISA’s SSVC triage for CVE-2025-27112.
EPSS Exploitation Probability
EPSS (Exploit Prediction Scoring System) is a daily probability model maintained by FIRST.org. It estimates the likelihood a CVE will be exploited in production environments within the next 30 days, derived from real-world threat intelligence signals.
Real-World Exposure
github.com/navidrome/navidromeReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects Go packages — download data is not available via public APIs for these ecosystems.
Description
Summary
In certain Subsonic API endpoints, authentication can be bypassed by using a non-existent username combined with an empty (salted) password hash. This allows read-only access to the server’s resources, though attempts at write operations fail with a “permission denied” error.
Details
A flaw in the authentication check process allows an attacker to specify any arbitrary username that does not exist on the system, along with a salted hash of an empty password. Under these conditions, Navidrome treats the request as authenticated, granting access to various Subsonic endpoints without requiring valid credentials.
Proof of Concept (PoC)
-
Generate a random salt:
// e.g., salt = "x1vbudn1m6d" Math.random().toString(36).substring(2, 15) -
Calculate the MD5 hash of an empty password plus the salt:
# Using the example salt above echo -n "x1vbudn1m6d" | md5sum 81f0c0fb5d202ab0d012e6eaeb722d79 - -
Send a request specifying a fake user, with the hash and salt values:
GET https://[host]/rest/getPlaylists?u=FakeUser&t=81f0c0fb5d202ab0d012e6eaeb722d79&s=x1vbudn1m6d&v=1.16.1&c=castafiore&f=json
Impact
An attacker can use any non-existent username to bypass the authentication system and gain access to various read-only data in Navidrome, such as user playlists. However, any attempt to modify data fails due to insufficient permissions, limiting the impact to unauthorized viewing of information.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐹Go | github.com/navidrome/navidrome | ≥ 0.52.0&&< 0.54.5 | 0.54.5go get github.com/navidrome/navidrome@v0.54.5 |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for github.com/navidrome/navidrome, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update github.com/navidrome/navidrome to 0.54.5 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2025-27112 is resolved across your whole dependency graph.
Workarounds
If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.
How O3 protects you
O3 Security's impact-aware SCA analyses which vulnerable code paths your application actually calls, so a match like CVE-2025-27112 can be triaged on real exposure rather than presence alone.
Tailored to CVE-2025-27112. Runtime protection reduces exposure until a permanent patch is applied and verified — it complements patching, it doesn't replace it.
How to detect CVE-2025-27112
A community-maintained Nuclei template exists for this CVE. You can scan for it directly:
nuclei -id cve-2025-27112 -u https://target- Template
- Navidrome <=0.54.5 - Authentication Bypass in Subsonic API
- Severity
- medium
- Impact
- Attackers can bypass authentication using non-existent usernames and empty password hashes to gain read-only access to user playlists and other data through Subsonic API endpoints.
- Remediation
- Upgrade to Navidrome version 0.54.5 or later that properly validates authentication credentials.
Template by ProjectDiscovery nuclei-templates (iamnoooob, rootxharsh, pdresearch), MIT licensed. View the full template. Scan only systems you are authorised to test.
Frequently Asked Questions
Is CVE-2025-27112 in your dependencies?
O3 Security finds CVE-2025-27112 across Go dependencies, including transitive ones, and its impact-aware SCA ranks findings by whether your code actually calls the vulnerable path.