The revelation of the RBAC Buster campaign targeting Kubernetes clusters for cryptocurrency mining demands a sophisticated response from operators running crypto infrastructure. With 60 confirmed compromised clusters and a malicious Docker image pulled over 14,000 times, the attack demonstrates that default Kubernetes configurations are dangerously inadequate for securing high-value workloads like crypto exchange backends, wallet services, and DeFi protocol nodes. This tutorial provides a step-by-step walkthrough for hardening Kubernetes clusters against RBAC-based attacks, drawing on the specific tactics observed in the Aqua Security disclosure.
The Objective
By the end of this tutorial, you will have implemented a multi-layered Kubernetes security posture that prevents the specific attack chain used in the RBAC Buster campaign and provides defense against similar persistence techniques. The hardening covers API server authentication, RBAC policy auditing, container image verification, runtime threat detection, and network segmentation. Each step is designed to be applicable to existing clusters with minimal disruption to running workloads.
Prerequisites
This tutorial assumes you have administrative access to a Kubernetes cluster running version 1.24 or later, kubectl configured with cluster-admin privileges, and familiarity with basic Kubernetes concepts including pods, services, roles, and bindings. You will also need access to the cluster’s API server configuration, which typically requires SSH access to the control plane nodes. For cloud-managed clusters such as EKS, GKE, or AKS, some steps will be performed through the provider’s console or CLI rather than directly on nodes.
Before beginning, create a backup of your current cluster configuration by exporting all existing RBAC objects. Run the command kubectl get clusterroles,clusterrolebindings,roles,rolebindings -o yaml > cluster-rbac-backup.yaml. This backup allows you to restore the original state if any hardening step disrupts critical workloads.
Step-by-Step Walkthrough
Step 1: Disable Anonymous Authentication
The RBAC Buster campaign’s initial access vector relies on anonymous users having privileges on the API server. Disable anonymous authentication by editing the API server pod configuration on each control plane node. Add the flag –anonymous-auth=false to the kube-apiserver command in /etc/kubernetes/manifests/kube-apiserver.yaml. For managed clusters, check your provider’s documentation for disabling anonymous access through the control plane configuration API. After making this change, verify that anonymous requests are rejected by running kubectl get nodes –as=system:anonymous. You should receive a 401 Unauthorized response.
Step 2: Audit Existing RBAC Policies
Download and run the RBAC audit tool kubectl-who-can or use kubectl’s built-in RBAC analysis commands. Execute kubectl auth can-i –list –as=system:anonymous to verify that anonymous users have no permissions. Then audit all ClusterRoleBindings for bindings that grant excessive privileges by running kubectl get clusterrolebindings -o json and reviewing each binding’s roleRef and subjects. Pay special attention to any bindings that reference service accounts in the kube-system namespace with names similar to system components — these are the exact indicators of RBAC Buster compromise.
Step 3: Implement Image Verification Policies
Deploy an admission controller such as OPA Gatekeeper or Kyverno to enforce container image policies. Create a policy that restricts image sources to approved registries and requires cryptographic signatures. For the RBAC Buster attack specifically, this prevents deployment of images from the typosquatted kuberntesio Docker Hub account. A basic Kyverno policy that blocks images from untrusted registries can be deployed with a YAML manifest that validates the image registry against an allowlist before permitting pod creation.
Step 4: Deploy Runtime Security Monitoring
Install a runtime security tool like Falco to detect suspicious process execution within containers. Configure Falco rules that specifically detect cryptocurrency mining activity, including known mining binary names like xmrig and nbminer, as well as outbound connections to mining pool addresses on standard Stratum protocol ports. The RBAC Buster campaign deployed mining containers as DaemonSets, so add detection rules for new DaemonSet creation in the kube-system namespace by non-system service accounts.
Step 5: Implement Network Policies
Create default-deny network policies in all namespaces to prevent unauthorized pod-to-pod communication. Then create specific allow rules for legitimate traffic patterns. This limits the blast radius of any compromise by preventing a malicious container from exfiltrating data to external mining pools or command-and-control servers. For crypto infrastructure specifically, ensure that only designated pods can communicate with blockchain RPC endpoints and that wallet service pods are isolated from general application workloads.
Troubleshooting
If disabling anonymous authentication breaks existing workloads, check for service accounts or cron jobs that rely on anonymous API access — this is more common in older clusters and indicates a misconfiguration that should be remediated rather than reverted. Common issues include external health checks that query the API server without authentication and CI/CD pipelines that interact with the cluster using default service account tokens without proper RBAC bindings.
If admission controller policies block legitimate image pulls, start with an audit-only mode that logs violations without enforcing them. Review the logs after 48 hours to identify which legitimate images are being caught by the policy, then add specific exceptions before switching to enforcement mode. This phased approach prevents operational disruption while still achieving the security objective.
Mastering the Skill
Kubernetes security for crypto infrastructure is an ongoing discipline, not a one-time configuration. Establish monthly RBAC audits using automated tooling, subscribe to security advisories from the Kubernetes project and your cloud provider, and participate in threat intelligence sharing communities focused on crypto infrastructure attacks. Consider implementing a GitOps approach where all cluster configurations are stored in version-controlled repositories with mandatory security review before changes are applied. As the RBAC Buster campaign demonstrates, attackers are constantly evolving their techniques, and defenders must evolve at least as quickly to protect the billions of dollars flowing through crypto infrastructure.
Disclaimer: This article is for educational purposes only. Always test security changes in a non-production environment before applying them to systems handling live traffic or assets.

60 compromised clusters and 14k pulls of that docker image before anyone noticed. k8s defaults are really just an invitation at this point
the defaults assume you will lock things down before going to production. most teams never do though, so fair point
teams never lock things down because k8s setup guides prioritize getting it working over getting it secure. the defaults are optimized for demos not production
Nadia V. k8s tutorials in general are optimized for hello-world demos. production hardening is an afterthought in most documentation
14000 pulls before detection is insane. container registries need real-time malware scanning not just after-the-fact takedowns
k8s_hardened_ 14k pulls because most teams pull images by tag not by digest. if you reference :latest you get whatever was pushed last including malware
pinning by digest should be the default not the exception. the fact that k8s lets you pull :latest in production is basically a security bug dressed as a feature
crypto mining via compromised k8s clusters is the silent drain nobody tracks. by the time you notice the CPU spike your cloud bill is already 5x normal
resource quotas and limitranges would catch a lot of this crypto mining. if your cluster suddenly spikes to 90% CPU on nodes that usually idle at 15%, thats a signal not a workload
60 clusters compromised because nobody bothered with RBAC least-privilege. this isnt a kubernetes problem, its a copy-paste-from-tutorial problem