Bug 2510875 (CVE-2026-105311)

Summary: CVE-2026-105311 console-operator: Streams for Apache Kafka Console: cross-namespace KafkaUser Secret exfiltration via confused deputy
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security <prodsec-ir-bot>
Status: NEW --- QA Contact:
Severity: high Docs Contact:
Priority: high    
Version: unspecifiedCC: chfoley, jturenov, rgodfrey, security-response-team, swoodman
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
The StreamsHub Console operator acts as a confused deputy: a Kubernetes tenant with permission to create a Console custom resource can set spec.kafkaClusters[].credentials.kafkaUser.namespace to any namespace. The operator, running with cluster-wide Secrets RBAC, reads the victim-namespace KafkaUser Secret (SASL credentials or TLS private keys) and writes the plaintext material into a Secret in the attacker's namespace. No same-namespace check or allowlist exists anywhere in the code path.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Deadline: 2026-10-20   

Description OSIDB Bzimport 2026-08-04 03:12:30 UTC
Source: Internal security audit — Streams for Apache Kafka Console f002
Upstream project: StreamsHub Console (Red Hat-owned, github.com/streamshub/console)
Upstream advisory: N/A — Red Hat-owned code, no external disclosure needed

Affected code:
- ConfigurationProcessor.java — setKafkaUserConfig() accepts tenant-controlled namespace without validation
- CredentialsKafkaUser.java — namespace field is plain String with no validation
- ConsoleSecret.java — writes exfiltrated credentials to attacker's namespace
- ClusterRole grants unrestricted cluster-wide Secrets CRUD

Fix status: Unfixed in upstream main (bfc823f) and all downstream versions. Requires assertNamespaceAllowed() guard with same-namespace default.

Comment 1 Jon Orris 2026-10-21 07:34:10 UTC
This issue has been addressed in the following products:

  Streams for Apache Kafka 3.2.2

Via RHSA-2026:86676 https://access.redhat.com/errata/RHSA-2026:86676