Skip to main content

Dendrite CVE-2026-63097

| EUVDEUVD-2026-45195 MEDIUM
Incorrect Authorization (CWE-863)
2026-07-17 VulnCheck GHSA-xq7h-2f2w-f2xq
5.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Obtain authenticated Dendrite account
  2. Delivery
    Join target private room
  3. Exploit
    Leave target room
  4. Execution
    Retrieve prior event ID from room
  5. Persist
    Call /context endpoint with that event ID
  6. Impact
    Receive unfiltered current post-leave room state

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
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

The attacker must hold a valid authenticated account on the target Dendrite homeserver (CVSS PR:L confirmed). They must have previously joined the target room and subsequently left - the RoomExists field evaluates true for any room the server knows about, while IsInRoom is false for departed users, creating the bypass condition. The /context endpoint must be reachable over the network (standard Matrix Client-Server API port, typically 8448 or 443). Exploitation is version-gated to Dendrite 0.13.8 and earlier; other Matrix homeserver implementations are unaffected. The data disclosed is limited to room state events (not arbitrary message history), and history visibility room settings do not compensate for this bypass since the check fails before visibility rules are applied. Exploitation is limited by the requirement for a pre-existing account; fully unauthenticated or external attackers cannot exploit this vulnerability.

Impact

The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N) accurately reflects the attack profile: network-reachable, low complexity, no attack requirements, but constrained to authenticated users (PR:L) with limited confidentiality impact (VC:L). The requirement for a valid account on the target Dendrite instance substantially limits the realistic attacker pool compared to unauthenticated vulnerabilities. The data exposed is room state events - membership lists, room topics, and similar state - rather than full message history, capping the confidentiality damage. No EPSS score was provided in the input data; no CISA KEV listing exists, confirming no confirmed widespread active exploitation. However, a public PoC is available via the geo-chen GitHub repository and documented by VulnCheck, meaning exploitation requires minimal skill for any actor with a valid account. The real-world priority is moderate: Dendrite deployments hosting sensitive rooms (e.g., private organizational spaces) should patch promptly due to the low exploitation barrier, but the authenticated prerequisite and limited data scope prevent this from being a critical emergency.

Exploit ScenarioDerived

An authenticated user who previously joined and departed a private Matrix room hosted on a Dendrite server calls GET /_matrix/client/v3/rooms/{roomId}/context/{eventId} using an event ID they observed before leaving. Because context.go checks only RoomExists rather than the full membership state, the server returns unfiltered current room state - including current membership lists, room topic, and other state events - that the /sync and /messages endpoints would correctly withhold. A public PoC demonstrating this exact sequence is available at the geo-chen GitHub repository.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Jul 17, 2026

Post-leave room state disclosure in Dendrite through 0.13.8 allows authenticated local users to retrieve unfiltered current room state from rooms they have previously exited. The syncapi /context endpoint in syncapi/routing/context.go performs an incomplete membership check - evaluating only the RoomExists field while ignoring IsInRoom, HasBeenInRoom, and Membership - effectively treating departed users as current members for this endpoint alone. A publicly available proof-of-concept exists per VulnCheck and the geo-chen research disclosure; no active exploitation has been confirmed via CISA KEV at time of analysis.

RemediationAI

No vendor-released patched version is confirmed in the available reference data; administrators should monitor the matrix-org/dendrite GitHub repository for a tagged release addressing this issue. As an interim compensating control, operators can restrict access to the /rooms/{roomId}/context/{eventId} endpoint at the reverse proxy layer (e.g., nginx or Caddy) by validating session membership server-side before proxying - note this requires custom middleware and may break Matrix clients that rely on the context endpoint for timeline navigation. Alternatively, if the /context endpoint is not actively used by clients in the deployment, it can be blocked entirely at the reverse proxy; this trades client functionality for exposure reduction. The VulnCheck advisory (https://www.vulncheck.com/advisories/dendrite-syncapi-context-endpoint-post-leave-state-exposure) and the researcher disclosure (https://github.com/geo-chen/oss/blob/main/dendrite.md#finding-3-context-returns-current-room-state-to-non-members-and-left-users-history-visibility-bypass) should be monitored for patch availability updates.

Affected VersionsENISA

dendrite 0 ≤0.13.8

Affected Packages

euvd dendrite no fix

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

Dendrite (CPE: cpe:2.3:a:matrix-org:dendrite:*:*:*:*:*:*:*:*) is the Go-based Matrix homeserver implementation maintained by matrix-org, serving as an alternative to the dominant Synapse server. The Matrix Client-Server API exposes a /rooms/{roomId}/context/{eventId} endpoint, implemented in syncapi/routing/context.go, which provides surrounding event context for a given event ID. CWE-863 (Incorrect Authorization) describes a scenario where an authorization check is present but logically incomplete - precisely the defect here. The membership query returns a struct with multiple fields (RoomExists, IsInRoom, HasBeenInRoom, Membership), but only RoomExists is evaluated before serving the response. Because a room continues to exist after a user departs, this field resolves to true and the gate passes, returning current post-leave state. The /messages and /sync endpoints implement the full multi-field check correctly, making this a localized regression in the context routing handler alone.

Know when Dendrite 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 (VulnCheck) PRIMARY 5.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 4.3 MEDIUM

Requires authenticated account (PR:L) over network; low confidentiality impact from room state disclosure only; no integrity or availability impact.

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 (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Dendrite through 0.13.8 contains an improper access control vulnerability in the syncapi /context endpoint (syncapi/routing/context.go) that allows authenticated local users to access post-leave room state events by exploiting a flawed membership check that evaluates only the RoomExists field while ignoring IsInRoom, HasBeenInRoom, and Membership fields. Attackers who have left a room can call the rooms context API endpoint for a previously permitted event and receive unfiltered current room state that the /messages and /sync endpoints correctly withhold.

Threat Intelligence Overview

EPSS Score
0.2%
Top 94% exploitable
Prevalence
Low
secondary Matrix homeserver; Synapse dominates production deployments
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High

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 Yes
EPSS 0.2%
Patch available No
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
Poc
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

46
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: +20
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.

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