Skip to content
Heist/ feed
Back to feed
High

Discourse: Media uploads remain publicly accessible after category permissions are restricted

Type: advisorySources: OSV

Discourse is an open-source discussion platform. Prior to 2026.9.0, 2026.8.1, 2026.7.3, and 2026.1.9, sites with secure uploads enabled did not reconcile existing upload security metadata when a previously public category became read-restricted or when category permissions changed during a bulk import. Media and attachments uploaded while the category was public retained a public accessibility flag and remained reachable by anonymous users through their short upload URLs, including uploads associated with deleted topics. This issue is fixed in versions 2026.9.0, 2026.8.1, 2026.7.3, and 2026.1.9.

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

Source evidence

Discourse: Media uploads remain publicly accessible after category permissions are restricted

core-osv · Original source

Published 14 Oct 2026, 15:37 UTC

Discourse is an open-source discussion platform. Prior to 2026.9.0, 2026.8.1, 2026.7.3, and 2026.1.9, sites with secure uploads enabled did not reconcile existing upload security metadata when a previously public category became read-restricted or when category permissions changed during a bulk import. Media and attachments uploaded while the category was public retained a public accessibility flag and remained reachable by anonymous users through their short upload URLs, including uploads associated with deleted topics. This issue is fixed in versions 2026.9.0, 2026.8.1, 2026.7.3, and 2026.1.9.

