{"id":"CVE-2026-105311","kind":"vulnerability","aliases":["CVE-2026-105311"],"related":[],"title":"StreamsHub Console operator leaks Kafka user secrets across Kubernetes namespaces","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.","summary":"The StreamsHub Console operator copies KafkaUser Secrets (SASL credentials or TLS private keys) from any namespace into a Secret the requesting tenant can read, because it lacks a same-namespace check. A Kubernetes tenant allowed to create a Console resource can read Kafka credentials belonging to other tenants.","severity":"high","cvss":7.7,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"streamshub-console","fixed":["0.12.10","0.14.2"],"affected":">= 0.2.0, < 0.12.10; >= 0.13.0, < 0.14.2","ecosystem":"vendor"}],"ecosystems":[],"tags":["console-operator","infrastructure","kafka","kubernetes","multi-tenant","streamshub","strimzi"],"not_affected_if":["console-cr-admin-only","console-creation-restricted","single-tenant","single-tenant-cluster","version-0.14.2+"],"how_to_check":"Run: kubectl get deploy -A -o wide | grep -i console, and check the operator image tag; versions >= 0.2.0 < 0.12.10 and >= 0.13.0 < 0.14.2 are affected. Run: kubectl get console -A -o yaml and look for spec.kafkaClusters[].credentials.kafkaUser.namespace values that differ from the CR's own namespace. Check who can create Console CRs: kubectl auth can-i create consoles.console.streamshub.github.com --as <tenant-user> -n <ns>. Rotate any KafkaUser credentials that a cross-namespace CR could have copied.","fix":"Upgrade the StreamsHub Console operator to 0.14.2 (0.13.x/0.14.x) or 0.12.10 (0.12.x line). From 0.14.2 the operator checks that the Console service account may read the referenced KafkaUser Secret (SubjectAccessReview), so grant it a Role/RoleBinding on any KafkaUser Secrets it must use. Until upgraded: remove create/update on consoles.console.streamshub.github.com from tenant roles, and audit Console CRs.","status":"open","published_at":"2026-10-20T12:17:28+00:00","first_seen_at":"2026-10-23T21:57:20+00:00","triaged_at":"2026-10-25T03:10:50+00:00","updated_at":"2026-10-25T03:31:33+00:00","category":"infrastructure","confidence":0.8,"triage":{"at":"2026-10-25T03:10:50Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"network","title":"StreamsHub Console operator leaks Kafka user secrets across Kubernetes namespaces","impact":"high","summary":"The StreamsHub Console operator copies KafkaUser Secrets (SASL credentials or TLS private keys) from any namespace into a Secret the requesting tenant can read, because it lacks a same-namespace check. A Kubernetes tenant allowed to create a Console resource can read Kafka credentials belonging to other tenants.","category":"infrastructure","nicknames":[],"who_cares":["kubernetes","kafka","streamshub","multi-tenant"],"confidence":0.6,"needs_auth":"yes","worst_case":"Kafka SASL credentials and TLS private keys from other namespaces become readable","analyst_note":"Find the fixed StreamsHub Console version and advisory text at the NVD entry (https://nvd.nist.gov/vuln/detail/CVE-2026-105311); sources gave no fix version.","how_to_check":"- Check whether the StreamsHub Console operator is installed with `kubectl get deploy -A | grep -i console`\n- Review Console custom resources for `spec.kafkaClusters[].credentials.kafkaUser.namespace` values that point outside their own namespace with `kubectl get console -A -o yaml`\n- Check the operator's cluster-wide Secrets RBAC with `kubectl get clusterrolebinding -o wide`","needs_analyst":true,"not_affected_if":["single-tenant-cluster","console-creation-restricted"],"who_is_affected":"Teams running the StreamsHub Console operator on a shared Kubernetes cluster where tenants can create Console resources. The data path requires a tenant who can create a Console resource and a Kafka user in another namespace. Single-tenant clusters or clusters where Console creation is restricted to trusted admins are less exposed.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000683,"input_tokens":3397,"output_tokens":687,"severity_before":"high"},"analyst_status":"done","analyst_note":"Find the fixed StreamsHub Console version and advisory text at the NVD entry (https://nvd.nist.gov/vuln/detail/CVE-2026-105311); sources gave no fix version.","search":"'-105311':13A,16A '-2026':12A,15A 'across':8A 'act':84C 'allow':66B 'allowlist':148C 'anywher':150C 'attack':139C 'belong':76B 'check':62B,146C 'cluster':112C 'cluster-wid':111C 'code':153C 'confus':87C 'consol':2A,21B,33B,70B,82C,97C 'console':19A 'console-oper':20B 'copi':35B 'creat':68B,95C 'credenti':39B,75B,124C 'credentials.kafkauser.namespace':103C 'custom':98C 'cve':11A,14A 'deputi':88C 'exist':149C 'infrastructur':23B 'kafka':5A,24B,74B 'kafkaus':36B,121C 'key':43B,128C 'kubernet':9A,25B,64B,90C 'lack':57B 'leak':4A 'materi':133C 'multi':27B 'multi-ten':26B 'namespac':10A,46B,61B,106C,120C,141C,145C 'oper':3A,22B,34B,83C,108C 'path':154C 'permiss':93C 'plaintext':132C 'privat':42B,127C 'rbac':115C 'read':54B,73B,116C 'request':51B 'resourc':71B,99C 'run':109C 'same-namespac':59B,143C 'sasl':38B,123C 'secret':7A,37B,49B,114C,122C,136C 'set':101C 'spec.kafkaclusters':102C 'streamshub':1A,18A,29B,32B,81C 'streamshub-console':17A 'strimzi':30B 'tenant':28B,52B,65B,79B,91C 'tls':41B,126C 'user':6A 'victim':119C 'victim-namespac':118C 'wide':113C 'write':130C","nicknames":[],"mitigations":[],"who_affected":"Clusters running the StreamsHub Console operator (also shipped with Red Hat Streams for Apache Kafka) where non-admin tenants can create or update Console custom resources. Such a tenant can point kafkaUser.namespace at another namespace and read that namespace's Kafka SASL passwords or TLS private keys. Single-tenant clusters where only admins manage Console CRs can mostly skip it, but should still upgrade.","tier":"B","verified":{"fix":{"at":"2026-10-25T03:31:33Z","by":"analyst","run_id":736}},"analyst_revisit_at":null,"first_public_at":"2026-10-20T12:17:28+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N","cvss_by":"secalert@redhat.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-105311","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-105311","severity":null,"published_at":"2026-10-20T12:17:28+00:00","modified_at":"2026-10-21T21:17:44+00:00","first_seen_at":"2026-10-23T21:57:20+00:00","fetched_at":"2026-10-23T22:28:58+00:00","note":null},{"source":"analyst","external_id":"CVE-2026-105311:736","url":null,"severity":null,"published_at":"2026-10-25T03:31:33+00:00","modified_at":"2026-10-25T03:31:33+00:00","first_seen_at":"2026-10-25T03:31:33+00:00","fetched_at":"2026-10-25T03:31:33+00:00","note":"Fix in StreamsHub Console 0.14.2 (release notes + PR #3040) and 0.12.10 for the 0.12 line (0.12.10 from CNA ranges only, release page not read). Red Hat's CME mitigation text is AI-generated, so I did not verify it. No exploitation or PoC found."}],"documents":[{"id":3210,"url":"https://access.redhat.com/security/cve/cve-2026-105311","title":"Red Hat CVE-2026-105311","kind":"advisory","source":"analyst","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":null},{"id":3213,"url":"https://github.com/streamshub/console/pull/3040","title":"streamshub/console #3040 Require Console service account access to KafkaUser secret","kind":"issue","source":"analyst","text":null,"published_at":null,"relation":"fix","confidence":null,"note":null},{"id":3214,"url":"https://github.com/streamshub/console/releases","title":"streamshub/console releases (0.14.2)","kind":"release","source":"analyst","text":null,"published_at":null,"relation":"fix","confidence":null,"note":null}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}