{"id":"CVE-2026-91123","aliases":["BIT-discourse-2026-91123","EUVD-2026-86300","GHSA-6pwj-wgg8-4rjc"],"status":"published","title":"Discourse: Reject literal backslash path separators in iframe src traversal guard","description":"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.","severity":{"version":"3.1","score":7.2,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-10","score":0.00287,"percentile":0.2141,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-22"],"published":"2026-09-24T16:54:59Z","modified":"2026-10-28T02:30:32Z","fixes":[{"ecosystem":"Bitnami","package":"discourse","fixed_in":["2026.8.0"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Bitnami","package":"discourse","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"2026.8.0"}]}]}],"products":[{"vendor":"discourse","product":"discourse"}],"references":[{"url":"https://github.com/discourse/discourse/security/advisories/GHSA-6pwj-wgg8-4rjc","tags":["x_refsource_CONFIRM","web","advisory"]},{"url":"https://github.com/discourse/discourse/pull/42882","tags":["x_refsource_MISC","web","fix"]},{"url":"https://github.com/discourse/discourse/commit/042d7b159beda4f74d23e245e8b2e396d9ff8318","tags":["x_refsource_MISC","web","fix"]},{"url":"https://github.com/discourse/discourse/commit/097ce5600a2d74d9c68e57974597ab2684bd2a24","tags":["x_refsource_MISC","web","fix"]},{"url":"https://github.com/discourse/discourse/commit/0b5a27e689925edce9ba9b14110022435d2b94be","tags":["x_refsource_MISC","web","fix"]},{"url":"https://github.com/discourse/discourse/commit/142f5155ad8e56ddb8012c4e70c69a03dedc0579","tags":["x_refsource_MISC","web","fix"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-91123","tags":["web","advisory"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/91xxx/CVE-2026-91123.json","tags":["advisory"]}],"sources":{"cve":[{"id":"CVE-2026-91123","title":"Discourse: Reject literal backslash path separators in iframe src traversal guard","description":"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.","status":"published","published":"2026-09-24T16:54:59.357Z","modified":"2026-09-24T17:11:34.752Z","cvss":[{"version":"3.1","score":7.2,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N","level":"high","assessor":"cna"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T14:19:53.115938Z"}],"euvd":[{"id":"EUVD-2026-86300","description":"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.","status":"published","published":"2026-09-24T16:54:59Z","modified":"2026-09-24T17:11:34Z","cvss":[{"version":"3.1","score":7.2,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N","level":"high"}],"updated_at":"2026-11-02T17:27:56.686358Z"}],"nvd":[{"id":"CVE-2026-91123","description":"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.","status":"published","published":"2026-09-24T17:17:08.56Z","modified":"2026-09-24T18:19:06.883Z","cvss":[{"version":"3.1","score":7.2,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N","level":"high","assessor":"secondary"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T14:12:51.036099Z"}],"osv":[{"id":"CVE-2026-91123","title":"Discourse: Reject literal backslash path separators in iframe src traversal guard","description":"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.","status":"published","published":"2026-09-24T16:54:59.357Z","modified":"2026-10-28T02:30:32.458966338Z","cvss":[{"version":"3.1","score":7.2,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N","level":"high"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T15:45:20.269367Z"},{"id":"BIT-discourse-2026-91123","title":"Discourse: Reject literal backslash path separators in iframe src traversal guard","description":"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.","status":"published","published":"2026-10-01T09:29:30.84Z","modified":"2026-10-01T10:10:49.528015811Z","updated_at":"2026-11-02T15:28:29.152062Z"}]}}
