CVE-2026-105312 (GCVE-0-2026-105312)
Vulnerability from cvelistv5 – Published: 2026-10-20 11:30 – Updated: 2026-10-20 22:33
VLAI
EPSS
VEX
Title
Console-operator: streams for apache kafka console: tenant-controlled container image on clusterrole-bound pod enables namespace-to-cluster privilege escalation
Summary
A Kubernetes tenant with create permission on Console custom resources can set spec.containers.api.spec.image to an arbitrary container image. The operator deploys this image into a pod whose ServiceAccount is bound via ClusterRoleBinding to a ClusterRole granting cluster-wide get/list/watch on all Strimzi CRDs (including KafkaUsers), patch on Kafkas/KafkaRebalances, and cluster-monitoring-view. The attacker's code reads the projected SA token and gains cross-tenant Strimzi control-plane read+write access.
Severity
9.9 (Critical)
SSVC
Exploitation: none
Automatable: no
Technical Impact: total
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2026-10-20 15:16 UTC
CWE
- CWE-269 - Improper Privilege Management
Assigner
References
2 references
| URL | Tags |
|---|---|
| https://access.redhat.com/security/cve/CVE-2026-105312 | vdb-entryx_refsource_REDHAT |
| https://bugzilla.redhat.com/show_bug.cgi?id=2510863 | issue-trackingx_refsource_REDHAT |
Impacted products
3 products
| Vendor | Product | Version | CPE status | |
|---|---|---|---|---|
| Red Hat | StreamsHub Console for Apache Kafka® |
Affected:
0.2.0 , < 0.12.10
(semver)
Affected: 0.13.0 , < 0.14.2 (semver) |
guessed | |
| Red Hat | streams for Apache Kafka 2 |
cpe:/a:redhat:amq_streams:2
|
||
| Red Hat | streams for Apache Kafka 3 |
cpe:/a:redhat:amq_streams:3
|
Date Public
2026-10-20 11:00
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-105312",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-10-20T15:16:22.650365Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-10-20T16:06:30.224Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"collectionURL": "https://github.com/streamshub/console",
"defaultStatus": "unaffected",
"packageName": "console",
"product": "StreamsHub Console for Apache Kafka\u00ae",
"vendor": "Red Hat",
"versions": [
{
"lessThan": "0.12.10",
"status": "affected",
"version": "0.2.0",
"versionType": "semver"
},
{
"lessThan": "0.14.2",
"status": "affected",
"version": "0.13.0",
"versionType": "semver"
}
]
},
{
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"cpes": [
"cpe:/a:redhat:amq_streams:2"
],
"defaultStatus": "affected",
"packageName": "console-operator",
"product": "streams for Apache Kafka 2",
"vendor": "Red Hat"
},
{
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"cpes": [
"cpe:/a:redhat:amq_streams:3"
],
"defaultStatus": "affected",
"packageName": "console-operator",
"product": "streams for Apache Kafka 3",
"vendor": "Red Hat"
}
],
"datePublic": "2026-10-20T11:00:00.000Z",
"descriptions": [
{
"lang": "en",
"value": "A Kubernetes tenant with create permission on Console custom resources can set spec.containers.api.spec.image to an arbitrary container image. The operator deploys this image into a pod whose ServiceAccount is bound via ClusterRoleBinding to a ClusterRole granting cluster-wide get/list/watch on all Strimzi CRDs (including KafkaUsers), patch on Kafkas/KafkaRebalances, and cluster-monitoring-view. The attacker\u0027s code reads the projected SA token and gains cross-tenant Strimzi control-plane read+write access."
}
],
"metrics": [
{
"other": {
"content": {
"namespace": "https://access.redhat.com/security/updates/classification/",
"value": "Important"
},
"type": "Red Hat severity rating"
}
},
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "LOW",
"baseScore": 9.9,
"baseSeverity": "CRITICAL",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "CHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:L",
"version": "3.1"
},
"format": "CVSS"
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-269",
"description": "Improper Privilege Management",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-20T22:33:57.620Z",
"orgId": "53f830b8-0a3f-465b-8143-3b8a9948e749",
"shortName": "redhat"
},
"references": [
{
"tags": [
"vdb-entry",
"x_refsource_REDHAT"
],
"url": "https://access.redhat.com/security/cve/CVE-2026-105312"
},
{
"name": "RHBZ#2510863",
"tags": [
"issue-tracking",
"x_refsource_REDHAT"
],
"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2510863"
}
],
"timeline": [
{
"lang": "en",
"time": "2026-08-04T01:31:04.894Z",
"value": "Reported to Red Hat."
},
{
"lang": "en",
"time": "2026-10-20T11:00:00.000Z",
"value": "Made public."
}
],
"title": "Console-operator: streams for apache kafka console: tenant-controlled container image on clusterrole-bound pod enables namespace-to-cluster privilege escalation",
"workarounds": [
{
"lang": "en",
"value": "1. Restrict Console CR RBAC \u2014 remove create/update/patch verbs on consoles.console.streamshub.github.com from tenant-level Roles. Only cluster administrators should manage Console CRs.\n2. Deploy admission webhook \u2014 use OPA/Gatekeeper or Kyverno policy to validate spec.containers.api.spec.image against a trusted registry allowlist.\n3. Apply network policies \u2014 restrict console-api pod egress to only required endpoints.\n4. Single-tenant deployment \u2014 deploy the Console operator where only trusted administrators manage Console CRs.\n\n--- CME Mitigation Guidance (2026-10-20) ---\nDisclaimer: The following mitigation solutions are provided as a courtesy, pending the application of an official patch. This content was generated utilizing AI tools in conjunction with data from https://cmetaxonomy.org. Customers are advised to independently evaluate and test these temporary mitigations within their own infrastructure.\n\nThe highest-value action is to eliminate unvalidated container image deployment in the Console operator by enforcing image allowlists or removing tenant image override capabilities: upgrade to the fixed Console Operator builds, which requires image allowlist validation or removal of tenant image override capability to prevent deploying unvalidated images into pods bound to cluster-wide Strimzi CRD permissions, closing all 2 injection vectors (arbitrary container image injection via spec.containers.api.spec.image, ServiceAccount token exfiltration from privileged pod). Until patched, this is only a concern on Kubernetes clusters running Streams for Apache Kafka Console where tenants have RBAC permissions to create or update Console custom resources \u2014 single-tenant Kubernetes clusters where only cluster administrators manage Console custom resources are unaffected \u2014 so remove create, update, and patch permissions on Console custom resources from tenant-level RBAC roles and deploy admission webhooks to enforce container image allowlists. As a compensating measure, configure Kubernetes API server audit logging to detect Console custom resource changes and anomalous ServiceAccount operations, apply Kubernetes NetworkPolicies to block outbound pod traffic to the API server and external endpoints, restrict outbound egress to authorized endpoints to prevent ServiceAccount token exfiltration, separate tenant custom resource creation duties from privileged workload deployment, scope the console-server ServiceAccount to minimum required namespace permissions rather than cluster-wide access, and deploy Falco or eBPF runtime security to detect ServiceAccount token file access and unauthorized processes. These controls limit blast radius and contain exploitation, but they do not fix the underlying unvalidated container image specification \u2014 apply the upstream patch to fully remediate.\n\nHighest-impact CME: CME-206 Network Policy (Kubernetes) (medium)"
}
],
"x_generator": {
"engine": "cvelib 1.8.0"
},
"x_redhatCweChain": "CWE-269: Improper Privilege Management"
}
},
"cveMetadata": {
"assignerOrgId": "53f830b8-0a3f-465b-8143-3b8a9948e749",
"assignerShortName": "redhat",
"cveId": "CVE-2026-105312",
"datePublished": "2026-10-20T11:30:20.850Z",
"dateReserved": "2026-10-05T07:03:59.012Z",
"dateUpdated": "2026-10-20T22:33:57.620Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"epss": {
"cve": "CVE-2026-105312",
"date": "2026-10-23",
"epss": "0.00336",
"percentile": "0.25813"
},
"nvd": {
"cve": {
"affected": [
{
"affectedData": [
{
"collectionURL": "https://github.com/streamshub/console",
"defaultStatus": "unaffected",
"packageName": "console",
"product": "StreamsHub Console for Apache Kafka\u00ae",
"vendor": "Red Hat",
"versions": [
{
"lessThan": "0.12.10",
"status": "affected",
"version": "0.2.0",
"versionType": "semver"
},
{
"lessThan": "0.14.2",
"status": "affected",
"version": "0.13.0",
"versionType": "semver"
}
]
},
{
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"cpes": [
"cpe:/a:redhat:amq_streams:2"
],
"defaultStatus": "affected",
"packageName": "console-operator",
"product": "streams for Apache Kafka 2",
"vendor": "Red Hat"
},
{
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"cpes": [
"cpe:/a:redhat:amq_streams:3"
],
"defaultStatus": "affected",
"packageName": "console-operator",
"product": "streams for Apache Kafka 3",
"vendor": "Red Hat"
}
],
"source": "secalert@redhat.com"
}
],
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "A Kubernetes tenant with create permission on Console custom resources can set spec.containers.api.spec.image to an arbitrary container image. The operator deploys this image into a pod whose ServiceAccount is bound via ClusterRoleBinding to a ClusterRole granting cluster-wide get/list/watch on all Strimzi CRDs (including KafkaUsers), patch on Kafkas/KafkaRebalances, and cluster-monitoring-view. The attacker\u0027s code reads the projected SA token and gains cross-tenant Strimzi control-plane read+write access."
}
],
"id": "CVE-2026-105312",
"lastModified": "2026-10-20T17:17:27.860",
"metrics": {
"cvssMetricV31": [
{
"cvssData": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "LOW",
"baseScore": 9.9,
"baseSeverity": "CRITICAL",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "CHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:L",
"version": "3.1"
},
"exploitabilityScore": 3.1,
"impactScore": 6.0,
"source": "secalert@redhat.com",
"type": "Secondary"
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2026-105312",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-10-20T15:16:22.650365Z",
"version": "2.0.3"
}
}
]
},
"published": "2026-10-20T12:17:28.703",
"references": [
{
"source": "secalert@redhat.com",
"url": "https://access.redhat.com/security/cve/CVE-2026-105312"
},
{
"source": "secalert@redhat.com",
"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2510863"
}
],
"sourceIdentifier": "secalert@redhat.com",
"vulnStatus": "Awaiting Analysis",
"weaknesses": [
{
"description": [
{
"lang": "en",
"value": "CWE-269"
}
],
"source": "secalert@redhat.com",
"type": "Secondary"
}
]
}
},
"redhat_vex": {
"aggregate_severity": "Important",
"current_release_date": "2026-10-20T22:33:45+00:00",
"cve": "CVE-2026-105312",
"id": "CVE-2026-105312",
"initial_release_date": "2026-10-20T11:00:00+00:00",
"product_status:known_affected": "2",
"source": "Red Hat CSAF VEX",
"status": "final",
"title": "console-operator: Streams for Apache Kafka Console: tenant-controlled container image on ClusterRole-bound pod enables namespace-to-cluster privilege escalation",
"url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-105312.json",
"version": "3"
},
"vulnrichment": {
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-105312",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-10-20T15:16:22.650365Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-10-20T15:16:23.474Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"collectionURL": "https://github.com/streamshub/console",
"defaultStatus": "unaffected",
"packageName": "console",
"product": "StreamsHub Console for Apache Kafka\u00ae",
"vendor": "Red Hat",
"versions": [
{
"lessThan": "0.12.10",
"status": "affected",
"version": "0.2.0",
"versionType": "semver"
},
{
"lessThan": "0.14.2",
"status": "affected",
"version": "0.13.0",
"versionType": "semver"
}
]
},
{
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"cpes": [
"cpe:/a:redhat:amq_streams:2"
],
"defaultStatus": "affected",
"packageName": "console-operator",
"product": "streams for Apache Kafka 2",
"vendor": "Red Hat"
},
{
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"cpes": [
"cpe:/a:redhat:amq_streams:3"
],
"defaultStatus": "affected",
"packageName": "console-operator",
"product": "streams for Apache Kafka 3",
"vendor": "Red Hat"
}
],
"datePublic": "2026-10-20T11:00:00.000Z",
"descriptions": [
{
"lang": "en",
"value": "A Kubernetes tenant with create permission on Console custom resources can set spec.containers.api.spec.image to an arbitrary container image. The operator deploys this image into a pod whose ServiceAccount is bound via ClusterRoleBinding to a ClusterRole granting cluster-wide get/list/watch on all Strimzi CRDs (including KafkaUsers), patch on Kafkas/KafkaRebalances, and cluster-monitoring-view. The attacker\u0027s code reads the projected SA token and gains cross-tenant Strimzi control-plane read+write access."
}
],
"metrics": [
{
"other": {
"content": {
"namespace": "https://access.redhat.com/security/updates/classification/",
"value": "Important"
},
"type": "Red Hat severity rating"
}
},
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "LOW",
"baseScore": 9.9,
"baseSeverity": "CRITICAL",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "CHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:L",
"version": "3.1"
},
"format": "CVSS"
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-269",
"description": "Improper Privilege Management",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-20T11:30:20.850Z",
"orgId": "53f830b8-0a3f-465b-8143-3b8a9948e749",
"shortName": "redhat"
},
"references": [
{
"tags": [
"vdb-entry",
"x_refsource_REDHAT"
],
"url": "https://access.redhat.com/security/cve/CVE-2026-105312"
},
{
"name": "RHBZ#2510863",
"tags": [
"issue-tracking",
"x_refsource_REDHAT"
],
"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2510863"
}
],
"timeline": [
{
"lang": "en",
"time": "2026-08-04T01:31:04.894Z",
"value": "Reported to Red Hat."
},
{
"lang": "en",
"time": "2026-10-20T11:00:00.000Z",
"value": "Made public."
}
],
"title": "Console-operator: streams for apache kafka console: tenant-controlled container image on clusterrole-bound pod enables namespace-to-cluster privilege escalation",
"workarounds": [
{
"lang": "en",
"value": "1. Restrict Console CR RBAC \u2014 remove create/update/patch verbs on consoles.console.streamshub.github.com from tenant-level Roles. Only cluster administrators should manage Console CRs.\n2. Deploy admission webhook \u2014 use OPA/Gatekeeper or Kyverno policy to validate spec.containers.api.spec.image against a trusted registry allowlist.\n3. Apply network policies \u2014 restrict console-api pod egress to only required endpoints.\n4. Single-tenant deployment \u2014 deploy the Console operator where only trusted administrators manage Console CRs."
}
],
"x_generator": {
"engine": "cvelib 1.8.0"
},
"x_redhatCweChain": "CWE-269: Improper Privilege Management"
}
},
"cveMetadata": {
"assignerOrgId": "53f830b8-0a3f-465b-8143-3b8a9948e749",
"assignerShortName": "redhat",
"cveId": "CVE-2026-105312",
"datePublished": "2026-10-20T11:30:20.850Z",
"dateReserved": "2026-10-05T07:03:59.012Z",
"dateUpdated": "2026-10-20T16:06:30.224Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
}
}
Loading…
Loading…
Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.
Experimental. This forecast is provided for visualization only and may change without notice. Do not use it for operational decisions.
Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline
Sightings and recorded dates, grouped by day · UTC
Loading timeline…
Loading…
Loading…
The MITRE ATT&CK techniques below are AI-generated suggestions, inferred from the description of the
vulnerability by the CIRCL/vulnerability-attack-technique-classification-roberta-base
model, served locally by ML-Gateway.
They have not been verified by an analyst and are provided for guidance only.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
Loading…
Related by attack behaviour
Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.