CVE-2026-42197
RELATE Vulnerable to Stored XSS via Unprivileged User Profile
RELATE is a web-based courseware package. Versions prior to commit 555f0efb1c5bd7531c07cd73724d7e566a81f620 have a stored cross-site scripting vulnerability that allows any enrolled student to execute arbitrary JavaScript in an administrator's browser session, potentially leading to full admin account takeover. The get_user() method in ParticipationAdmin renders user-controlled input using mark_safe combined with Python's % string formatting. This bypasses Django's automatic HTML escaping entirely. The value returned by get_full_name is derived directly from the first_name and last_name fields of the User model. These fields are freely editable by any authenticated user through the profile page (/profile/) with no sanitization applied. When an admin views the Participation list in the Django admin panel, the unsanitized value is rendered directly into the HTML response, causing the injected script to execute in the admin's browser. Commit 555f0efb1c5bd7531c07cd73724d7e566a81f620 fixes the issue.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- Low
- User interaction
- Required
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
8.7
RELATE Vulnerable to Stored XSS via Unprivileged User Profile
RELATE is a web-based courseware package. Versions prior to commit 555f0efb1c5bd7531c07cd73724d7e566a81f620 have a stored cross-site scripting vulnerability that allows any enrolled student to execute arbitrary JavaScript in an administrator's browser session, potentially leading to full admin account takeover. The get_user() method in ParticipationAdmin renders user-controlled input using mark_safe combined with Python's % string formatting. This bypasses Django's automatic HTML escaping entirely. The value returned by get_full_name is derived directly from the first_name and last_name fields of the User model. These fields are freely editable by any authenticated user through the profile page (/profile/) with no sanitization applied. When an admin views the Participation list in the Django admin panel, the unsanitized value is rendered directly into the HTML response, causing the injected script to execute in the admin's browser. Commit 555f0efb1c5bd7531c07cd73724d7e566a81f620 fixes the issue.
- Record
CVE-2026-42197- CVSS 3.1
- 8.7 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
EUVDEUVD-2026-32627
8.7
RELATE is a web-based courseware package. Versions prior to commit 555f0efb1c5bd7531c07cd73724d7e566a81f620 have a stored cross-site scripting vulnerability that allows any enrolled student to execute arbitrary JavaScript in an administrator's browser session, potentially leading to full admin account takeover. The get_user() method in ParticipationAdmin renders user-controlled input using mark_safe combined with Python's % string formatting. This bypasses Django's automatic HTML escaping entirely. The value returned by get_full_name is derived directly from the first_name and last_name fields of the User model. These fields are freely editable by any authenticated user through the profile page (/profile/) with no sanitization applied. When an admin views the Participation list in the Django admin panel, the unsanitized value is rendered directly into the HTML response, causing the injected script to execute in the admin's browser. Commit 555f0efb1c5bd7531c07cd73724d7e566a81f620 fixes the issue.
- Record
EUVD-2026-32627- CVSS 3.1
- 8.7 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N - Updated
- 2026-11-02
NVD
8.7
RELATE is a web-based courseware package. Versions prior to commit 555f0efb1c5bd7531c07cd73724d7e566a81f620 have a stored cross-site scripting vulnerability that allows any enrolled student to execute arbitrary JavaScript in an administrator's browser session, potentially leading to full admin account takeover. The get_user() method in ParticipationAdmin renders user-controlled input using mark_safe combined with Python's % string formatting. This bypasses Django's automatic HTML escaping entirely. The value returned by get_full_name is derived directly from the first_name and last_name fields of the User model. These fields are freely editable by any authenticated user through the profile page (/profile/) with no sanitization applied. When an admin views the Participation list in the Django admin panel, the unsanitized value is rendered directly into the HTML response, causing the injected script to execute in the admin's browser. Commit 555f0efb1c5bd7531c07cd73724d7e566a81f620 fixes the issue.
- Record
CVE-2026-42197- CVSS 3.1
- 8.7 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
OSV
8.7
RELATE Vulnerable to Stored XSS via Unprivileged User Profile
RELATE is a web-based courseware package. Versions prior to commit 555f0efb1c5bd7531c07cd73724d7e566a81f620 have a stored cross-site scripting vulnerability that allows any enrolled student to execute arbitrary JavaScript in an administrator's browser session, potentially leading to full admin account takeover. The get_user() method in ParticipationAdmin renders user-controlled input using mark_safe combined with Python's % string formatting. This bypasses Django's automatic HTML escaping entirely. The value returned by get_full_name is derived directly from the first_name and last_name fields of the User model. These fields are freely editable by any authenticated user through the profile page (/profile/) with no sanitization applied. When an admin views the Participation list in the Django admin panel, the unsanitized value is rendered directly into the HTML response, causing the injected script to execute in the admin's browser. Commit 555f0efb1c5bd7531c07cd73724d7e566a81f620 fixes the issue.
- Record
CVE-2026-42197- CVSS 3.1
- 8.7 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
Affected products
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-42197 is a high vulnerability (CVSS 8.7) in Inducer Relate, published May 27, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.31%, the 23rd percentile. No source names a fixed version.
References
github.com/inducer/relate/security/advisories/GHSA-37xm-vhx8-g6w3
github.com/inducer/relate/commit/555f0efb1c5bd7531c07cd73724d7e566a81f620
github.com/inducer/relate/blob/550b8c54eb4d5f3e5f6698dcba361bf34d715599/course/admin.py
github.com/CVEProject/cvelistV5/tree/main/cves/2026/42xxx/CVE-2026-42197.json
nvd.nist.gov/vuln/detail/CVE-2026-42197