Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAuthenticate with any Rocket.Chat account
-
DeliveryOpen DDP WebSocket session to target instance
-
ExploitCall getThreadsList with rid: {"$gt": ""} MongoDB operator
-
InstallAuthorization resolves to attacker-accessible room, MongoDB query fans out system-wide
-
C2Harvest private thread IDs from all rooms
-
ExecuteCall getThreadMessages with operator-injected tmid values
-
ImpactExfiltrate full private thread content
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
|
| Exploitation Conditions | Exploitation requires a valid Rocket.Chat user account at any privilege level - there is no unauthenticated exploitation path, as confirmed by CVSS PR:L. No special role, administrator permissions, or non-default server configuration is required beyond possessing an active session. The attack targets the DDP WebSocket interface, which is the standard real-time communication channel enabled by default on every Rocket.Chat deployment; it is not a feature that must be explicitly turned on. The attacker must additionally have legitimate membership in at least one room so that the authorization check resolves successfully before the fan-out query executes. What limits exploitation: the attacker must be able to reach the WebSocket endpoint (network access required); completely air-gapped or VPN-only deployments reduce exposure to insider threats only. The confidentiality impact is scoped to thread content (parent messages and replies) - non-threaded channel messages are not exposed through this specific method pair. |
| Impact | The vendor-assigned CVSS of 4.3 (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N) likely understates the confidentiality impact by rating C:L. The injection causes MongoDB queries to fan out across ALL rooms - enabling full read of all private thread content system-wide - which is more accurately represented as C:H, yielding a base score of approximately 6.5. EPSS at 0.14% (4th percentile) reflects low observed exploitation probability, and there is no CISA KEV listing. However, the attack requires only a valid Rocket.Chat account (PR:L), no special configuration, and is executable over a standard WebSocket session - the effective barrier is far lower than the EPSS percentile suggests for a newly disclosed CVE. The vulnerability mechanism is inferable from the public GitHub PR diff at pull/41814, which shows the exact typeof checks added and the switch from user-supplied IDs to server-resolved identifiers, making independent rediscovery realistic for any researcher examining the changeset. Organizations using Rocket.Chat for sensitive internal communications where thread confidentiality is a core assumption should treat this as higher priority than the raw CVSS implies. |
| Exploit ScenarioDerived | An attacker holding any valid Rocket.Chat account - such as a newly invited contractor or a user registered on an open-registration instance - opens a browser developer console during an active session and sends a raw DDP method call to getThreadsList substituting {"$gt": ""} for the expected rid string parameter. The server authorization check resolves this operator against a room the attacker already has access to, passing authorization, while the MongoDB query fans out across all rooms and returns thread listings from private channels and direct messages the attacker was never invited to. The attacker then iterates thread IDs and calls getThreadMessages with operator-injected tmid values to retrieve the full content of those private conversations. No public exploit code has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 27, 2026
Private thread content disclosure in Rocket.Chat exposes all private thread parents and their full reply content to any low-privilege authenticated user on instances running versions prior to 8.8.0 across multiple maintained release branches. By substituting a MongoDB operator object (e.g., {"$gt": ""}) for the expected string room-id or thread message-id in the Meteor DDP methods getThreadsList and getThreadMessages, an attacker with any valid account can cause downstream MongoDB queries to fan out across all rooms while the authorization check resolves only to a room the attacker legitimately accesses. No public exploit has been identified at time of analysis, but the technique is straightforward for any developer familiar with DDP WebSocket debugging, and the fix pattern is visible in the public GitHub pull request.
RemediationAI
Upgrade to one of the patched releases: 8.8.0, 8.7.1, 8.6.2, 8.5.3, 8.4.6, 8.3.8, 8.2.8, 8.1.8, or 7.10.15 as appropriate for your installed release branch. The upstream fix is documented in GitHub pull request https://github.com/RocketChat/Rocket.Chat/pull/41814 and enforces typeof string checks on rid and tmid before any processing, then replaces user-supplied identifiers with server-resolved room._id and thread._id in all downstream queries, eliminating the operator injection path entirely. If immediate upgrade is not feasible, restricting access to the Rocket.Chat DDP WebSocket endpoint (typically port 3000, or proxied via HTTPS/WSS) to trusted internal network segments reduces exposure by requiring an attacker to also be network-adjacent, though it does not eliminate the vulnerability for insider-threat scenarios. There is no server-side configuration option to selectively disable getThreadsList or getThreadMessages without source modification. Note that the REST API route chat.getThreadsList was patched in v5.0 and is not vulnerable to this specific injection; only the DDP method interface is affected.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Rocket.Chat's real-time features are built on Meteor's DDP (Distributed Data Protocol) over WebSocket. The affected server methods getThreadsList and getThreadMessages accept rid (room ID) and tmid (thread message ID) directly from the client without type coercion or schema validation. Because MongoDB's query interface accepts operator objects (BSON documents with keys like $gt, $ne, $regex) wherever a scalar is expected, passing a MongoDB operator causes the authorization check - which resolves the user-supplied rid against a room the attacker legitimately has access to - to pass, while the subsequent findVisibleThreadByThreadId and findThreadsByRoomId queries fan out across the entire message collection. CWE-20 (Improper Input Validation) captures the root cause: the server trusts client-supplied data types without enforcing that rid and tmid are primitive strings. The companion REST route chat.getThreadsList was remediated in v5.0 (HackerOne report #1446767) with AJV schema enforcement of rid: {type:'string'}, but the DDP method equivalents received no equivalent fix at that time, leaving the partial patch gap open across all subsequent versions until this hotfix.
Know when Rocket Chat 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:L/I:N/A:N
Fan-out MongoDB query discloses all private thread content system-wide justifying C:H over vendor C:L; AV:N and PR:L match the DDP WebSocket interface requiring only a valid account.
Primary rating from Vendor (hackerone).
CVSS VectorVendor: hackerone
Lifecycle Timeline
3DescriptionCVE.org
Rocket.Chat in versions before 8.8.0, 8.7.1, 8.6.2, 8.5.3, 8.4.6. 8.3.8, 8.2.8, 8.1.8, and 7.10.15, the Meteor DDP methods getThreadsList and getThreadMessages accept rid / tmid as raw, untyped parameters with no schema validation. A MongoDB operator object (e.g. {"$gt": "4"}) can be substituted for a string room-id or message-id. The authorization check resolves to a room the attacker already has access to, while the downstream data query fans out across all rooms - disclosing private thread parents and their full reply content to any low-privilege authenticated user. The REST route chat.getThreadsList was patched in v5.0 (HackerOne report #1446767) by adding rid: {type:'string'} AJV validation. The equivalent DDP method was never given the same fix and remains exploitable
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.
Related Vulnerabilities in Rocket.Chat Input Handling and XSS Vulnerabilities
View all 2More in Rocket Chat
View allA sanitization vulnerability exists in Rocket.Chat server versions <3.13.2, <3.12.4, <3.11.4 that allowed queries to an
A improper input sanitization vulnerability exists in Rocket.Chat server 3.11, 3.12 & 3.13 that could lead to unauthenti
A improper authentication vulnerability exists in Rocket.Chat <v5, <v4.8.2 and <v4.7.5 that allowed two factor authentic
A SQL injection vulnerability exists in Rocket.Chat <v3.18.6, <v4.4.4 and <v4.7.3 which can allow an attacker to retriev
A Server-Side Request Forgery (SSRF) affects Rocket.Chat's Twilio webhook endpoint before version 6.10.1. Rated high sev
Rocket.Chat versions prior to 6.12.0 expose the OAuth applications API endpoint to any authenticated user, allowing disc
An information disclosure vulnerability exists in the Rocket.Chat server fixed v3.13, v3.12.2 & v3.11.3 that allowed ema
An improper authentication vulnerability exists in Rocket.Chat Mobile App <4.14.1.22788 that allowed an attacker with ph
A cleartext transmission of sensitive information exists in Rocket.Chat <v5, <v4.8.2 and <v4.7.5 relating to Oauth token
An information disclosure vulnerability exists in Rocket.Chat <v5 due to the getUserMentionsByChannel meteor server meth
Rocket.Chat is an open-source fully customizable communications platform developed in JavaScript. Rated medium severity
A blind self XSS vulnerability exists in RocketChat LiveChat <v1.9 that could allow an attacker to trick a victim pastin
EUVD-2026-63805
GHSA-gw74-gwm4-8crp
NVD
CVE.org
EPSS
VulDB
Exploit-DB