Skip to main content

Discourse CVE-2026-91133

| EUVDEUVD-2026-86299 MEDIUM
Improper Neutralization of Special Elements in Data Query Logic (CWE-943)
2026-09-24 GitHub_M
6.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as low-privilege user
  2. Exploit
    Submit upload lookup with SQL LIKE wildcards (%/_)
  3. Execution
    Unsanitized url LIKE query matches unrelated uploads
  4. Impact
    Disclose restricted filenames and secure-upload paths

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Query language parameterization
Exploitation Conditions

Requires an authenticated Discourse account (PR:L) able to invoke upload-resolution functionality - specifically the upload-metadata lookup, URL-lookup, or cooked-video-placeholder code paths - on a version prior to 2026.1.8/2026.6.3/2026.7.2/2026.8.0. The exploit works against default configurations (no special feature toggle needed), so instances that permit self-registration or have many low-trust members are most exposed. Limiting factors: attacker must be authenticated (not anonymous), impact is confined to reading restricted upload metadata (filenames and secure-upload paths) with no ability to modify records, and no integrity or availability effect occurs.

Impact

This is a legitimate but moderate-priority information-disclosure flaw, not a critical one. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N = 6.5) shows a remotely reachable, low-complexity bug that requires an authenticated account (PR:L) and yields confidentiality-only impact - no integrity or availability effect (I:N/A:N), consistent with the description that upload records are read but not modified. No EPSS score, no CISA KEV listing, and no public exploit code were provided, so exploitation status is 'no public exploit identified at time of analysis'; there is no SSVC decision data supplied either. The one signal worth scrutinizing is the C:H rating: the disclosed data is restricted upload METADATA (original filenames, secure-upload paths) rather than full record contents, so C:H is arguably generous - though secure-upload paths can serve as a stepping-stone to fetch otherwise-restricted files, which justifies the vendor's high confidentiality rating. Because any registered/authenticated user can trigger it against network-facing default installs, it is worth patching promptly on multi-tenant or public-signup Discourse instances, but the authentication requirement and confidentiality-only scope keep it below emergency severity.

Exploit ScenarioDerived

An attacker registers or uses an existing low-privilege account on a Discourse forum and submits an upload-resolution request (upload metadata lookup, URL lookup, or cooked-video-placeholder path) containing SQL LIKE wildcards such as '%' or '_' instead of a literal upload identifier. Because the 'url LIKE ?' query is built without sanitize_sql_like, the wildcard matches unrelated upload rows, returning original filenames and secure-upload paths for uploads the user was never authorized to see. No public exploit code was identified, but the fix diff makes the trigger trivial to reconstruct.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 24, 2026

Authenticated users on Discourse forums running versions prior to 2026.1.8, 2026.6.3, 2026.7.2, or 2026.8.0 can read upload metadata they are not authorized to see - including original filenames and secure-upload paths - by submitting unescaped SQL LIKE wildcard characters where the application expects a literal upload identifier. The flaw (CWE-943) causes upload-metadata lookups, URL lookups, and cooked-video-placeholder resolution to match unrelated upload records instead of the intended one, leaking restricted information without modifying any records. Exploitation requires an authenticated account (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N) and works against default configurations, so instances that allow self-registration or host many low-trust members carry the most exposure; there is no public exploit identified at time of analysis and no confirmed active exploitation (CISA KEV not applicable). Vendor-released patches exist in 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0.

RemediationAI

