Skip to content
Heist/ feed
Back to feed
High

Discourse: Reject literal backslash path separators in iframe src traversal guard

Type: advisorySources: OSV

Discourse is an open-source discussion platform. Prior to 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0, the iframe src traversal guard did not treat literal backslashes as path separators after decoded dot segments. A crafted source could therefore pass an allowed_iframes subpath check while browser URL normalization moved the iframe outside the intended allowed path. The resulting iframe could load content from a location that the administrator did not allow. This issue is fixed in versions 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-91123
Confirmed fixed CVEs
Not specified
Updated in this feed
4 Nov 2026, 02:13 UTC · Revision 1

Source evidence

Discourse: Reject literal backslash path separators in iframe src traversal guard

core-osv · Original source

Published 24 Sept 2026, 16:54 UTC

Discourse is an open-source discussion platform. Prior to 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0, the iframe src traversal guard did not treat literal backslashes as path separators after decoded dot segments. A crafted source could therefore pass an allowed_iframes subpath check while browser URL normalization moved the iframe outside the intended allowed path. The resulting iframe could load content from a location that the administrator did not allow. This issue is fixed in versions 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0.

osv:CVE-2026-91123
Complete source record
{
  "id": "d74c3f16a825d475f2ea56dcc65761fea4e6bf07f81d51390ff61896e6ef7847",
  "url": "https://osv.dev/vulnerability/CVE-2026-91123",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Discourse: Reject literal backslash path separators in iframe src traversal guard",
    "summary": "Discourse is an open-source discussion platform. Prior to 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0, the iframe src traversal guard did not treat literal backslashes as path separators after decoded dot segments. A crafted source could therefore pass an allowed_iframes subpath check while browser URL normalization moved the iframe outside the intended allowed path. The resulting iframe could load content from a location that the administrator did not allow. This issue is fixed in versions 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0.",
    "evidence": "osv:CVE-2026-91123",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-91123",
      "aliases": [
        "BIT-discourse-2026-91123",
        "CVE-2026-91123",
        "GHSA-6pwj-wgg8-4rjc"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/discourse/discourse",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "fb9247e04a826ab8e4d91168b3c4c839ec40bccc"
                },
                {
                  "introduced": "ded677e00beb0e9bae6e70b69582aecfb72b5477"
                },
                {
                  "fixed": "3ab62a8397926ed934b667a5db06284c45b4c774"
                },
                {
                  "introduced": "06d03da34c4ed09ea59f917f045ba250d2b6320d"
                },
                {
                  "fixed": "777cb880553b517bc9ae502e935a160332e48b78"
                },
                {
                  "introduced": "322d3c0ac6a8f133b3f82875e9dbbe310f638c1b"
                },
                {
                  "fixed": "e808d0853e013abf90e648e53ebd606c49ccb19f"
                },
                {
                  "fixed": "042d7b159beda4f74d23e245e8b2e396d9ff8318"
                },
                {
                  "fixed": "097ce5600a2d74d9c68e57974597ab2684bd2a24"
                },
                {
                  "fixed": "0b5a27e689925edce9ba9b14110022435d2b94be"
                },
                {
                  "fixed": "142f5155ad8e56ddb8012c4e70c69a03dedc0579"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2026.8.0"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "2026.7.0-latest"
                      },
                      {
                        "fixed": "2026.7.2"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "2026.6.0-latest"
                      },
                      {
                        "fixed": "2026.6.3"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "2026.1.0-latest"
                      },
                      {
                        "fixed": "2026.1.8"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "042d7b159beda4f74d23e245e8b2e396d9ff8318"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "097ce5600a2d74d9c68e57974597ab2684bd2a24"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "0b5a27e689925edce9ba9b14110022435d2b94be"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "142f5155ad8e56ddb8012c4e70c69a03dedc0579"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v2026.1.7",
            "v2026.7.1",
            "v2026.6.2",
            "v2026.1.6",
            "v2026.7.0",
            "v2026.6.1",
            "_gh-attach-assets",
            "v2026.1.5",
            "v2026.6.0",
            "v2026.7.0-latest",
            "v2026.6.0-latest",
            "v2026.1.4",
            "v2026.1.3",
            "v2026.1.2",
            "v2026.1.1",
            "v2026.1.0",
            "stable",
            "esr",
            "v2026.1.0-latest"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-91123.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:32.458966338Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/91xxx/CVE-2026-91123.json",
        "https://github.com/discourse/discourse/security/advisories/GHSA-6pwj-wgg8-4rjc",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-91123",
        "https://github.com/discourse/discourse/commit/042d7b159beda4f74d23e245e8b2e396d9ff8318",
        "https://github.com/discourse/discourse/commit/097ce5600a2d74d9c68e57974597ab2684bd2a24",
        "https://github.com/discourse/discourse/commit/0b5a27e689925edce9ba9b14110022435d2b94be",
        "https://github.com/discourse/discourse/commit/142f5155ad8e56ddb8012c4e70c69a03dedc0579",
        "https://github.com/discourse/discourse/pull/42882"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-22"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/91xxx/CVE-2026-91123.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-91123",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 499575,
  "published_at": "2026-09-24T16:54:59.357+00:00"
}