{"id":"CVE-2025-27112","aliases":["EUVD-2025-5077","GHSA-c3p4-vm8f-386p","GO-2025-3484","openSUSE-SU-2025:14889-1"],"status":"published","title":"Navidrome has authentication bypass in Subsonic API with non-existent username","description":"Navidrome is an open source web-based music collection server and streamer. Starting in version 0.52.0 and prior to version 0.54.5, in certain Subsonic API endpoints, 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. 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 with a \"permission denied\" error due to insufficient permissions, limiting the impact to unauthorized viewing of information. Version 0.54.5 contains a patch for this issue.","severity":{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-10","score":0.00982,"percentile":0.62588,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-287"],"published":"2025-02-24T18:37:14Z","modified":"2026-10-28T02:31:09Z","exploits":[{"source":"nuclei","id":"CVE-2025-27112","title":"Navidrome \u003c=0.54.5 - Authentication Bypass in Subsonic API","type":"detection template","url":"https://github.com/projectdiscovery/nuclei-templates/blob/main/http/cves/2025/CVE-2025-27112.yaml"}],"fixes":[{"ecosystem":"Go","package":"github.com/navidrome/navidrome","fixed_in":["0.54.5"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"Go","package":"github.com/navidrome/navidrome","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0.52.0"},{"fixed":"0.54.5"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/navidrome/navidrome","ranges":[{"type":"SEMVER","events":[{"introduced":"0.52.0"},{"fixed":"0.54.5"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/navidrome/navidrome","ranges":[{"type":"SEMVER","events":[{"introduced":"0.52.0"},{"fixed":"0.54.5"}]}]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"govulncheck-vulndb","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.0.20250312T181707-1.1"}]}],"bundled":31}],"products":[{"vendor":"navidrome","product":"navidrome"}],"references":[{"url":"https://github.com/navidrome/navidrome/security/advisories/GHSA-c3p4-vm8f-386p","tags":["x_refsource_CONFIRM","Exploit","Vendor Advisory","advisory","web"]},{"url":"https://github.com/navidrome/navidrome/commit/287079a9e409fb6b9708ca384d7daa7b5185c1a0","tags":["x_refsource_MISC","Patch","fix","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-27112","tags":["advisory"]},{"url":"https://github.com/navidrome/navidrome/commit/09ae41a2da66264c60ef307882362d2e2d8d8b89","tags":["web","fix"]},{"url":"https://github.com/advisories/GHSA-c3p4-vm8f-386p"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/27xxx/CVE-2025-27112.json","tags":["advisory"]},{"url":"https://github.com/navidrome/navidrome","tags":["package"]},{"url":"","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2024-57603","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2024-57604","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-0426","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-1243","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-1293","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-1412","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-20051","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-22870","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-22952","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-23387","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-23388","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-23389","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-24016","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-24526","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-24806","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-24976","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-25196","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-25199","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-25204","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-25279","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-25294","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27088","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27090","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27100","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27112","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27144","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27155","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27414","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27421","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27507","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27509","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2025-27112","title":"Navidrome has authentication bypass in Subsonic API with non-existent username","description":"Navidrome is an open source web-based music collection server and streamer. Starting in version 0.52.0 and prior to version 0.54.5, in certain Subsonic API endpoints, 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. 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 with a \"permission denied\" error due to insufficient permissions, limiting the impact to unauthorized viewing of information. Version 0.54.5 contains a patch for this issue.","status":"published","published":"2025-02-24T18:37:14.221Z","modified":"2025-02-24T19:00:44.866Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N","level":"medium","assessor":"cna"}],"cwes":["CWE-287"],"updated_at":"2026-11-02T14:32:42.411662Z"}],"euvd":[{"id":"EUVD-2025-5077","description":"Navidrome is an open source web-based music collection server and streamer. Starting in version 0.52.0 and prior to version 0.54.5, in certain Subsonic API endpoints, 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. 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 with a \"permission denied\" error due to insufficient permissions, limiting the impact to unauthorized viewing of information. Version 0.54.5 contains a patch for this issue.","status":"published","published":"2025-02-24T18:37:14Z","modified":"2025-02-24T19:00:44Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N","level":"medium"}],"updated_at":"2026-11-02T20:53:25.075327Z"}],"ghsa":[{"id":"GHSA-c3p4-vm8f-386p","title":"Navidrome allows an authentication bypass in Subsonic API with non-existent username","description":"### Summary\n\nIn 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.\n\n### Details\n\nA 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.\n\n### Proof of Concept (PoC)\n\n1. Generate a random salt:\n\n   ```javascript\n   // e.g., salt = \"x1vbudn1m6d\"\n   Math.random().toString(36).substring(2, 15)\n   ```\n\n2. Calculate the MD5 hash of an empty password plus the salt:\n\n   ```shell\n   # Using the example salt above\n   echo -n \"x1vbudn1m6d\" | md5sum\n   81f0c0fb5d202ab0d012e6eaeb722d79  -\n   ```\n\n3. Send a request specifying a fake user, with the hash and salt values:\n\n   ```\n   GET https://[host]/rest/getPlaylists?u=FakeUser\u0026t=81f0c0fb5d202ab0d012e6eaeb722d79\u0026s=x1vbudn1m6d\u0026v=1.16.1\u0026c=castafiore\u0026f=json\n   ```\n\n### Impact\n\nAn 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.","status":"published","published":"2025-02-25T17:49:07Z","modified":"2025-02-25T17:49:09Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N","level":"medium"}],"cwes":["CWE-287"],"updated_at":"2026-11-02T14:38:32.275316Z"}],"nvd":[{"id":"CVE-2025-27112","description":"Navidrome is an open source web-based music collection server and streamer. Starting in version 0.52.0 and prior to version 0.54.5, in certain Subsonic API endpoints, 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. 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 with a \"permission denied\" error due to insufficient permissions, limiting the impact to unauthorized viewing of information. Version 0.54.5 contains a patch for this issue.","status":"published","published":"2025-02-24T19:15:14.597Z","modified":"2026-06-17T09:03:03.513Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"medium","assessor":"secondary"},{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N","level":"medium","assessor":"primary"}],"cwes":["CWE-287"],"updated_at":"2026-11-02T14:10:51.871789Z"}],"osv":[{"id":"CVE-2025-27112","title":"Navidrome has authentication bypass in Subsonic API with non-existent username","description":"Navidrome is an open source web-based music collection server and streamer. Starting in version 0.52.0 and prior to version 0.54.5, in certain Subsonic API endpoints, 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. 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 with a \"permission denied\" error due to insufficient permissions, limiting the impact to unauthorized viewing of information. Version 0.54.5 contains a patch for this issue.","status":"published","published":"2025-02-24T18:37:14.221Z","modified":"2026-10-28T02:31:09.721937908Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N","level":"medium"}],"cwes":["CWE-287"],"updated_at":"2026-11-02T15:44:47.386092Z"},{"id":"GHSA-c3p4-vm8f-386p","title":"Navidrome allows an authentication bypass in Subsonic API with non-existent username","description":"### Summary\n\nIn 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.\n\n### Details\n\nA 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.\n\n### Proof of Concept (PoC)\n\n1. Generate a random salt:\n\n   ```javascript\n   // e.g., salt = \"x1vbudn1m6d\"\n   Math.random().toString(36).substring(2, 15)\n   ```\n\n2. Calculate the MD5 hash of an empty password plus the salt:\n\n   ```shell\n   # Using the example salt above\n   echo -n \"x1vbudn1m6d\" | md5sum\n   81f0c0fb5d202ab0d012e6eaeb722d79  -\n   ```\n\n3. Send a request specifying a fake user, with the hash and salt values:\n\n   ```\n   GET https://[host]/rest/getPlaylists?u=FakeUser\u0026t=81f0c0fb5d202ab0d012e6eaeb722d79\u0026s=x1vbudn1m6d\u0026v=1.16.1\u0026c=castafiore\u0026f=json\n   ```\n\n### Impact\n\nAn 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.","status":"published","published":"2025-02-25T17:49:07Z","modified":"2025-03-03T19:42:03.959698Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N","level":"medium"}],"cwes":["CWE-287"],"updated_at":"2026-11-02T15:46:44.571161Z"},{"id":"GO-2025-3484","title":"Navidrome allows an authentication bypass in Subsonic API with non-existent username in github.com/navidrome/navidrome","description":"Navidrome allows an authentication bypass in Subsonic API with non-existent username in github.com/navidrome/navidrome","status":"published","published":"2025-03-03T19:22:09Z","modified":"2026-03-03T04:56:18.664578Z","updated_at":"2026-11-02T15:47:01.728182Z"},{"id":"openSUSE-SU-2025:14889-1","title":"govulncheck-vulndb-0.0.20250312T181707-1.1 on GA media","description":"These are all security issues fixed in the govulncheck-vulndb-0.0.20250312T181707-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2025-03-13T00:00:00Z","modified":"2026-02-04T04:02:14.938926Z","updated_at":"2026-11-02T16:58:37.399567Z"}]}}
