In some situations, Strimzi creates an incorrect Kubernetes Role which grants the Apache Kafka Connect and Apache Kafka MirrorMaker 2 operands the GET access to all Kubernetes Secrets that exist in the given Kubernetes namespace. The exact scenario when this happens is when:
.spec.tls.trustedCertificates section in the KafkaConnect CR)type: tls in .spec.authentication section of the KafkaConnect CR)type: oauth authentication (no .spec.authentication.tlsTrustedCertificates section in the KafkaConnect CR).spec.target.tls.trustedCertificates section in the KafkaConnect CR)type: tls in .spec.target.authentication section of the KafkaConnect CR)type: oauth authentication (no .spec.target.authentication.tlsTrustedCertificates section in the KafkaConnect CR).spec.clusters[].tls.trustedCertificates section in the KafkaConnect CR for the target cluster)type: tls in .spec.clusters[].authentication section of the KafkaConnect CR for the target cluster)type: oauth authentication (no .spec.clusters[].authentication.tlsTrustedCertificates section in the KafkaConnect CR for the target cluster)When the operands configured as described above are deployed with Strimzi >= 0.47.0 and <= 0.49.0, any code running within their Pods and using their Service Account for authentication will be able to GET any Kubernetes Secret from the same namespace. This can be done by executing 3rd party tools from the Pods. Or directly from the Kafka Connect code, for example, using configuration providers or HTTP connectors. The Pods are allowed to only GET the Secrets. They are not allowed to list, watch, modify, or delete the Secrets.
The issue is fixed in Strimzi 0.49.1.
There is no workaround for this issue when using the affected operands with the affected configurations.
{
"cwe_ids": [
"CWE-200",
"CWE-863"
],
"github_reviewed": true,
"github_reviewed_at": "2025-12-05T22:02:37Z",
"nvd_published_at": "2025-12-05T19:15:52Z",
"severity": "HIGH"
}