Severity: 
    CVSS 4.0: 2.3 (low) 
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N

Affected versions:

- Apache Pulsar 3.3.0 before 4.0.14
- Apache Pulsar 4.1.0 before 4.2.5

Description:

The Apache Pulsar broker admin REST API provides endpoints to read, set and 
remove the topic-level entry filter policy of a topic. For persistent topics 
these endpoints check that the caller is authorized for the entry filters topic 
policy operation. The corresponding endpoints for non-persistent topics 
(/admin/v2/non-persistent/{tenant}/{namespace}/{topic}/entryFilters) do not 
perform this authorization check. The only authorization check these endpoints 
perform is an indirect lookup permission check, made while the topic's 
partition metadata is retrieved; it is present in all affected versions.

As a result, when authentication and authorization are enabled, an 
authenticated user who has been granted produce or consume permission on a 
non-persistent topic, or on its namespace, but not permission to manage the 
topic's policies can read, replace or remove the topic-level entry filter 
policy of that topic. These operations should be restricted to users with the 
tenant admin role or the superuser role. This impact analysis assumes that 
Pulsar has been configured with the default authorization provider. For custom 
authorization providers, the impact could be slightly different.

The practical impact is limited by two broker configuration requirements, 
neither of which is met by default:

- Entry filters must have been installed by the operator. Entry filter 
implementations are loaded only at broker startup from the broker's entry 
filters directory, which is empty by default. A request can only select among 
entry filters the operator has already deployed; setting any other filter name 
is rejected. The issue does not allow a caller to install or load entry filter 
code or to run arbitrary code in the broker.
- Topic-level entry filter policies must be allowed to override the 
broker-level configuration (allowOverrideEntryFilters, which is disabled by 
default). When this setting is disabled, the topic-level entry filter policy 
has no effect on message dispatch.

In deployments where both conditions are met, an unauthorized user can remove 
the topic-level entry filter policy of a non-persistent topic, for example one 
used to restrict which messages are delivered to consumers, or apply a 
different installed entry filter that withholds messages from subscriptions of 
that topic. Removing it makes the topic fall back to the namespace-level or 
broker-level entry filters, which are not removed. A changed policy affects 
only subscription dispatchers created after the change, for example for new 
subscriptions or when a subscription is re-created after all of its consumers 
have disconnected; dispatchers that already exist keep the entry filters they 
were created with. Because non-persistent topics do not store messages, 
messages withheld by an entry filter are not delivered. Reading the policy 
discloses only the names of the configured entry filters. The issue does not 
allow reading message contents, and entry filters cannot modify message 
payloads. Persistent topics and namespace-level entry filter policies are not 
affected. Apache Pulsar versions before 3.3.0 are not affected, because in 
those versions the entry filters topic policy check is made in code shared by 
the persistent and non-persistent endpoints.

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

- 3.3.x and 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 have deployed entry filters should 
keep allowOverrideEntryFilters at its default value of false, so that 
topic-level entry filter policies do not affect message dispatch.

Credit:

yangxi739 (finder)
n0mi1k (finder)
Mingsheng Lin of Institute of Information Engineering, CAS (finder)
Xingchen Chen of Institute of Information Engineering, CAS (finder)
Qixu Liu of Institute of Information Engineering, CAS (finder)
sec-reex (finder)

References:

https://pulsar.apache.org/security/CVE-2026-105932/
https://pulsar.apache.org/
https://www.cve.org/CVERecord?id=CVE-2026-105932

Reply via email to