CVE-2026-42052
beets is Vulnerable to XSS
Beets is the media library management system. Prior to version 2.10.0, the bundled web UI uses Underscore template interpolation mode <%= ... %> for untrusted metadata fields. In this runtime, <%= ... %> is raw insertion and HTML escaping is only performed by <%- ... %>. Rendered output is then inserted with .html(...), allowing attacker-controlled markup to become active DOM. This issue has been patched in version 2.10.0.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Passive
What an attacker can affect
- Confidentiality
- None
- Integrity
- High
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
6.0
beets is Vulnerable to XSS
Beets is the media library management system. Prior to version 2.10.0, the bundled web UI uses Underscore template interpolation mode <%= ... %> for untrusted metadata fields. In this runtime, <%= ... %> is raw insertion and HTML escaping is only performed by <%- ... %>. Rendered output is then inserted with .html(...), allowing attacker-controlled markup to become active DOM. This issue has been patched in version 2.10.0.
- Record
CVE-2026-42052- CVSS 4.0
- 6.0 Medium
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-79
- Updated
- 2026-11-02
EUVDEUVD-2026-27055
6.0
Beets is the media library management system. Prior to version 2.10.0, the bundled web UI uses Underscore template interpolation mode <%= ... %> for untrusted metadata fields. In this runtime, <%= ... %> is raw insertion and HTML escaping is only performed by <%- ... %>. Rendered output is then inserted with .html(...), allowing attacker-controlled markup to become active DOM. This issue has been patched in version 2.10.0.
- Record
EUVD-2026-27055- CVSS 4.0
- 6.0 Medium
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-3gxm-wfjx-m847
6.0
beets has a Cross-site Scripting vulnerability
During code logic analyis, an area that may lead to unintended behavior under specific conditions was discovered.
Overview
- Verified Version:
80cd21554124da07d17a4f962c7d770a4f70d0f2 - Vulnerability Type: Stored XSS
- Affected Location:
beetsplug/web/templates/index.html:42 - Trigger Scenario: Metadata fields such as
title,lyrics, orcommentsare rendered with raw template interpolation and inserted into DOM via.html(...).
Root Cause
The bundled web UI uses Underscore template interpolation mode <%= ... %> for untrusted metadata fields. In this runtime, <%= ... %> is raw insertion and HTML escaping is only performed by <%- ... %>. Rendered output is then inserted with .html(...), allowing attacker-controlled markup to become active DOM.
Source-to-Sink Chain
- Source (attacker-controlled input)
- Item metadata values (for example
title,lyrics,comments) can contain attacker HTML payload.
- Data flow
- Templates in
beetsplug/web/templates/index.html:42-46,87-91render metadata with<%= ... %>. - Underscore runtime defines
<%= ... %>as raw interpolation (beetsplug/web/static/underscore.js:890-907).
- Sink (security-sensitive action)
- Frontend inserts rendered template output into DOM via
$(this.el).html(this.template(this.model.toJSON()));inbeetsplug/web/static/beets.js:182,208,220.
Exploitation Preconditions
- Victim opens the web UI page that renders attacker-controlled metadata.
- Metadata includes executable HTML/JS payload.
Risk
Stored payload executes in the web UI context and can perform actions available to that origin.
Impact
Attacker can run arbitrary JavaScript in the victim browser, exfiltrate viewable data, and perform UI-driven actions as the victim session.
Remediation
- Replace raw interpolation
<%= ... %>with escaped output<%- ... %>for untrusted fields. - Avoid
.html(...)for untrusted template output; use text-safe rendering. - Sanitize metadata values on ingest and before rendering, including attribute contexts.
- Record
GHSA-3gxm-wfjx-m847- CVSS 4.0
- 6.0 Medium
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:H/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 - Weakness
- CWE-79
- Updated
- 2026-11-02
NVD
6.0
Beets is the media library management system. Prior to version 2.10.0, the bundled web UI uses Underscore template interpolation mode <%= ... %> for untrusted metadata fields. In this runtime, <%= ... %> is raw insertion and HTML escaping is only performed by <%- ... %>. Rendered output is then inserted with .html(...), allowing attacker-controlled markup to become active DOM. This issue has been patched in version 2.10.0.
- Record
CVE-2026-42052- CVSS 4.0
- 6.0 Medium
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:H/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 - Weakness
- CWE-79
- Updated
- 2026-11-02
OSV
6.0
beets is Vulnerable to XSS
Beets is the media library management system. Prior to version 2.10.0, the bundled web UI uses Underscore template interpolation mode <%= ... %> for untrusted metadata fields. In this runtime, <%= ... %> is raw insertion and HTML escaping is only performed by <%- ... %>. Rendered output is then inserted with .html(...), allowing attacker-controlled markup to become active DOM. This issue has been patched in version 2.10.0.
- Record
CVE-2026-42052- CVSS 4.0
- 6.0 Medium
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-79
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-42052
6.0
Beets is the media library management system. Prior to version 2.10.0, the bundled web UI uses Underscore template interpolation mode <%= ... %> for untrusted metadata fields. In this runtime, <%= ... %> is raw insertion and HTML escaping is only performed by <%- ... %>. Rendered output is then inserted with .html(...), allowing attacker-controlled markup to become active DOM. This issue has been patched in version 2.10.0.
- Record
DEBIAN-CVE-2026-42052- CVSS 4.0
- 6.0 Medium
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:H/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 - Updated
- 2026-11-02
Show 6 moreShow less
OSVGHSA-3gxm-wfjx-m847
6.0
beets has a Cross-site Scripting vulnerability
During code logic analyis, an area that may lead to unintended behavior under specific conditions was discovered.
Overview
- Verified Version:
80cd21554124da07d17a4f962c7d770a4f70d0f2 - Vulnerability Type: Stored XSS
- Affected Location:
beetsplug/web/templates/index.html:42 - Trigger Scenario: Metadata fields such as
title,lyrics, orcommentsare rendered with raw template interpolation and inserted into DOM via.html(...).
Root Cause
The bundled web UI uses Underscore template interpolation mode <%= ... %> for untrusted metadata fields. In this runtime, <%= ... %> is raw insertion and HTML escaping is only performed by <%- ... %>. Rendered output is then inserted with .html(...), allowing attacker-controlled markup to become active DOM.
Source-to-Sink Chain
- Source (attacker-controlled input)
- Item metadata values (for example
title,lyrics,comments) can contain attacker HTML payload.
- Data flow
- Templates in
beetsplug/web/templates/index.html:42-46,87-91render metadata with<%= ... %>. - Underscore runtime defines
<%= ... %>as raw interpolation (beetsplug/web/static/underscore.js:890-907).
- Sink (security-sensitive action)
- Frontend inserts rendered template output into DOM via
$(this.el).html(this.template(this.model.toJSON()));inbeetsplug/web/static/beets.js:182,208,220.
Exploitation Preconditions
- Victim opens the web UI page that renders attacker-controlled metadata.
- Metadata includes executable HTML/JS payload.
Risk
Stored payload executes in the web UI context and can perform actions available to that origin.
Impact
Attacker can run arbitrary JavaScript in the victim browser, exfiltrate viewable data, and perform UI-driven actions as the victim session.
Remediation
- Replace raw interpolation
<%= ... %>with escaped output<%- ... %>for untrusted fields. - Avoid
.html(...)for untrusted template output; use text-safe rendering. - Sanitize metadata values on ingest and before rendering, including attribute contexts.
- Record
GHSA-3gxm-wfjx-m847- CVSS 4.0
- 6.0 Medium
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:H/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 - Weakness
- CWE-79
- Updated
- 2026-11-02
OSVPYSEC-2026-2397
6.0
beets has a Cross-site Scripting vulnerability
During code logic analyis, an area that may lead to unintended behavior under specific conditions was discovered.
Overview
- Verified Version:
80cd21554124da07d17a4f962c7d770a4f70d0f2 - Vulnerability Type: Stored XSS
- Affected Location:
beetsplug/web/templates/index.html:42 - Trigger Scenario: Metadata fields such as
title,lyrics, orcommentsare rendered with raw template interpolation and inserted into DOM via.html(...).
Root Cause
The bundled web UI uses Underscore template interpolation mode <%= ... %> for untrusted metadata fields. In this runtime, <%= ... %> is raw insertion and HTML escaping is only performed by <%- ... %>. Rendered output is then inserted with .html(...), allowing attacker-controlled markup to become active DOM.
Source-to-Sink Chain
- Source (attacker-controlled input)
- Item metadata values (for example
title,lyrics,comments) can contain attacker HTML payload.
- Data flow
- Templates in
beetsplug/web/templates/index.html:42-46,87-91render metadata with<%= ... %>. - Underscore runtime defines
<%= ... %>as raw interpolation (beetsplug/web/static/underscore.js:890-907).
- Sink (security-sensitive action)
- Frontend inserts rendered template output into DOM via
$(this.el).html(this.template(this.model.toJSON()));inbeetsplug/web/static/beets.js:182,208,220.
Exploitation Preconditions
- Victim opens the web UI page that renders attacker-controlled metadata.
- Metadata includes executable HTML/JS payload.
Risk
Stored payload executes in the web UI context and can perform actions available to that origin.
Impact
Attacker can run arbitrary JavaScript in the victim browser, exfiltrate viewable data, and perform UI-driven actions as the victim session.
Remediation
- Replace raw interpolation
<%= ... %>with escaped output<%- ... %>for untrusted fields. - Avoid
.html(...)for untrusted template output; use text-safe rendering. - Sanitize metadata values on ingest and before rendering, including attribute contexts.
- Record
PYSEC-2026-2397- CVSS 4.0
- 6.0 Medium
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:H/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 - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-42052
6.0
Beets is the media library management system. Prior to version 2.10.0, the bundled web UI uses Underscore template interpolation mode <%= ... %> for untrusted metadata fields. In this runtime, <%= ... %> is raw insertion and HTML escaping is only performed by <%- ... %>. Rendered output is then inserted with .html(...), allowing attacker-controlled markup to become active DOM. This issue has been patched in version 2.10.0.
- Record
UBUNTU-CVE-2026-42052- CVSS 4.0
- 6.0 Medium
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N - Updated
- 2026-11-02
OSVopenSUSE-SU-2026:10865-1 No score
beets-2.11.0-1.1 on GA media
These are all security issues fixed in the beets-2.11.0-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:10865-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:21383-1 No score
Security update for beets
This update for beets fixes the following issues:
Changes in beets:
- CVE-2026-42052: Prior to version 2.10.0, the bundled web UI uses Underscore template interpolation mode <%= ... %> for untrusted metadata fields. (boo#1263988)
- Record
openSUSE-SU-2026:21383-1- Updated
- 2026-11-02
OSVUSN-8747-1 No score
beets vulnerability
It was discovered that Beets incorrectly escaped untrusted media metadata in its web interface. An attacker could possibly use this issue to inject arbitrary HTML or execute arbitrary JavaScript code in a user's browser.
- Record
USN-8747-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
beetsPyPI |
before 2.10.0 | 2.10.0 |
beetsDebian:12 |
before 1.6.0-4+deb12u1, plus listed versions 1.6.0-4 |
1.6.0-4+deb12u1 |
beetsDebian:13 |
before 2.2.0-3+deb13u1, plus listed versions 2.2.0-3 |
2.2.0-3+deb13u1 |
beetsDebian:14 |
before 2.11.0-1, plus listed versions 2.2.0-32.5.1-12.5.1-22.5.1-32.5.1-42.6.2-12.7.1-12.8.0-1 |
2.11.0-1 |
beetsPyPI |
before 2.10.0, plus listed versions 1.0.01.0b11.0b101.0b111.0b12 Show 45 moreShow less1.0b131.0b141.0b151.0b21.0b31.0b41.0b51.0b61.0b71.0b81.0b91.0rc11.0rc21.1.01.2.01.2.11.2.21.3.01.3.11.3.101.3.111.3.121.3.131.3.141.3.151.3.161.3.171.3.181.3.191.3.21.3.31.3.41.3.51.3.61.3.71.3.81.3.91.4.01.4.11.4.21.4.31.4.41.4.51.4.61.4.7 |
2.10.0 |
beetsUbuntu:Pro:16.04:LTS |
before 1.3.8+dfsg-2ubuntu0.1~esm1, plus listed versions 1.3.8+dfsg-2 |
1.3.8+dfsg-2ubuntu0.1~esm1 |
beetsUbuntu:Pro:18.04:LTS |
before 1.4.6-2ubuntu0.1~esm1, plus listed versions 1.3.19-2.11.4.6-2 |
1.4.6-2ubuntu0.1~esm1 |
beetsUbuntu:Pro:20.04:LTS |
before 1.4.9-4ubuntu0.1~esm1, plus listed versions 1.4.7-21.4.7-2ubuntu11.4.9-21.4.9-4 |
1.4.9-4ubuntu0.1~esm1 |
beetsUbuntu:Pro:22.04:LTS |
before 1.6.0-1ubuntu0.1~esm1, plus listed versions 1.4.9-71.5.0-11.6.0-1 |
1.6.0-1ubuntu0.1~esm1 |
beetsUbuntu:Pro:24.04:LTS |
before 1.6.0-8ubuntu0.1~esm1, plus listed versions 1.6.0-41.6.0-71.6.0-8 |
1.6.0-8ubuntu0.1~esm1 |
Show 4 moreShow less
| Package | Affected | Fixed |
|---|---|---|
beetsUbuntu:25.10 |
All versions, plus listed versions 2.2.0-2ubuntu12.2.0-3 |
None known |
beetsUbuntu:Pro:26.04:LTS |
before 2.5.1-4ubuntu0.1~esm1, plus listed versions 2.2.0-32.5.1-4 |
2.5.1-4ubuntu0.1~esm1 |
beetsopenSUSE:Tumbleweed |
before 2.11.0-1.1 | 2.11.0-1.1 |
beetsopenSUSE:Leap 16.0 |
before 2.2.0-bp160.2.1 | 2.2.0-bp160.2.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-42052 is a medium vulnerability (CVSS 6.0) in Beetbox Beets, published April 29, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.30%, the 22nd percentile. Fixed in beets 2.10.0.
References
github.com/beetbox/beets/security/advisories/GHSA-3gxm-wfjx-m847
github.com/beetbox/beets/releases/tag/v2.10.0
lists.debian.org/debian-lts-announce/2026/06/msg00030.html
nvd.nist.gov/vuln/detail/CVE-2026-42052
github.com/advisories/GHSA-3gxm-wfjx-m847
github.com/CVEProject/cvelistV5/tree/main/cves/2026/42xxx/CVE-2026-42052.json
Left out here: 20 versions. The JSON record has them.