Skip to content
Heist/ feed
Back to feed
High

RELATE Vulnerable to Stored XSS via Unprivileged User Profile

Type: advisorySources: OSV

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.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-42197
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 18:53 UTC · Revision 1

Source evidence

RELATE Vulnerable to Stored XSS via Unprivileged User Profile

core-osv · Original source

Published 27 May 2026, 18:30 UTC

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.

osv:CVE-2026-42197
Complete source record
{
  "id": "0863ddf90413af4d151abafc256dd7ac545305469387f9dfd8ad9f61fbfebf1b",
  "url": "https://osv.dev/vulnerability/CVE-2026-42197",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "RELATE Vulnerable to Stored XSS via Unprivileged User Profile",
    "summary": "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.",
    "evidence": "osv:CVE-2026-42197",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-42197",
      "aliases": [
        "CVE-2026-42197",
        "GHSA-37xm-vhx8-g6w3"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/inducer/relate",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "555f0efb1c5bd7531c07cd73724d7e566a81f620"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "555f0efb1c5bd7531c07cd73724d7e566a81f620"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "555f0efb1c5bd7531c07cd73724d7e566a81f620"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-42197.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:31.696182037Z",
      "provider": "osv",
      "references": [
        "https://github.com/inducer/relate/blob/550b8c54eb4d5f3e5f6698dcba361bf34d715599/course/admin.py#L347-L368",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/42xxx/CVE-2026-42197.json",
        "https://github.com/inducer/relate/security/advisories/GHSA-37xm-vhx8-g6w3",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-42197",
        "https://github.com/inducer/relate/commit/555f0efb1c5bd7531c07cd73724d7e566a81f620"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-79"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/42xxx/CVE-2026-42197.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-42197",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 498577,
  "published_at": "2026-05-27T18:30:27.258+00:00"
}