osv:CVE-2026-91157
Complete source record
{
  "id": "3842723c789a3c8bfcfbf3ee914f95f76463b5efde8803d1ebdd3a0d8c307250",
  "url": "https://osv.dev/vulnerability/CVE-2026-91157",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Discourse: Media uploads remain publicly accessible after category permissions are restricted",
    "summary": "Discourse is an open-source discussion platform. Prior to 2026.9.0, 2026.8.1, 2026.7.3, and 2026.1.9, sites with secure uploads enabled did not reconcile existing upload security metadata when a previously public category became read-restricted or when category permissions changed during a bulk import. Media and attachments uploaded while the category was public retained a public accessibility flag and remained reachable by anonymous users through their short upload URLs, including uploads associated with deleted topics. This issue is fixed in versions 2026.9.0, 2026.8.1, 2026.7.3, and 2026.1.9.",
    "evidence": "osv:CVE-2026-91157",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-91157",
      "aliases": [
        "BIT-discourse-2026-91157",
        "CVE-2026-91157",
        "GHSA-298h-xgw6-4pv3"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/discourse/discourse",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "e2d25e72a6ee5b3ddb98c86b8e58f7445b363ae2"
                },
                {
                  "introduced": "ded677e00beb0e9bae6e70b69582aecfb72b5477"
                },
                {
                  "fixed": "8a4ea10470790eba93f5dec65f3cacb0ffae1191"
                },
                {
                  "introduced": "fb9247e04a826ab8e4d91168b3c4c839ec40bccc"
                },
                {
                  "fixed": "1dce604a018931ff85572ce9815f7637e843f08c"
                },
                {
                  "introduced": "eb24206333333761c2da650072c053266d7ca388"
                },
                {
                  "fixed": "eb24206333333761c2da650072c053266d7ca388"
                },
                {
                  "fixed": "16017732981fdb3ee65d7b3c69c573610bf02aab"
                },
                {
                  "fixed": "83f5f9f1df7ddc79ec0950e1b2038ba659635708"
                },
                {
                  "fixed": "98f1c021d0e956cded5239a5d8a6afe2b9e1b7e7"
                },
                {
                  "fixed": "b2fb98394b2636b29e850f06b0029f8ca8b48458"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2026.1.9"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "2026.7.0-latest"
                      },
                      {
                        "fixed": "2026.7.3"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "2026.8.0-latest"
                      },
                      {
                        "fixed": "2026.8.1"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "2026.9.0-latest"
                      },
                      {
                        "fixed": "2026.9.0"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "16017732981fdb3ee65d7b3c69c573610bf02aab"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "83f5f9f1df7ddc79ec0950e1b2038ba659635708"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "98f1c021d0e956cded5239a5d8a6afe2b9e1b7e7"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "b2fb98394b2636b29e850f06b0029f8ca8b48458"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v2026.1.8",
            "v2026.7.2",
            "v2026.8.0",
            "v2026.1.7",
            "v2026.7.1",
            "v2026.8.0-latest.1",
            "v2026.1.6",
            "v2026.7.0",
            "v2026.8.0-latest",
            "_gh-attach-assets",
            "v2026.1.5",
            "v2026.7.0-latest",
            "v2026.1.4",
            "v2026.1.3",
            "v2026.1.2",
            "v2026.1.1",
            "v2026.1.0",
            "stable",
            "esr",
            "v2026.1.0-latest",
            "v2025.12.0-latest",
            "v3.6.0.beta2",
            "v3.6.0.beta1",
            "v3.5.0.beta9",
            "v3.5.0.beta8",
            "v3.5.0.beta7",
            "v3.5.0.beta6",
            "v3.5.0.beta5",
            "v3.5.0.beta4",
            "v3.5.0.beta3",
            "v3.5.0.beta2",
            "v3.5.0.beta1",
            "v3.4.0.beta4",
            "v3.4.0.beta3",
            "v3.4.0.beta2",
            "v3.4.0.beta1",
            "v3.3.0.beta5",
            "v3.3.0.beta6",
            "v3.3.0.beta4",
            "v3.3.0.beta3",
            "v3.3.0.beta2",
            "v3.3.0.beta1",
            "v3.2.0.beta5",
            "v3.2.0.beta4",
            "v3.2.0.beta3",
            "v3.2.0.beta2",
            "v3.2.0.beta1",
            "v3.1.0.beta8",
            "v3.1.0.beta7",
            "v3.1.0.beta6",
            "v3.1.0.beta5",
            "v3.1.0.beta4",
            "v3.1.0.beta3",
            "v3.1.0.beta2",
            "v3.1.0.beta1",
            "v3.0.0.beta16",
            "v3.0.0.beta15",
            "v2.9.0.beta14",
            "v2.9.0.beta13",
            "v2.9.0.beta12",
            "v2.9.0.beta11",
            "v2.9.0.beta10",
            "v2.9.0.beta9",
            "v2.9.0.beta8",
            "v2.9.0.beta7",
            "v2.9.0.beta6",
            "v2.9.0.beta5",
            "v2.9.0.beta4",
            "v2.9.0.beta3",
            "v2.9.0.beta2",
            "v2.9.0.beta1",
            "v2.8.0.beta11",
            "v2.8.0.beta10",
            "v2.8.0.beta9",
            "v2.8.0.beta8",
            "v2.8.0.beta7",
            "v2.8.0.beta6",
            "v2.8.0.beta5",
            "v2.8.0.beta4",
            "v2.8.0.beta3",
            "v2.8.0.beta2",
            "v2.8.0.beta1",
            "v2.7.0.beta9",
            "v2.7.0.beta8",
            "v2.7.0.beta7",
            "v2.7.0.beta6",
            "v2.7.0.beta5",
            "v2.7.0.beta4",
            "v2.7.0.beta3",
            "v2.7.0.beta2",
            "v2.7.0.beta1",
            "v2.6.0.beta6",
            "v2.6.0.beta5",
            "v2.6.0.beta4",
            "v2.6.0.beta3",
            "v2.6.0.beta2",
            "v2.6.0.beta1",
            "v2.5.0.beta7",
            "v2.5.0.beta6",
            "v2.5.0.beta5",
            "v2.5.0.beta4",
            "v2.5.0.beta3",
            "v2.5.0.beta2",
            "v2.5.0.beta1",
            "v2.4.0.beta11",
            "v2.4.0.beta10",
            "v2.4.0.beta9",
            "v2.4.0.beta8",
            "v2.4.0.beta7",
            "v2.4.0.beta6",
            "v2.4.0.beta5",
            "v2.4.0.beta4",
            "v2.4.0.beta3",
            "v2.4.0.beta2",
            "v2.4.0.beta1",
            "v2.3.0.beta11",
            "v2.3.0.beta10",
            "v2.3.0.beta9",
            "v2.3.0.beta8",
            "v2.3.0.beta7",
            "v2.3.0.beta6",
            "v2.3.0.beta5",
            "v2.3.0.beta4",
            "v2.3.0.beta3",
            "v2.3.0.beta2",
            "v2.3.0.beta1",
            "v2.2.0.beta10",
            "v2.2.0.beta9",
            "v2.2.0.beta8",
            "v2.2.0.beta7",
            "v2.2.0.beta6",
            "v2.2.0.beta5",
            "v2.2.0.beta4",
            "v2.2.0.beta3",
            "v2.2.0.beta2",
            "v2.2.0.beta1",
            "v2.1.0.beta6",
            "v2.1.0.beta5",
            "v2.1.0.beta4",
            "v2.1.0.beta3",
            "v2.1.0.beta2",
            "v2.1.0.beta1",
            "v2.0.0.beta10",
            "v2.0.0.beta9",
            "v2.0.0.beta8",
            "v2.0.0.beta7",
            "v2.0.0.beta6",
            "v2.0.0.beta5",
            "v2.0.0.beta4",
            "v2.0.0.beta3",
            "v2.0.0.beta2",
            "v2.0.0.beta1",
            "v1.9.0.beta17",
            "v1.9.0.beta16",
            "v1.9.0.beta15",
            "v1.9.0.beta14",
            "v1.9.0.beta13",
            "v1.9.0.beta12",
            "v1.9.0.beta11",
            "v1.9.0.beta10",
            "v1.9.0.beta9",
            "v1.9.0.beta8",
            "v1.9.0.beta7",
            "v1.9.0.beta6",
            "v1.9.0.beta5",
            "v1.9.0.beta4",
            "v1.9.0.beta3",
            "v1.9.0.beta2",
            "v1.9.0.beta1",
            "v1.8.0.beta13",
            "v1.8.0.beta12",
            "v1.8.0.beta11",
            "v1.8.0.beta10",
            "v1.8.0.beta9",
            "v1.8.0.beta8",
            "v1.8.0.beta7",
            "v1.8.0.beta6",
            "v1.8.0.beta5",
            "v1.8.0.beta4",
            "v1.8.0.beta3",
            "v1.8.0.beta2",
            "v1.8.0.beta1",
            "v1.7.0.beta11",
            "v1.7.0.beta10",
            "v1.7.0.beta9",
            "v1.7.0.beta8",
            "v1.7.0.beta7",
            "v1.7.0.beta6",
            "v1.7.0.beta5",
            "v1.7.0.beta4",
            "v1.7.0.beta3",
            "v1.7.0.beta1",
            "v1.7.0.beta2",
            "v1.6.0.beta12",
            "v1.6.0.beta11",
            "v1.6.0.beta10",
            "v1.6.0.beta9",
            "v1.6.0.beta8",
            "v1.6.0.beta7",
            "v1.6.0.beta6",
            "v1.6.0.beta5",
            "v1.6.0.beta4",
            "v1.6.0.beta3",
            "v1.6.0.beta2",
            "v1.6.0.beta1",
            "v1.5.0.beta14",
            "v1.5.0.beta13b",
            "v1.5.0.beta13",
            "v1.5.0.beta12",
            "v1.5.0.beta11",
            "v1.5.0.beta10",
            "v1.5.0.beta9",
            "v1.5.0.beta8",
            "v1.5.0.beta7",
            "v1.5.0.beta6",
            "v1.5.0.beta5",
            "v1.5.0.beta4",
            "v1.5.0.beta2",
            "v1.5.0.beta1",
            "v1.4.0.beta12",
            "v1.4.0.beta11",
            "v1.4.0.beta10",
            "v1.4.0.beta9",
            "v1.4.0.beta8",
            "v1.4.0.beta7",
            "v1.4.0.beta6",
            "v1.4.0.beta5",
            "v1.4.0.beta4",
            "v1.4.0.beta3",
            "v1.4.0.beta2",
            "v1.4.0.beta1",
            "v1.3.0.beta11",
            "v1.3.0.beta10",
            "v1.3.0.beta9",
            "v1.3.0.beta6",
            "v1.3.0.beta5",
            "v1.3.0.beta4",
            "v1.3.0.beta3",
            "v1.3.0.beta2",
            "v1.3.0.beta1",
            "v1.2.0.beta9",
            "v1.2.0.beta8",
            "v1.2.0.beta7",
            "v1.2.0.beta6",
            "v1.2.0.beta5",
            "v1.2.0.beta4",
            "v1.2.0.beta3",
            "v1.2.0.beta2",
            "v1.2.0.beta1",
            "v1.1.0.beta8",
            "v1.1.0.beta7",
            "v1.1.0.beta6b",
            "v1.1.0.beta6",
            "v1.1.0.beta5",
            "v1.1.0.beta4",
            "v1.1.0.beta3",
            "v1.1.0.beta2",
            "v1.0.0",
            "v0.9.9.18",
            "v0.9.9.17",
            "v0.9.9.16",
            "v0.9.9.15",
            "v0.9.9.14",
            "v0.9.9.13",
            "v0.9.9.12",
            "v0.9.9.11",
            "v0.9.9.10",
            "v0.9.9.9",
            "v0.9.9.8",
            "v0.9.9.7",
            "v0.9.9.6",
            "v0.9.9.5",
            "v0.9.9.4",
            "v0.9.9.3",
            "v0.9.9.2",
            "v0.9.9.1",
            "v0.9.8.11",
            "v0.9.8.10",
            "v0.9.8.9",
            "v0.9.8.8",
            "v0.9.8.7",
            "v0.9.8.6",
            "v0.9.8.5",
            "v0.9.8.4",
            "v0.9.8.3",
            "v0.9.8.2",
            "v0.9.8.1",
            "v0.9.8",
            "v0.9.7.9",
            "v0.9.7.8",
            "v0.9.7.7",
            "v0.9.7.6",
            "v0.9.7.5",
            "v0.9.7.4",
            "v0.9.7.3",
            "v0.9.7.2",
            "v0.9.7.1",
            "v0.9.7",
            "v0.9.6.4",
            "v0.9.6.3",
            "v0.9.6.1",
            "v0.9.6",
            "v0.9.5.2",
            "v0.9.5.1",
            "v0.9.5",
            "v0.9.4",
            "v0.9.3",
            "v0.9.2.6",
            "v0.9.2.5",
            "v0.9.2",
            "v0.9.1",
            "v0.9.0",
            "v0.8.9",
            "v0.8.8",
            "v0.8.7",
            "v0.8.6",
            "v0.8.5",
            "v0.8.4",
            "v0.8.3",
            "v0.8.2",
            "v0.8.1",
            "v0.8.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-91157.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:36.657616289Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/91xxx/CVE-2026-91157.json",
        "https://github.com/discourse/discourse/security/advisories/GHSA-298h-xgw6-4pv3",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-91157",
        "https://github.com/discourse/discourse/commit/16017732981fdb3ee65d7b3c69c573610bf02aab",
        "https://github.com/discourse/discourse/commit/83f5f9f1df7ddc79ec0950e1b2038ba659635708",
        "https://github.com/discourse/discourse/commit/98f1c021d0e956cded5239a5d8a6afe2b9e1b7e7",
        "https://github.com/discourse/discourse/commit/b2fb98394b2636b29e850f06b0029f8ca8b48458"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-200",
          "CWE-863"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/91xxx/CVE-2026-91157.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-91157",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 503988,
  "published_at": "2026-10-14T15:37:02.24+00:00"
}