CVE-2026-105869
Apache Pulsar: MultiRolesTokenAuthorizationProvider uses roles from unverified tokens for HTTP requests that fall back to the anonymous user role
Description
Apache Pulsar's MultiRolesTokenAuthorizationProvider authorizes a client with all roles listed in a claim of its JSON Web Token (JWT). The provider is intended for use with token authentication, which verifies the token before authorization. The provider did not verify the token itself: it parsed the token's claims with the signature removed and trusted that authentication had already checked it. When authentication and authorization are enabled with a non-empty anonymousUserRole setting, some HTTP requests whose credentials fail authentication are not rejected, but are handled as requests of the anonymous user role. For the broker's HTTP endpoints, such as the admin REST API, this fallback applies to requests that do not name an authentication method and requires strictAuthMethod to be false (the default) where that setting is available. For the WebSocket API, failed credentials can also fall back to the anonymous user role; this path does not enforce strictAuthMethod. The authentication data kept for such a request still contained the request's Authorization header. MultiRolesTokenAuthorizationProvider then read the bearer token from that header without verifying its signature and authorized the request with the roles in the token's role claim. As a result, in deployments that use MultiRolesTokenAuthorizationProvider together with a non-empty anonymousUserRole and that permit this fallback, an unauthenticated client can send an HTTP request, for example to the admin REST API or the WebSocket API, with a forged or unsigned token that lists arbitrary roles, and be authorized with those roles. The impact can include super-user access when the token lists a role configured in superUserRoles, allowing the client to read and change tenants, namespaces, topics, permissions and broker configuration. No valid credentials are required. Deployments are not affected if they use the default authorization provider (PulsarAuthorizationProvider) or another authorization provider, or if anonymousUserRole is not set (the default). Requests that authenticate successfully with a valid token are not affected, because the token that MultiRolesTokenAuthorizationProvider reads is the token that authentication verified. Connections that use the Pulsar binary protocol are not affected by this issue, because the broker does not keep client authentication data for connections that it assigns to the anonymous user role. In fixed versions, MultiRolesTokenAuthorizationProvider obtains roles only from tokens that the configured token authentication provider has verified, using its configured keys and validation settings. Broker HTTP requests that are assigned to the anonymous user role are authorized only as that role, and invalid tokens cannot supply additional roles to WebSocket requests. The broker fails to start if MultiRolesTokenAuthorizationProvider is configured with authorization enabled but without a token authentication provider. This issue affects Apache Pulsar versions from 2.8.1 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 can remove the anonymousUserRole setting from the broker and WebSocket service configurations, or restrict network access to the HTTP endpoints of these services to trusted clients.
INFO
Published Date :
Oct. 21, 2026, 6:17 p.m.
Last Modified :
Oct. 26, 2026, 10:10 a.m.
Remotely Exploit :
Yes !
Source :
[email protected]
CVSS Scores
| Score | Version | Severity | Vector | Exploitability Score | Impact Score | Source |
|---|---|---|---|---|---|---|
| CVSS 4.0 | CRITICAL | f0158376-9dc2-43b6-827c-5f631a4d8d09 | ||||
| CVSS 4.0 | CRITICAL | [email protected] |
Solution
- Upgrade to Apache Pulsar 4.0.14 or later.
- Upgrade to Apache Pulsar 4.2.5 or later.
- Remove anonymousUserRole setting if upgrade is delayed.
- Restrict network access to HTTP endpoints.
References to Advisories, Solutions, and Tools
Here, you will find a curated list of external links that provide in-depth
information, practical solutions, and valuable tools related to
CVE-2026-105869.
| URL | Resource |
|---|---|
| https://lists.apache.org/thread.html/lf36z1tlcsokp4gv97obkdjtt74ngmrw | |
| https://pulsar.apache.org/security/CVE-2026-105869/ |
CWE - Common Weakness Enumeration
While CVE identifies
specific instances of vulnerabilities, CWE categorizes the common flaws or
weaknesses that can lead to vulnerabilities. CVE-2026-105869 is
associated with the following CWEs:
Common Attack Pattern Enumeration and Classification (CAPEC)
Common Attack Pattern Enumeration and Classification
(CAPEC)
stores attack patterns, which are descriptions of the common attributes and
approaches employed by adversaries to exploit the CVE-2026-105869
weaknesses.
We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).
Results are limited to the first 15 repositories due to potential performance issues.
The following list is the news that have been mention
CVE-2026-105869 vulnerability anywhere in the article.
The following table lists the changes that have been made to the
CVE-2026-105869 vulnerability over time.
Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.
-
CVE Translated by [email protected]
Oct. 26, 2026
Action Type Old Value New Value Added Translation Title: Apache Pulsar de Apache Software Foundation, Description: El “MultiRolesTokenAuthorizationProvider” de Apache Pulsar autoriza a un cliente con todos los roles enumerados en una declaración (claim) de su JSON Web Token (JWT). El proveedor está diseñado para usarse con autenticación de tokens, que verifica el token antes de la autorización. El proveedor no verificaba el token en sí: analizaba las declaraciones (claims) del token con la firma eliminada y confiaba en que la autenticación ya lo había comprobado. Cuando la autenticación y la autorización están habilitadas con una configuración “anonymousUserRole” no vacía, algunas solicitudes HTTP cuyas credenciales fallan la autenticación no son rechazadas, sino que se manejan como solicitudes del rol de usuario anónimo. Para los endpoints HTTP del broker, como la API REST de administración, esta alternativa se aplica a las solicitudes que no especifican un método de autenticación y requiere que “strictAuthMethod” sea “false” (el valor predeterminado) donde esa configuración esté disponible. Para la API WebSocket, las credenciales fallidas también pueden recurrir al rol de usuario anónimo; esta ruta no aplica “strictAuthMethod”. Los datos de autenticación conservados para dicha solicitud todavía contenían el encabezado “Authorization” de la solicitud. “MultiRolesTokenAuthorizationProvider” entonces leía el token de portador de ese encabezado sin verificar su firma y autorizaba la solicitud con los roles en la declaración (claim) de rol del token. Como resultado, en implementaciones que utilizan “MultiRolesTokenAuthorizationProvider” junto con un “anonymousUserRole” no vacío y que permiten esta alternativa, un cliente no autenticado puede enviar una solicitud HTTP, por ejemplo a la API REST de administración o a la API WebSocket, con un token falsificado o sin firmar que enumera roles arbitrarios, y ser autorizado con esos roles. El impacto puede incluir acceso de superusuario cuando el token enumera un rol configurado en “superUserRoles”, permitiendo al cliente leer y cambiar tenants, namespaces, temas, permisos y la configuración del broker. No se requieren credenciales válidas. Las implementaciones no se ven afectadas si utilizan el proveedor de autorización predeterminado (“PulsarAuthorizationProvider”) o cualquier otro proveedor de autorización, o si “anonymousUserRole” no está configurado (el valor predeterminado). Las solicitudes que se autentican correctamente con un token válido no se ven afectadas, porque el token que “MultiRolesTokenAuthorizationProvider” lee es el token que la autenticación verificó. Las conexiones que utilizan el protocolo binario de Pulsar no se ven afectadas por este problema, porque el broker no conserva los datos de autenticación del cliente para las conexiones que asigna al rol de usuario anónimo. En las versiones corregidas, “MultiRolesTokenAuthorizationProvider” obtiene roles solo de tokens que el proveedor de autenticación de tokens configurado ha verificado, utilizando sus claves y configuraciones de validación configuradas. Las solicitudes HTTP del broker que se asignan al rol de usuario anónimo se autorizan solo como ese rol, y los tokens inválidos no pueden proporcionar roles adicionales a las solicitudes WebSocket. El broker no se inicia si “MultiRolesTokenAuthorizationProvider” está configurado con la autorización habilitada pero sin un proveedor de autenticación de tokens. Este problema afecta a las versiones de Apache Pulsar desde la 2.8.1 anteriores a la 4.0.14 y desde la 4.1.0 anteriores a la 4.2.5. - Los usuarios de la versión 4.0.x deberían actualizar a al menos la 4.0.14. - Los usuarios de las versiones 4.1.x y 4.2.x deberían actualizar a al menos la 4.2.5. Los usuarios que operen versiones anteriores a las mencionadas deberían actualizar a las versiones parcheadas o más recientes. Las líneas de lanzamiento de Apache Pulsar actualmente soportadas son la 4.0.x y la 5.0.x. El calendario de versiones soportadas está disponible en https://pulsar.apache.org/contribute/release-policy/. Los usuarios que no puedan actualizar de inmediato pueden eliminar --TRUNCADO-- -
New CVE Received by [email protected]
Oct. 21, 2026
Action Type Old Value New Value Added Description Apache Pulsar's MultiRolesTokenAuthorizationProvider authorizes a client with all roles listed in a claim of its JSON Web Token (JWT). The provider is intended for use with token authentication, which verifies the token before authorization. The provider did not verify the token itself: it parsed the token's claims with the signature removed and trusted that authentication had already checked it. When authentication and authorization are enabled with a non-empty anonymousUserRole setting, some HTTP requests whose credentials fail authentication are not rejected, but are handled as requests of the anonymous user role. For the broker's HTTP endpoints, such as the admin REST API, this fallback applies to requests that do not name an authentication method and requires strictAuthMethod to be false (the default) where that setting is available. For the WebSocket API, failed credentials can also fall back to the anonymous user role; this path does not enforce strictAuthMethod. The authentication data kept for such a request still contained the request's Authorization header. MultiRolesTokenAuthorizationProvider then read the bearer token from that header without verifying its signature and authorized the request with the roles in the token's role claim. As a result, in deployments that use MultiRolesTokenAuthorizationProvider together with a non-empty anonymousUserRole and that permit this fallback, an unauthenticated client can send an HTTP request, for example to the admin REST API or the WebSocket API, with a forged or unsigned token that lists arbitrary roles, and be authorized with those roles. The impact can include super-user access when the token lists a role configured in superUserRoles, allowing the client to read and change tenants, namespaces, topics, permissions and broker configuration. No valid credentials are required. Deployments are not affected if they use the default authorization provider (PulsarAuthorizationProvider) or another authorization provider, or if anonymousUserRole is not set (the default). Requests that authenticate successfully with a valid token are not affected, because the token that MultiRolesTokenAuthorizationProvider reads is the token that authentication verified. Connections that use the Pulsar binary protocol are not affected by this issue, because the broker does not keep client authentication data for connections that it assigns to the anonymous user role. In fixed versions, MultiRolesTokenAuthorizationProvider obtains roles only from tokens that the configured token authentication provider has verified, using its configured keys and validation settings. Broker HTTP requests that are assigned to the anonymous user role are authorized only as that role, and invalid tokens cannot supply additional roles to WebSocket requests. The broker fails to start if MultiRolesTokenAuthorizationProvider is configured with authorization enabled but without a token authentication provider. This issue affects Apache Pulsar versions from 2.8.1 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 can remove the anonymousUserRole setting from the broker and WebSocket service configurations, or restrict network access to the HTTP endpoints of these services to trusted clients. Added CVSS V4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X Added CWE CWE-347 Added Affected New affected value received. <a href="https://github.com/CVEProject/cvelistV5/blob/main/cves/2026/105xxx/CVE-2026-105869.json">CVE-2026-105869</a> Added Reference https://lists.apache.org/thread.html/lf36z1tlcsokp4gv97obkdjtt74ngmrw Added Reference https://pulsar.apache.org/security/CVE-2026-105869/