Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege user
-
ExploitSubmit upload lookup with SQL LIKE wildcards (%/_)
-
ExecutionUnsanitized url LIKE query matches unrelated uploads
-
ImpactDisclose 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
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.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Discourse versions prior to 3.5.0.beta6 contain a reflected cross-site scripting (XSS) vulnerability in social login fun
discourse-bbcode is the official BBCode plugin for Discourse. Rated critical severity (CVSS 9.8), this vulnerability is
Unauthorized information disclosure in Discourse discussion platform versions prior to 2026.3.0-latest.1, 2026.2.1, and
Discourse is an open source platform for community discussion. Rated high severity (CVSS 8.2), this vulnerability is rem
Discourse versions prior to 2025.12.2, 2026.1.1, and 2026.2.0 contain an insecure direct object reference (IDOR) in the
In Discourse 2.7.0 through beta1, a rate-limit bypass leads to a bypass of the 2FA requirement for certain forms. Rated
Unauthenticated attackers can submit forged webhook payloads to multiple email provider integrations in Discourse versio
Discourse is an open-source discussion platform. Rated medium severity (CVSS 6.5), this vulnerability is remotely exploi
Discourse is an open source platform for community discussion. Rated medium severity (CVSS 5.9), this vulnerability is r
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
Discourse is an open source platform for community discussion. Rated critical severity (CVSS 9.8), this vulnerability is
Discourse Patreon enables syncronization between Discourse Groups and Patreon rewards. Rated critical severity (CVSS 9.8
EUVD-2026-86299
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB