CVE-2026-105949: Cruise-control: streams for apache kafka cruise control: authentication bypass via extra path segment allows unauthenticated access to all admin endpoints
Cruise Control's Jetty ConstraintSecurityHandler registers security constraints on exact path specs without a catch-all wildcard constraint and without calling setDenyUncoveredHttpMethods(true). The servlet routes requests using Path.of(pathInfo).getFileName(), which strips all leading segments and trailing slashes. Requests like POST /kafkacruisecontrol/x/rebalance bypass authentication entirely but still dispatch to admin endpoints. All 15 admin endpoints become reachable without authentication. In AMQ Streams, the Strimzi operator's NetworkPolicy restricts Cruise Control port 9090 to operator pods only, reducing effective severity to Important.
Other sources
Source: Internal security audit — Streams for Apache Kafka / Cruise Control f001 Upstream project: LinkedIn Cruise Control (github.com/linkedin/cruise-control) Upstream advisory: Pending — disclose via GitHub Security Advisory + cruise-control-oss
Affected code: - DefaultRoleSecurityProvider.java — registers exact path specs, no wildcard catch-all - KafkaCruiseControlServletApp.java — sets constraints without setDenyUncoveredHttpMethods(true) - ParameterUtils.java — Path.of(pathInfo).getFileName() strips leading segments, routes to admin endpoint
Fix status: Unfixed in upstream 2.5.146, 3.0.4, and main branch. LinkedIn-owned code.
— Red Hat
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Compensating control
Restrict Cruise Control port 9090 with a NetworkPolicy so it is accessible only to operator pods.