Skip to content
Heist/ feed
Back to feed
Low

Discourse Vulnerable to Unauthorized Topic Creation in Staff-Only Categories via Topic Timer publish_to_category

Type: advisorySources: OSV

Discourse is an open source discussion platform. Prior to versions 2025.12.2, 2026.1.1, and 2026.2.0, TL4 users can publish topics into staff-only categories via the `publish_to_category` topic timer, bypassing authorization checks. Versions 2025.12.2, 2026.1.1, and 2026.2.0 patch the issue. No known workarounds are available.

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

Source evidence

Discourse Vulnerable to Unauthorized Topic Creation in Staff-Only Categories via Topic Timer publish_to_category

core-osv · Original source

Published 26 Feb 2026, 21:27 UTC

Discourse is an open source discussion platform. Prior to versions 2025.12.2, 2026.1.1, and 2026.2.0, TL4 users can publish topics into staff-only categories via the `publish_to_category` topic timer, bypassing authorization checks. Versions 2025.12.2, 2026.1.1, and 2026.2.0 patch the issue. No known workarounds are available.

osv:CVE-2026-28227
Complete source record
{
  "id": "5787ce3434f165bf9cb0b1ed057cec7a4ece10c60f8ee57a54aca660a06a6e91",
  "url": "https://osv.dev/vulnerability/CVE-2026-28227",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Discourse Vulnerable to Unauthorized Topic Creation in Staff-Only Categories via Topic Timer publish_to_category",
    "summary": "Discourse is an open source discussion platform. Prior to versions 2025.12.2, 2026.1.1, and 2026.2.0, TL4 users can publish topics into staff-only categories via the `publish_to_category` topic timer, bypassing authorization checks. Versions 2025.12.2, 2026.1.1, and 2026.2.0 patch the issue. No known workarounds are available.",
    "evidence": "osv:CVE-2026-28227",
    "products": [],
    "severity": "low",
    "structured": {
      "id": "CVE-2026-28227",
      "aliases": [
        "BIT-discourse-2026-28227",
        "CVE-2026-28227",
        "GHSA-m49w-78mh-87jp"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:U"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/discourse/discourse",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "9c924c6f4f3885ab616e21bec2447af7056b4322"
                },
                {
                  "introduced": "322d3c0ac6a8f133b3f82875e9dbbe310f638c1b"
                },
                {
                  "fixed": "8a2a8b7d3a494435949a12ad078b22509f54bd58"
                },
                {
                  "introduced": "f7cec86997edc21d6074ceb7666f7e2e6e1b1fdf"
                },
                {
                  "last_affected": "f7cec86997edc21d6074ceb7666f7e2e6e1b1fdf"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:discourse:discourse:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2025.12.2"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "cpe": "cpe:2.3:a:discourse:discourse:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "2026.1.0"
                      },
                      {
                        "fixed": "2026.1.1"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "cpe": "cpe:2.3:a:discourse:discourse:2026.2.0:*:*:*:latest:*:*:*",
                    "range": [
                      {
                        "introduced": "2026.2.0"
                      },
                      {
                        "last_affected": "2026.2.0"
                      }
                    ],
                    "source": "CPE_STRING"
                  }
                ]
              }
            }
          ],
          "versions": [
            "2026.2.0",
            "v2025.12.1",
            "v2026.1.0",
            "stable",
            "esr",
            "v2026.2.0-latest",
            "release",
            "latest-release",
            "beta",
            "v2025.12.0",
            "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-28227.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:29.232669615Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/28xxx/CVE-2026-28227.json",
        "https://github.com/discourse/discourse/security/advisories/GHSA-m49w-78mh-87jp",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-28227"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-863"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/28xxx/CVE-2026-28227.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-28227",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 496091,
  "published_at": "2026-02-26T21:27:38.926+00:00"
}