{"id":"CVE-2026-105311","aliases":["EUVD-2026-104963","GHSA-h4vv-pfp4-5x34"],"status":"published","title":"Console-operator: streams for apache kafka console: cross-namespace kafkauser secret exfiltration via confused deputy","description":"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.","severity":{"version":"3.1","score":7.7,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.00296,"percentile":0.22521,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":false},"cwes":["CWE-441"],"published":"2026-10-20T11:30:09Z","modified":"2026-11-03T16:53:56Z","products":[{"vendor":"red hat","product":"streams for apache kafka 2"},{"vendor":"red hat","product":"streams for apache kafka 3"},{"vendor":"red hat","product":"streamshub console for apache kafka®"}],"references":[{"url":"https://access.redhat.com/security/cve/CVE-2026-105311","tags":["vdb-entry","x_refsource_REDHAT","advisory"]},{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2510875","tags":["issue-tracking","x_refsource_REDHAT","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-105311","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-h4vv-pfp4-5x34"},{"url":"https://access.redhat.com/downloads/content/package-browser/","tags":["web"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/105xxx/CVE-2026-105311.json","tags":["advisory"]},{"url":"https://github.com/streamshub/console","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-105311","title":"Console-operator: streams for apache kafka console: cross-namespace kafkauser secret exfiltration via confused deputy","description":"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.","status":"published","published":"2026-10-20T11:30:09.568Z","modified":"2026-11-03T16:53:56.145Z","cvss":[{"version":"3.1","score":7.7,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N","level":"high","assessor":"cna"}],"cwes":["CWE-441"],"updated_at":"2026-11-03T17:29:02.209656Z"}],"euvd":[{"id":"EUVD-2026-104963","description":"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.","status":"published","published":"2026-10-20T11:30:09Z","modified":"2026-11-03T16:53:56Z","cvss":[{"version":"3.1","score":7.7,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N","level":"high"}],"updated_at":"2026-11-03T18:19:04.249016Z"}],"ghsa":[{"id":"GHSA-h4vv-pfp4-5x34","title":"The StreamsHub Console operator acts as a confused deputy: a Kubernetes tenant with permission to...","description":"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.","status":"published","published":"2026-10-20T12:31:36Z","modified":"2026-10-20T12:31:37Z","cvss":[{"version":"3.1","score":7.7,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N","level":"high"}],"cwes":["CWE-441"],"updated_at":"2026-11-02T15:14:03.559653Z"}],"nvd":[{"id":"CVE-2026-105311","description":"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.","status":"published","published":"2026-10-20T12:17:28.55Z","modified":"2026-11-03T17:17:53.173Z","cvss":[{"version":"3.1","score":7.7,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N","level":"high","assessor":"secondary"}],"cwes":["CWE-441"],"updated_at":"2026-11-03T20:18:16.508269Z"}],"osv":[{"id":"CVE-2026-105311","title":"Console-operator: streams for apache kafka console: cross-namespace kafkauser secret exfiltration via confused deputy","description":"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.","status":"published","published":"2026-10-20T11:30:09.568Z","modified":"2026-11-05T02:30:46.599018724Z","cvss":[{"version":"3.1","score":7.7,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N","level":"high"}],"cwes":["CWE-441"],"updated_at":"2026-11-07T03:07:59.773479Z"}]}}
