Read the docs

Apache Pulsar WebSocket dead letter topic lacks PRODUCE permission check

Priority LOW 12CWE-863Published · Updated

Key facts

Attack vector
Network
Privileges required
Low
User interaction
None
Attack complexity
Low
Attack requirements
Present
Impact type
Security bypass
Confidentiality · integrity · availability
None · Low · Low
Fix status
Fixed

Attack profile from CVSS 4.0 · CNA. Fix status from CNA. Impact type from CWE-863.

Summary

Apache Pulsar from 2.3.0 before 4.0.14 and from 4.1.0 before 4.2.5 has an incorrect authorization flaw in its WebSocket service dead letter policy (CWE-863). The service checks only the CONSUME permission on the subscribed topic and not the PRODUCE permission on the deadLetterTopic, and it writes dead letter messages with its own broker identity. An authenticated user with CONSUME permission on one topic can inject messages into topics they cannot produce to, which the attacker may control when they also control the subscribed topic. The issue requires the WebSocket service to be enabled and does not allow reading, modifying or deleting existing messages.

Written with Claude Haiku 5.5 from the sources below · 2026-11-06

Description from the CNA

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.

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00437 38th percentileScored 2026-11-07
Fix Fixed Apache Pulsar (Apache Software Foundation): 4.0.14, 4.2.5

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
No
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
ApacheApache Pulsar2.3.0 to before 4.0.14; 4.1.0 to before 4.2.54.0.14, 4.2.5Patch availableCNA
  • Apache Pulsar VendorApache Affected 2.3.0 to before 4.0.14; 4.1.0 to before 4.2.5 Fixed in 4.0.14, 4.2.5 Patch available CNA

CPE names Threatist (inferred) · 1

Inferred from how NVD named this product before; not given by a source.

CPEVersionsRoleVendor
cpe:2.3:a:apache:pulsar:*:*:*:*:*:*:*:*——Apache
  • cpe:2.3:a:apache:pulsar:*:*:*:*:*:*:*:* Versions — — ·Apache

Remediation

Upgrade Apache Pulsar 4.0.x to 4.0.14 and Apache Pulsar 4.1.x and 4.2.x to 4.2.5. Users of older versions should upgrade to a patched version or newer.

Written with Claude Haiku 5.5 from the sources below · 2026-11-06

  • Fix · CNA Apache Pulsar (Apache Software Foundation) Fixed in 4.0.14, 4.2.5

Fixed in the same release

Records fixed by the same vendor advisory or release, as the CNA lists them.

  • Release ·

    Apache Pulsar 4.0.14, 4.2.5

    14 records Highest priority Priority MEDIUM 1 MEDIUM, 13 LOW

    Other records, highest priority first

    • TI-2026-78917 Apache Pulsar accepts unverified token roles on anonymous requestsPriority MEDIUM 41
    • TI-2026-78944 Apache Pulsar shadow topics lack authorization on source topicsPriority LOW 39
    • TI-2026-78948 Path traversal in Apache Pulsar exposes packages of other tenantsPriority LOW 36

Vendor assessments

Red Hat

Red Hat's page for this CVE →

Not affected: 1 product
  • Red Hat

Timeline

  1. 2026-10-21 Threatist record created from CVE-2026-105927
  2. 2026-10-21 Alias added: GHSA-5q6x-rgx4-rwcr
  3. 2026-10-30 CISA SSVC decision points changed
  4. 2026-11-06 Affected versions changed · Red Hat
  5. 2026-11-06 CVSS score added · Red Hat

References

  • TI-2025-18529 Apache Tomcat: Potential RCE and/or information disclosure and/or information corruption with partial PUT KEVCVSS 3.1CRITICAL 10.0
  • TI-2024-30292 Apache OFBiz: Confused controller-view authorization logic (forced browsing) KEVCVSS 3.1CRITICAL 9.8
  • TI-2024-26062 Apache OFBiz: Unauthenticated endpoint could allow execution of screen rendering code KEVCVSS 3.1CRITICAL 9.8
  • TI-2024-21190 Apache OFBiz: Path traversal leading to RCE KEVCVSS 3.1CRITICAL 9.8
  • TI-2024-18186 Apache HugeGraph-Server: Command execution in gremlin KEVCVSS 3.1CRITICAL 9.8
  • TI-2023-25106 Deserialization of untrusted data in Apache ActiveMQ KEVCVSS 3.1CRITICAL 10.0
See all 4053 →

Sources