Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege guest
-
ExploitRegister event queue narrowed to unsubscribed public channel
-
ExecutionReceive new public-channel message events
-
ImpactDisclose internal channel message contents
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires a valid, authenticated guest account in the target Zulip realm (PR:L); fully unauthenticated external attackers cannot exploit it. The affected object is a public but non-web-public channel the guest is not subscribed to - web-public channels are already accessible so are not the target, and private channels are unaffected. The guest triggers disclosure by registering an event queue with narrow parameters requesting an unsubscribed public channel, or by retaining an existing event queue that was created while subscribed and then keeps delivering after channel access is revoked. Limiting factors that reduce real-world risk: only NEW messages posted after the queue is active are leaked (no historical/backfill access), only guest-role accounts are affected, and all Zulip Server versions through 12.1 are vulnerable while 12.2 is fixed. |
| Impact | This is a genuine but moderate-severity authorization flaw (CWE-862), not a top-tier emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N, base 6.5) is internally consistent with the description: exploitation is over the network via Zulip's event-queue API, requires low attacker effort, needs a valid but low-privileged guest account (PR:L), no user interaction, and yields confidentiality-only impact with no integrity or availability effect. No EPSS score, CISA KEV listing, or public exploit was provided in the input, so there is no public exploit identified at time of analysis and no evidence of active or widespread exploitation. The patch commits and GitHub advisory (GHSA-5r8f-gq2h-fcgp) are public, which modestly lowers the barrier to building an exploit but does not constitute weaponized or in-the-wild activity. Net priority: a real tenant-isolation/data-disclosure bug that organizations relying on Zulip guest restrictions (e.g., external contractors) should patch promptly, but the authenticated-guest prerequisite and confidentiality-only, new-message-only scope keep it below critical urgency. Note the input tag 'Authentication Bypass' conflicts with CWE-862 and the PR:L vector - the guest is authenticated and the flaw is a missing authorization check, not an authentication bypass. |
| Exploit ScenarioDerived | An external user who has been granted only a guest account in a Zulip organization registers an event queue with a narrow targeting a public (non-web-public) channel they are not subscribed to, or keeps a previously registered queue alive after an admin removes their channel access. New messages posted to that channel are then streamed to the guest, exposing internal discussions they should not see. No public exploit code was identified, but the fix commits publicly document the vulnerable code path. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 14, 2026
Zulip Server through 12.1 delivers new-message events to guest-role users for public (non-web-public) channels they are not subscribed to, allowing a guest to read the content of those messages. An authenticated guest can trigger disclosure by registering an event queue whose narrow parameters target an unsubscribed public channel, or by keeping an existing queue alive after their access to the channel is revoked, since the server fails to filter guest clients out of those events (CWE-862, missing authorization). Web-public channels and private channels are not the target of the flaw. Vendor-released patch: Zulip Server 12.2; no public exploit code has been identified at time of analysis.
RemediationAI
Upgrade to Zulip Server 12.2, which is the vendor-released fix (https://github.com/zulip/zulip/releases/tag/12.2); the corrective changes are visible in commits 98659a41cb93d4ce329ea14bb0cdfb4b147500ba and c03db8916456674df3c98614f6f0ef8cd024ef11 and in pull request https://github.com/zulip/zulip/pull/39913, with details in advisory GHSA-5r8f-gq2h-fcgp. Where an immediate upgrade is not possible, note that the flaw only leaks NEW messages posted after a queue is active - no historical backfill is exposed - so the practical exposure window can be bounded by short upgrade timeframes. Compensating controls to consider: audit and reduce the number of guest-role accounts in realms where untrusted guests exist, since only guests are affected; and, if guests are not operationally required, change or remove guest-role assignments (side effect: these users lose legitimate guest access). Because an already-registered queue can continue leaking after channel access is revoked, force-disconnecting or restarting clients with stale event queues after upgrading will not remediate pre-existing exposure but does limit further leaking; the durable fix remains the 12.2 upgrade, as there is no server-side configuration toggle documented for this behavior.
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
Zulip's real-time event system lets clients register event queues with narrow parameters that describe which messages they want delivered; the server (via the Tornado event-delivery path) then pushes matching message events to those queues. The root cause is a missing authorization/visibility check (CWE-862) when constructing those message events: the send path did not attach the realm's active guest user IDs nor an is_web_public marker, so the delivery layer could not exclude guest clients that had registered narrows covering public channels they were not subscribed to. Because guests in Zulip may only legitimately access non-web-public channels when subscribed, and may access web-public channels regardless, the fix adds an active_guest_user_ids lookup (cached with a dedicated realm cache key and flushed on user/realm changes) and stamps events with realm_guest_user_ids plus is_web_public, allowing Tornado to drop guest clients that are not subscribed to a non-web-public channel. The patch touches zerver/actions/message_send.py, zerver/lib/cache.py, and zerver/models/users.py, with regression tests in zerver/tests/test_event_system.py covering both unsubscribed public and web-public narrows.
Know when Zulip 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
Exploited over the event-queue API (AV:N/AC:L) by an authenticated guest (PR:L) with no interaction; unauthorized read of internal channel messages gives C:H, with no integrity or availability impact.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
1DescriptionCVE.org
Zulip is an open-source team collaboration tool. In Zulip Server versions through 12.1, guest users can receive new message events for public channels outside their subscriptions. A guest can trigger the issue by registering an event queue with parameters that request messages from an unsubscribed public channel, or an existing event queue can remain affected after the guest's access to the channel is removed. The flaw discloses new public-channel messages to the guest. This issue is fixed in version 12.2.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Zulip is an open source team chat server. Rated medium severity (CVSS 6.5), this vulnerability is remotely exploitable,
Zulip is an open-source team collaboration tool with topic-based threading. Rated critical severity (CVSS 9.8), this vul
In Zulip Server versions from 1.7.0 to before 2.0.7, a bug in the new user signup process meant that users who registere
Zulip Server before 2.1.3 allows XSS via a Markdown link, with resultant account takeover. Rated medium severity (CVSS 5
Authentication bypass in Zulip Server through 12.1 can log an attacker into an existing user account when OIDC single si
In Zulip Server before 1.7.1, on a server with multiple realms, a vulnerability in the invitation system lets an authori
Zulip is an open source team chat tool. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable, low
Zulip Server 2.x before 2.1.7 allows eval injection if a privileged attacker were able to write directly to the postgres
Zulip is an open-source team collaboration tool. Rated high severity (CVSS 8.2), this vulnerability is remotely exploita
Jenkins Zulip Plugin 1.1.0 and earlier stored credentials unencrypted in its global configuration file on the Jenkins ma
Zulip from 8.0 to 8.3 contains a memory leak vulnerability in the handling of popovers. Rated high severity (CVSS 7.5),
Zulip Server before 2.1.5 has Incorrect Access Control because 0198_preregistrationuser_invited_as adds the administrato
EUVD-2026-101288
NVD
CVE.org
EPSS
GitHub
Exploit-DB