CVE-2026-82433: Apache Storm Nimbus, Apache Storm UI: Disclosure of Unredacted Daemon Configuration via Nimbus and the UI
Description
getNimbusConf returned the complete daemon configuration without redaction after only a user-level authorization check. Where the cluster is configured with them, that response includes storm.zookeeper.auth.payload and the keystore and truststore passwords for the Thrift, Netty and ZooKeeper TLS configuration. The project masks passwords elsewhere before display, so the omission here is inconsistent rather than intended.
The UI endpoint /api/v1/cluster/configuration compounded this. It carried no @AuthNimbusOp annotation, and the authorization filter treated a missing annotation as "no gate required" and returned immediately, so the endpoint applied no per-user check at all and proxied the request under the UI daemon's own principal. Any user able to pass ui.filter therefore received the full configuration, including principals that Nimbus itself would have refused.
Mitigation
Upgrade to 3.1.0, where credential-bearing values are masked before the configuration is served and where every UI API endpoint must declare its authorization explicitly.
Users who cannot upgrade immediately should place the UI behind an authenticating reverse proxy that restricts /api/v1/cluster/configuration, and should rotate the ZooKeeper authentication payload and any TLS keystore or truststore passwords that were reachable through it.
Credit
The ASF -- found using Claude agents to study the security of open-source projects, validated and reported by Apache Storm.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
Apache Storm Nimbus / Apache Storm UIto a version that resolves this vulnerability.Fixed in 3.1.0Patch CVE-2026-82433 - Configuration
Ensure every UI API endpoint declares its authorization explicitly (avoid treating a missing `@AuthNimbusOp` annotation as 'no gate required').
Apache Storm UI (UI API authorization) per-endpoint authorization declaration = explicit (required for every UI API endpoint) - Compensating control
Place the Apache Storm UI behind an authenticating reverse proxy to restrict access to the endpoint `/api/v1/cluster/configuration`.
- Operational
Rotate the ZooKeeper authentication payload (`storm.zookeeper.auth.payload`) and any ZooKeeper TLS keystore/truststore passwords that could be disclosed.
Event History
Frequently Asked Questions
Which configuration values may be exposed?
Where configured, the response can include storm.zookeeper.auth.payload and keystore and truststore passwords used for Thrift, Netty, and ZooKeeper TLS configuration.
Who can retrieve the configuration through the UI endpoint?
Any user able to pass ui.filter can access /api/v1/cluster/configuration. That endpoint had no per-user authorization check and proxied the request using the UI daemon principal.
How does Nimbus exposure differ from UI exposure?
Nimbus required a user-level authorization check before returning the unredacted configuration. The UI endpoint did not apply a per-user gate, so it could expose configuration to principals that Nimbus would refuse.
What can be done before upgrading?
Place the UI behind an authenticating reverse proxy and restrict access to the affected API path. Upgrading to 3.1.0 masks credential-bearing values before configuration is served and requires explicit authorization declarations for UI API endpoints.