Description
The Apache Pulsar WebSocket service allows a WebSocket consumer to configure a dead letter policy through query parameters of the consumer endpoint, including the deadLetterTopic parameter that names the topic to which messages are written after the maximum number of redeliveries is exceeded. When authorization is enabled, the WebSocket service checks only that the connecting user holds the CONSUME permission on the subscribed topic. It does not check whether the user holds the PRODUCE permission on the topic named in deadLetterTopic. The dead letter messages are then written by the WebSocket service using its own broker client identity rather than the identity of the connecting user.

As a result, an authenticated user who holds the CONSUME permission on at least one topic can cause messages to be written to a topic of their choosing in any existing namespace, including namespaces belonging to other tenants, provided the role used by the WebSocket service to connect to the brokers is authorized to produce to that topic and the topic accepts a producer that registers no schema. The dead letter producer created by the WebSocket service registers no schema, so it is rejected when the target topic has a schema and schema validation is enforced for that topic or its namespace; this setting is not enabled by default. The same user is refused when attempting to produce to that topic directly. Where automatic topic creation is enabled, which is the default, the named topic is created if it does not already exist. The issue can only be triggered when the WebSocket service is enabled, either in the broker (webSocketServiceEnabled, which is disabled by default) or as a standalone WebSocket proxy.

The impact is unauthorized injection of messages into topics the user is not permitted to produce to. The user can determine the content of the injected messages when they also control the messages on the subscribed topic. The issue does not allow reading, modifying or deleting existing messages in the target topic. Injected messages carry the dead letter message properties and a dead letter producer name, so they can be distinguished from messages produced normally; however, the values of these properties are not authenticated and should not be relied upon to establish the origin of a message. Whether an injected message has further consequences depends on how the applications consuming the target topic process it. Repeated injection also consumes storage and backlog capacity in the target namespace.

This issue affects Apache Pulsar versions from 2.3.0 before 4.0.14 and from 4.1.0 before 4.2.5.

- 4.0.x version users should upgrade to at least 4.0.14.
- 4.1.x and 4.2.x version users should upgrade to at least 4.2.5.

Users operating versions prior to those listed above should upgrade to the aforementioned patched versions or newer versions.

The currently supported Apache Pulsar release lines are 4.0.x and 5.0.x. The supported versions schedule is available at https://pulsar.apache.org/contribute/release-policy/.

Users who cannot upgrade immediately and do not require the WebSocket service should disable it. Where the WebSocket service is required, restricting network access to it and limiting the permissions granted to the role the WebSocket service uses to connect to the brokers to the namespaces WebSocket clients are intended to access reduces the exposure.
Published: 2026-10-21
Score: 2.3 Low
EPSS: < 1% Very Low
KEV: No
Impact: Unauthorized message injection into arbitrary topics
Action: Apply patch
AI Analysis

Impact

The vulnerability enables an authenticated consumer to configure a dead‑letter topic via WebSocket query parameters. When authorization is on, the service verifies only the consumer role has CONSUME rights on the source topic, but it does not verify the producer rights on the dead‑letter topic. Consequently the broker client that the WebSocket service uses can publish messages to any topic in any namespace for which that client is authorized to produce, regardless of the consuming role. The injected messages carry standard dead‑letter properties and are therefore distinguishable from normal traffic, but their contents are fully controlled by the malicious consumer. The impact is the injection of untrusted data into topics a user normally cannot write to, potentially disrupting downstream consumers or consuming storage and backlog capacity.

Affected Systems

Apache Pulsar versions 2.3.0 through 4.0.13 and 4.1.0 through 4.2.4 are vulnerable. Users on the stable 4.0.x line should upgrade to at least 4.0.14, while those on 4.1.x or 4.2.x should move to at least 4.2.5. All other Pulsar releases after these thresholds are considered patched.

Risk and Exploitability

The CVSS score of 2.3 indicates low overall severity; the EPSS score is currently unknown and the vulnerability is not listed in the CISA KEV catalog. Exploitation requires the WebSocket service to be enabled (either in broker or as a proxy), an authenticated consumer with consume rights to any topic, and that the broker client role used by the service has produce rights on a target namespace. If the target topic already exists, the injected producer is silently rejected when the topic requires a schema; therefore the attack is more effective in environments without schema enforcement. In practice the risk is limited to the potential injection of arbitrary data, but repeated injection can deplete storage or backlog quotas. Given these constraints, the risk is considered low to moderate, warranting timely remediation rather than immediate emergency response.

