<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://cve.radiocsirt.org/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-21T16:08:35.989493+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>csirt@opendfir.org</email>
  </author>
  <link href="https://cve.radiocsirt.org" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/cve-2026-40353</id>
    <title>CVE-2026-40353 — wger: Stored XSS via Unescaped License Attribution Fields</title>
    <updated>2026-10-21T16:08:35.999691+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> wger-project wger</p>
<p>wger is a free, open-source workout and fitness manager. In versions 2.5 and below, the attribution_link property in AbstractLicenseModel constructs HTML by directly interpolating user-controlled license fields (such as license_author) without escaping, and templates render the result using Django's |safe filter. An authenticated user can create an ingredient with a malicious license_author value containing JavaScript, which executes in the browser of any visitor viewing the ingredient page, resulting in stored XSS. This issue has been fixed in version 2.5.</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/cve-2026-40353"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/pysec-2026-3419</id>
    <title>PYSEC-2026-3419 — wger has Stored XSS via Unescaped License Attribution Fields</title>
    <updated>2026-10-21T16:08:35.999767+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: wger</p>
<p># Stored XSS via Unescaped License Attribution Fields</p>
<p>## Summary</p>
<p>The `AbstractLicenseModel.attribution_link` property in `wger/utils/models.py` constructs HTML strings by directly interpolating user-controlled fields (`license_author`, `license_title`, `license_object_url`, `license_author_url`, `license_derivative_source_url`) without any escaping. The resulting HTML is rendered in the ingredient view template using Django's `|safe` filter, which disables auto-escaping. An authenticated user can create an ingredient with a malicious `license_author` value containing JavaScript, which executes when any user (including unauthenticated visitors) views the ingredient page.</p>
<p>## Severity</p>
<p>**High** (CVSS 3.1: ~7.6)</p>
<p>- Low-privilege attacker (any authenticated non-temporary user)
- Stored XSS — persists in database
- Triggers on a public page (no authentication needed to view)
- Can steal session cookies, perform actions as other users, redirect to phishing</p>
<p>## CWE</p>
<p>CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')</p>
<p>## Affected Components</p>
<p>### Vulnerable Property
**File:** `wger/utils/models.py:88-110`</p>
<p>```python
@property
def attribution_link(self):
    out = ''
    if self.license_object_url:
        out += f'&lt;a href="{self.license_object_url}"&gt;{self.license_title}&lt;/a&gt;'
    else:
        out += self.license_title  # NO ESCAPING
    out += ' by '
    if self.license_author_url:
        out += f'&lt;a href="{self.license_author_url}"&gt;{self.…</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/pysec-2026-3419"/>
  </entry>
</feed>
