---
id: CVE-2017-20290
title: Discourse < 1.9.0.beta13 Reflected XSS via /email/unsubscribed
summary: >-
  Discourse 1.9.0.beta2 before 1.9.0.beta13 contains a reflected cross-site
  scripting vulnerability that allows unauthenticated attackers to inject
  scripts through the email parameter of /email/unsubscribed. Attackers can
  craft GET request…
severity: medium
cvss: 6.1
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N'
cvssSource: cna
cwe:
  - CWE-79
vendor: Discourse
product: Discourse
affected:
  - Discourse >= 1.9.0.beta2 < 1.9.0.beta13
published: '2026-10-22'
updated: '2026-10-22'
sourceUpdated: '2026-10-22T10:57:24.711Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2017-20290'
references:
  - url: 'https://github.com/discourse/discourse/commit/a6f2533d38'
    label: Fix Commit
  - url: 'https://github.com/discourse/discourse/commit/6e37f09b19'
    label: Introducing Commit
  - url: >-
      https://github.com/projectdiscovery/nuclei-templates/blob/main/http/vulnerabilities/other/discourse-xss.yaml
    label: Nuclei Template
  - url: >-
      https://www.vulncheck.com/advisories/discourse-1.9.0-beta13-reflected-xss-via-email-unsubscribed
    label: >-
      VulnCheck Advisory: Discourse < 1.9.0.beta13 Reflected XSS via
      /email/unsubscribed
tags:
  - cve.org
ingestedAt: '2026-10-22T11:37:02.345Z'
---

## Overview

Discourse 1.9.0.beta2 before 1.9.0.beta13 contains a reflected cross-site scripting vulnerability that allows unauthenticated attackers to inject scripts through the email parameter of /email/unsubscribed. Attackers can craft GET requests with SVG onload payloads, which unsubscribed.html.erb renders unescaped via html_safe, executing JavaScript in victims' browsers. Exploitation evidence was first observed by the Shadowserver Foundation on 2023-10-19.

## Affected

- `Discourse >= 1.9.0.beta2 < 1.9.0.beta13`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
