Skip to main content

Zulip Server CVE-2026-100404

| EUVDEUVD-2026-101288 MEDIUM
Missing Authorization (CWE-862)
2026-10-14 security-advisories@github.com
6.5
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as low-privilege guest
  2. Exploit
    Register event queue narrowed to unsubscribed public channel
  3. Execution
    Receive new public-channel message events
  4. Impact
    Disclose 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.

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

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

Alert me

AnalysisAIv1 – 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

zulip < 12.2

Affected Packages

euvd zulip fix: 12.2

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

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

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.

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

Primary rating from Vendor (github).

CVSS VectorVendor: github

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

Lifecycle Timeline

1
Patch available
Oct 14, 2026 - 17:18 EUVD

DescriptionCVE.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

EPSS Score
0.4%
Top 66% exploitable
Prevalence
Medium
popular open-source self-hosted team chat, common in tech orgs
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.4%
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· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

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

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

More in Zulip

View all
CVE-2021-41115 MEDIUM POC
6.5 Oct 07

Zulip is an open source team chat server. Rated medium severity (CVSS 6.5), this vulnerability is remotely exploitable,

CVE-2022-21706 CRITICAL
9.8 Feb 26

Zulip is an open-source team collaboration tool with topic-based threading. Rated critical severity (CVSS 9.8), this vul

CVE-2019-18933 CRITICAL
9.8 Nov 21

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

CVE-2020-10935 MEDIUM POC
5.4 Apr 20

Zulip Server before 2.1.3 allows XSS via a Markdown link, with resultant account takeover. Rated medium severity (CVSS 5

CVE-2026-102893 CRITICAL
9.1 Oct 14

Authentication bypass in Zulip Server through 12.1 can log an attacker into an existing user account when OIDC single si

CVE-2017-0910 HIGH
8.8 Nov 27

In Zulip Server before 1.7.1, on a server with multiple realms, a vulnerability in the invitation system lets an authori

CVE-2022-31168 HIGH
8.8 Jul 22

Zulip is an open source team chat tool. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable, low

CVE-2020-15070 HIGH
8.8 Aug 21

Zulip Server 2.x before 2.1.7 allows eval injection if a privileged attacker were able to write directly to the postgres

CVE-2025-31478 HIGH
8.2 Apr 16

Zulip is an open-source team collaboration tool. Rated high severity (CVSS 8.2), this vulnerability is remotely exploita

CVE-2019-10476 HIGH
7.8 Oct 23

Jenkins Zulip Plugin 1.1.0 and earlier stored credentials unencrypted in its global configuration file on the Jenkins ma

CVE-2024-36612 HIGH
7.5 Nov 29

Zulip from 8.0 to 8.3 contains a memory leak vulnerability in the handling of popovers. Rated high severity (CVSS 7.5),

CVE-2020-14215 HIGH
7.5 Aug 21

Zulip Server before 2.1.5 has Incorrect Access Control because 0198_preregistrationuser_invited_as adds the administrato

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