Generated by OpenCVE AI on October 22, 2026 at 01:59 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Apache Pulsar to the patched versions (≥4.0.14 or ≥4.2.5) or newer
  • If the WebSocket service is not needed, disable it by setting webSocketServiceEnabled to false in the broker or proxy configuration
  • When the WebSocket service must remain active, restrict network access to it and limit the broker‑client role’s permissions to only theNamespaces intended for WebSocket clients. Optionally enable schema validation on all topics to prevent injection of producers with no schema

Generated by OpenCVE AI on October 22, 2026 at 01:59 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 30 Oct 2026 19:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Thu, 22 Oct 2026 11:00:00 +0000

Type Values Removed Values Added
First Time appeared Apache
Apache pulsar
Vendors & Products Apache
Apache pulsar

Wed, 21 Oct 2026 18:15:00 +0000

Type Values Removed Values Added
Description The Apache Pulsar WebSocket service allows a WebSocket consumer to configure a dead letter policy through query parameters of the consumer endpoint, including the deadLetterTopic parameter that names the topic to which messages are written after the maximum number of redeliveries is exceeded. When authorization is enabled, the WebSocket service checks only that the connecting user holds the CONSUME permission on the subscribed topic. It does not check whether the user holds the PRODUCE permission on the topic named in deadLetterTopic. The dead letter messages are then written by the WebSocket service using its own broker client identity rather than the identity of the connecting user. As a result, an authenticated user who holds the CONSUME permission on at least one topic can cause messages to be written to a topic of their choosing in any existing namespace, including namespaces belonging to other tenants, provided the role used by the WebSocket service to connect to the brokers is authorized to produce to that topic and the topic accepts a producer that registers no schema. The dead letter producer created by the WebSocket service registers no schema, so it is rejected when the target topic has a schema and schema validation is enforced for that topic or its namespace; this setting is not enabled by default. The same user is refused when attempting to produce to that topic directly. Where automatic topic creation is enabled, which is the default, the named topic is created if it does not already exist. The issue can only be triggered when the WebSocket service is enabled, either in the broker (webSocketServiceEnabled, which is disabled by default) or as a standalone WebSocket proxy. The impact is unauthorized injection of messages into topics the user is not permitted to produce to. The user can determine the content of the injected messages when they also control the messages on the subscribed topic. The issue does not allow reading, modifying or deleting existing messages in the target topic. Injected messages carry the dead letter message properties and a dead letter producer name, so they can be distinguished from messages produced normally; however, the values of these properties are not authenticated and should not be relied upon to establish the origin of a message. Whether an injected message has further consequences depends on how the applications consuming the target topic process it. Repeated injection also consumes storage and backlog capacity in the target namespace. This issue affects Apache Pulsar versions from 2.3.0 before 4.0.14 and from 4.1.0 before 4.2.5. - 4.0.x version users should upgrade to at least 4.0.14. - 4.1.x and 4.2.x version users should upgrade to at least 4.2.5. Users operating versions prior to those listed above should upgrade to the aforementioned patched versions or newer versions. The currently supported Apache Pulsar release lines are 4.0.x and 5.0.x. The supported versions schedule is available at https://pulsar.apache.org/contribute/release-policy/. Users who cannot upgrade immediately and do not require the WebSocket service should disable it. Where the WebSocket service is required, restricting network access to it and limiting the permissions granted to the role the WebSocket service uses to connect to the brokers to the namespaces WebSocket clients are intended to access reduces the exposure.
Title Apache Pulsar: Improper authorization of WebSocket consumer dead letter topic allows writes without PRODUCE permission
Weaknesses CWE-863
References
Metrics cvssV4_0

{'score': 2.3, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: apache

Published:

Updated: 2026-10-30T18:17:18.420Z

Reserved: 2026-10-06T06:29:52.124Z

Link: CVE-2026-105927

cve-icon Vulnrichment

Updated: 2026-10-30T18:17:09.111Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-10-21T18:17:22.730

Modified: 2026-10-30T19:18:01.287

Link: CVE-2026-105927

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-22T10:40:46Z

Weaknesses