Upgrade to a vendor-released patch: Discourse 2026.1.8, 2026.6.3, 2026.7.2, or 2026.8.0 - whichever corresponds to the branch you run - as documented in advisory GHSA-8hxh-573g-52gx (https://github.com/discourse/discourse/security/advisories/GHSA-8hxh-573g-52gx). The functional change is in https://github.com/discourse/discourse/pull/42882 and the associated commits (113c34d433d564bc69642649d501251a7e820b52, 20c48bef712ee3edd4f7af58ca1123cb0c16ef6f, a04cab107a9f57939456181c4b082d0a34ec39bd, cb3ca8420fcc7aba334effd011cf41943a336fa6), which replace the interpolated LIKE pattern in app/models/concerns/has_url.rb with sanitize_sql_like so '%' and '_' are matched literally; administrators who maintain a fork or pinned branch can backport that sanitize_sql_like wrapping instead of taking the full release. Because no vendor patch bypass exists and no public exploit code is known, the most effective compensating controls are exposure-reduction measures with real trade-offs: disable open self-registration or place new accounts behind manual approval/trust-level gating to shrink the pool of authenticated attackers (side effect: slower community growth and added moderator workload), and tighten who can create or view secure uploads by reviewing group permissions on uploads and secure media (side effect: legitimate users may lose access to shared files). Restricting outbound or direct access to upload endpoints is not practical since these lookups are integral to normal posting and rendering. Regardless of interim controls, treat the disclosure as data exposure: review upload access logs for enumeration patterns using '%' or '_' in URL parameters, and consider rotating or re-scoping secure-upload paths whose filenames may have leaked, since file paths are not secret-bearing credentials but do reveal restricted metadata.

Affected VersionsENISA

discourse 2026.7.0-latest, < 2026.7.2
discourse 2026.6.0-latest, < 2026.6.3
discourse 2026.1.0-latest, < 2026.1.8
discourse < 2026.8.0

Affected Packages

euvd discourse fix: 2026.8.0
euvd discourse_2026_1_0_latest fix: 2026.1.8
euvd discourse_2026_6_0_latest fix: 2026.6.3
euvd discourse_2026_7_0_latest fix: 2026.7.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 4 packages in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The root cause is CWE-943 (Improper Neutralization of Special Elements in Data Query Logic), specifically SQL LIKE pattern injection in Discourse's ActiveRecord-based data layer. The affected code is the shared concern app/models/concerns/has_url.rb, whose get_from_url helper built a query as find_by("url LIKE ?", "%#{data[1]}"), interpolating an attacker-influenced value directly into the LIKE pattern. Because SQL LIKE treats '%' and '_' as wildcards, an authenticated user who supplies these metacharacters in an upload-resolution parameter causes the pattern to match arbitrary upload rows rather than a single literal URL, returning records belonging to other users or marked as secure uploads. The same wildcard behavior propagates through the upload-metadata lookup, the URL-lookup path, and the cooked-video-placeholder rendering path, which is why the advisory describes disclosure of original filenames and secure-upload paths. The upstream fix wraps the interpolated value in sanitize_sql_like, escaping '%' and '_' so they are matched literally. Note that the third-party tag set labels this a 'NoSql Injection'; that label is inaccurate - the evidence points to SQL LIKE wildcard handling in a relational (ActiveRecord) query, not a NoSQL backend. The referenced pull request bundles this fix with additional hardening commits that URL-encode user-mention hrefs in small-action and nested-activity-log components and reject video placeholder sources containing double-quote attribute-breakout payloads, indicating a broader input-encoding cleanup rather than a single isolated change; those companion changes should not be conflated with the SQL LIKE information-disclosure issue described here.

Know when Discourse gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 6.5 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
vuln.today AI 4.3 MEDIUM

Network-reachable and low-complexity but requires an authenticated account (PR:L); impact is disclosure of upload metadata only, so I assess C:L rather than the vendor's C:H, with no integrity/availability effect.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

2
Patch available
Sep 24, 2026 - 18:02 EUVD
CVE Published
Sep 24, 2026 - 16:53 cve.org
MEDIUM 6.5

DescriptionCVE.org

Discourse is an open-source discussion platform. Prior to 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0, authenticated users could supply unescaped SQL LIKE metacharacters to upload-resolution patterns, causing wildcard input to select unrelated upload records instead of matching a literal identifier. The affected upload metadata, URL-lookup, and cooked-video-placeholder paths could resolve uploads the user was not authorized to access. This allowed disclosure of restricted metadata, including original filenames and secure-upload paths, without modifying the upload records. This issue is fixed in versions 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0.

Threat Intelligence Overview

EPSS Score
0.3%
Top 81% exploitable
Prevalence
High
widely deployed open-source forum platform across many public and enterprise communities
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
High
Technical Impact
Partial

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2025-48954 HIGH POC
8.1 Jun 25

Discourse versions prior to 3.5.0.beta6 contain a reflected cross-site scripting (XSS) vulnerability in social login fun

CVE-2022-46162 CRITICAL POC
9.8 Nov 30

discourse-bbcode is the official BBCode plugin for Discourse. Rated critical severity (CVSS 9.8), this vulnerability is

CVE-2026-27934 HIGH POC
8.7 Mar 19

Unauthorized information disclosure in Discourse discussion platform versions prior to 2026.3.0-latest.1, 2026.2.1, and

CVE-2024-47773 HIGH POC
8.2 Oct 08

Discourse is an open source platform for community discussion. Rated high severity (CVSS 8.2), this vulnerability is rem

CVE-2026-26265 HIGH POC
7.5 Feb 26

Discourse versions prior to 2025.12.2, 2026.1.1, and 2026.2.0 contain an insecure direct object reference (IDOR) in the

CVE-2021-3138 HIGH POC
7.5 Jan 14

In Discourse 2.7.0 through beta1, a rate-limit bypass leads to a bypass of the 2FA requirement for certain forms. Rated

CVE-2026-26077 MEDIUM POC
6.5 Feb 26

Unauthenticated attackers can submit forged webhook payloads to multiple email provider integrations in Discourse versio

CVE-2023-38706 MEDIUM POC
6.5 Sep 15

Discourse is an open-source discussion platform. Rated medium severity (CVSS 6.5), this vulnerability is remotely exploi

CVE-2024-53991 MEDIUM POC
5.9 Dec 19

Discourse is an open source platform for community discussion. Rated medium severity (CVSS 5.9), this vulnerability is r

CVE-2025-48877 CRITICAL
9.8 Jun 09

Discourse versions prior to 3.4.4 (stable), 3.5.0.beta5 (beta), and 3.5.0.beta6-dev (tests-passed) contain a critical vu

CVE-2023-47121 CRITICAL
9.8 Nov 10

Discourse is an open source platform for community discussion. Rated critical severity (CVSS 9.8), this vulnerability is

CVE-2022-39355 CRITICAL
9.8 Oct 26

Discourse Patreon enables syncronization between Discourse Groups and Patreon rewards. Rated critical severity (CVSS 9.8

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy