Skip to content
Back to Blog
·9 min read·technology

Kubernetes Security: 8 Misconfigurations India Must Fix

Kubernetes misconfigurations — exposed API servers, weak RBAC, privileged containers — cause most cluster breaches. What Indian SaaS teams must fix first.

BR

Bachao.AI Research Team

Cybersecurity Research

Review Your Cloud Security

Security exposure this creates

Unpatched vulnerabilities in your tech stack are the #1 entry point for breaches targeting Indian businesses. Here's what to watch.

Kubernetes security misconfigurations are the leading cause of container breaches worldwide — and Indian SaaS companies are no exception. Attackers do not need zero-days to compromise a Kubernetes cluster. Eight misconfigurations are found in the majority of real-world incidents: an exposed API server or dashboard, absent RBAC, privileged containers, missing network policies, secrets stored in environment variables, over-permissive default service accounts, unenforced pod security standards, and unscanned container images. Each misconfiguration is a door. Together, they form a highway from internet to database. This guide covers every misconfiguration, how attackers chain them, and how to close each gap — with India SaaS context throughout.

67%of organisations experienced a Kubernetes security incident in the past year (Red Hat State of Kubernetes Security 2024)
49%of respondents cite misconfiguration as a top security concern in Kubernetes environments (CNCF Survey 2023)

Why Indian SaaS Teams Are Especially Exposed

Indian product companies have adopted Kubernetes rapidly — managed clusters on AWS EKS, Google GKE, and Azure AKS are now default infrastructure. Speed of shipping, small platform teams, and copy-pasted Helm charts from the internet mean security defaults are rarely revisited after initial setup. Add a compressed regulatory environment (CERT-In 2022 incident-reporting rules, DPDP Act 2023 data protection requirements) and the blast radius of a cluster compromise extends well beyond service downtime into reportable data breaches.

⚠️
WARNING
A Kubernetes cluster is not secure by default. Every managed cloud provider hands you a working cluster — not a hardened one. Hardening is your responsibility, not the cloud provider's.

The Attacker's Path: From Exposed API to Full Cluster Compromise

Before examining each misconfiguration, understand how they chain. Attackers rarely need all eight. Two or three chained together is enough for full cluster access.

graph TD A[Internet Scanner finds open port 6443 or 8001] --> B{API server auth check} B -->|Anonymous auth enabled| C[Unauthenticated API access] B -->|Weak kubeconfig leaked| C C --> D[List pods and secrets via kubectl] D --> E{RBAC configured?} E -->|No RBAC — default ClusterAdmin| F[Read all Secrets and ConfigMaps] E -->|Weak RBAC — wildcard verbs| F F --> G[Extract DB creds from env vars or Secrets] G --> H{Privileged container exists?} H -->|Yes| I[Escape to host node via /proc or /dev] H -->|No network policy| J[Pivot to other namespaces laterally] I --> K[Install crypto miner or exfiltrate data] J --> K K --> L[Full cluster compromise — data breach or ransomware] style A fill:#5f1e1e,stroke:#EF4444,color:#e2e8f0 style C fill:#5f1e1e,stroke:#EF4444,color:#e2e8f0 style F fill:#5f1e1e,stroke:#EF4444,color:#e2e8f0 style I fill:#5f1e1e,stroke:#EF4444,color:#e2e8f0 style K fill:#5f1e1e,stroke:#EF4444,color:#e2e8f0 style L fill:#5f1e1e,stroke:#EF4444,color:#e2e8f0 style B fill:#1e3a5f,stroke:#3B82F6,color:#e2e8f0 style D fill:#1e3a5f,stroke:#3B82F6,color:#e2e8f0 style E fill:#1e3a5f,stroke:#3B82F6,color:#e2e8f0 style G fill:#1e3a5f,stroke:#3B82F6,color:#e2e8f0 style H fill:#1e3a5f,stroke:#3B82F6,color:#e2e8f0 style J fill:#5f1e1e,stroke:#EF4444,color:#e2e8f0

Distribution of K8s Misconfiguration Types in Real-World Incidents

pie title K8s Misconfiguration Types — Incident Share "Exposed API Server or Dashboard" : 22 "Missing or Weak RBAC" : 18 "Secrets in Env Variables" : 17 "Privileged Containers" : 14 "No Network Policies" : 12 "Over-permissive Service Accounts" : 9 "Unscanned Images" : 5 "Missing Pod Security Standards" : 3

Approximate relative proportions based on incident patterns reported in the Red Hat State of Kubernetes Security (2024) and CNCF Annual Survey (2023). Actual share varies by environment and sector.


Know your vulnerabilities before attackers do

Run a free VAPT scan — takes 5 minutes, no signup required.

Book Your Free Scan

Misconfiguration 1 — Exposed API Server and Dashboard

The Kubernetes API server (port 6443) and the web dashboard (port 8001) are the front doors to your cluster. When either is exposed to the internet with anonymous authentication enabled, an attacker with a port scanner is already inside.

Anonymous authentication (--anonymous-auth=true) is disabled by default on managed clusters — but teams re-enable it for convenience and forget to reverse it. The Kubernetes dashboard, when deployed without a proper authenticating proxy, exposes full cluster control through a browser UI.

Fix: Restrict API server access to VPN/private network CIDRs only. Use --anonymous-auth=false. If you deploy the dashboard, front it with an OAuth2 proxy. Audit via:

bash
kubectl get pods -n kubernetes-dashboard
kubectl auth can-i "*" "*" --as=system:anonymous

The second command returning yes for any verb is an immediate P0 finding.


Misconfiguration 2 — No RBAC or Wildcard Role Bindings

Role-Based Access Control (RBAC) is enabled by default in modern Kubernetes, but having RBAC enabled is not the same as having RBAC configured correctly. Common anti-patterns seen in Indian SaaS clusters:

    1. ClusterRoleBinding granting cluster-admin to system:authenticated (every authenticated user is a superuser)
    2. verbs: [""] and resources: [""] in custom roles
    3. Granting secrets read access cluster-wide to application service accounts
Fix: Apply least-privilege. Application pods need specific verbs on specific resources in their own namespace. Audit all ClusterRoleBindings referencing cluster-admin and verify each is intentional. The NSA-CISA guide at https://media.defense.gov/2022/Aug/29/2003066362/-1/-1/0/CTR_KUBERNETES_HARDENING_GUIDANCE_1.2_20220829.PDF has a full RBAC hardening checklist.
🚨
DANGER
Never bind cluster-admin to a service account used by an application workload. If that pod is compromised, the attacker inherits full cluster control instantly.

Misconfiguration 3 — Privileged Containers

A container running with securityContext.privileged: true is effectively running as root on the host node. Combined with a writable /proc mount or /dev access, a container escape is trivial — the attacker walks from the container into the underlying EC2 or GCP VM and from there into the cloud IAM role attached to that node.

Crypto-mining groups have weaponised this specific path since 2019. It remains one of the most common post-exploitation techniques in Kubernetes incidents.

Fix: Set privileged: false and allowPrivilegeEscalation: false in every pod's security context. Drop all Linux capabilities and add back only what the specific workload needs.

yaml
securityContext:
  privileged: false
  allowPrivilegeEscalation: false
  runAsNonRoot: true
  capabilities:
    drop:
      - ALL

Misconfiguration 4 — No Network Policies

By default, every pod in a Kubernetes cluster can talk to every other pod across every namespace. There are no firewall rules between workloads unless you explicitly write NetworkPolicy objects.

This means that if an attacker compromises a low-value microservice (say, a public-facing marketing API), they can immediately probe your payment service, internal admin API, and database pods on their private ClusterIPs — all from inside the cluster, with no perimeter to cross.

Fix: Start with a default-deny policy per namespace, then allow only the specific ingress and egress flows each workload actually needs. Tools like Cilium or Calico provide richer policy models than the base Kubernetes NetworkPolicy API.


Misconfiguration 5 — Secrets in Environment Variables

Kubernetes Secrets are base64-encoded, not encrypted, at rest by default. But the problem most teams overlook is that they put credentials directly in env: or in ConfigMap values — sometimes even hardcoding them in Deployment YAML committed to Git.

When an attacker has read access to the API (kubectl get pods -o yaml), they see every environment variable injected into every container. When a developer's laptop is compromised, every secret in every repo's YAML history is exposed.

Fix: Three layers are required:

  1. Use Kubernetes Secret objects (not ConfigMaps or raw env values) for credentials
  2. Enable Envelope Encryption at rest with a KMS provider (AWS KMS, GCP KMS) — base64 is not encryption
  3. For production, migrate to a secrets manager (HashiCorp Vault, AWS Secrets Manager, GCP Secret Manager) with dynamic short-lived credentials
🛡️
SECURITY
Audit your Git history with tools like trufflehog before assuming your secrets are safe. Rotating a secret that was committed to Git history is not enough unless you also rewrite or purge the history.

Misconfiguration 6 — Default Service Accounts

Every pod in Kubernetes is automatically assigned the default service account in its namespace unless you specify otherwise. By default, this service account has a mounted token that can authenticate to the Kubernetes API.

If RBAC is weak (misconfiguration 2) or if the default service account has been granted excess permissions, any code running in any pod can query the API, list secrets, and escalate within the cluster — using nothing but the token mounted at /var/run/secrets/kubernetes.io/serviceaccount/token.

Fix: Set automountServiceAccountToken: false on every pod that does not need to call the Kubernetes API. Create dedicated service accounts for workloads that do need API access, and bind them to narrowly scoped roles.


Misconfiguration 7 — Missing Pod Security Standards

Pod Security Standards (PSS) replaced the deprecated PodSecurityPolicy in Kubernetes 1.25+. PSS defines three profiles — privileged, baseline, and restricted — that can be enforced at the namespace level via the built-in Pod Security Admission controller.

Most clusters — including fresh EKS and GKE clusters — ship with no PSS enforcement. This means pods can run as root, mount host paths, use host networking, and request privileged mode with zero cluster-level pushback.

Fix: Label production namespaces to enforce at minimum baseline, ideally restricted:

bash
kubectl label namespace production \
  pod-security.kubernetes.io/enforce=restricted \
  pod-security.kubernetes.io/enforce-version=latest

Enforce in audit mode first to catch violations without breaking workloads, then escalate to enforce.


Misconfiguration 8 — Unscanned Container Images

Running unscanned images means you have no visibility into the CVEs present in your running workloads. A container image pulling node:18 from Docker Hub today might include libraries with known remote code execution vulnerabilities published six months ago.

Indian SaaS teams frequently pull base images from public registries without scanning, and rely on cloud provider SLAs for the underlying infrastructure security — while remaining blind to application-layer vulnerabilities inside their own images.

Fix: Integrate image scanning into your CI pipeline before images are pushed to your registry. Tools like Trivy (open source), AWS Inspector, or GCP Artifact Analysis can scan images for known CVEs and fail the build on critical findings. Complement with admission controllers (OPA Gatekeeper, Kyverno) that block deployment of images without a clean scan certificate.


Kubernetes Security Hardening Checklist

ControlKubernetes DefaultHardened StatePriority
API server anonymous authDisabled on managed clustersExplicitly --anonymous-auth=false + private network onlyCritical
RBACEnabledLeast-privilege roles, no wildcard bindingsCritical
Privileged containersAllowedBlocked via PSS restrictedCritical
Network policiesNoneDefault-deny + explicit allowHigh
Secrets encryption at restBase64 onlyKMS envelope encryptionHigh
Default service account tokenAuto-mountedautomountServiceAccountToken: falseHigh
Pod Security StandardsNot enforcedrestricted on production namespacesHigh
Image scanningNoneCI gate + admission controllerMedium
Dashboard exposureDeployed on requestBehind OAuth2 proxy or removedCritical
Audit loggingOffEnabled with structured log exportMedium

Regulatory Context for Indian Companies

India's CERT-In Cyber Security Directions (April 2022) require organisations to report incidents — including those arising from infrastructure misconfigurations — within six hours of detection. A Kubernetes misconfiguration that leads to unauthorised data access is a reportable incident under these rules.

The DPDP Act 2023 adds data protection obligations that directly cover Kubernetes workloads handling personal data. Inadequate security controls — misconfigured clusters are an explicit example of inadequate controls — can result in regulatory action. If your cluster is processing personal data of Indian users, security hardening is not optional. Learn more about your obligations at the Bachao.AI /dpdp-compliance page.

CERT-In guidance is available at https://www.cert-in.org.in. The CNCF's security whitepaper (updated 2022) is a complementary reference at https://github.com/cncf/tag-security/blob/main/security-whitepaper/v2/CNCF_cloud-native-security-whitepaper-May2022-v2.pdf.


How Bachao.AI Helps

Bachao.AI, built by Dhisattva AI Pvt Ltd, automates infrastructure and application security assessments — including detection of exposed Kubernetes endpoints, misconfigured RBAC, privileged container usage, and secrets in environment variables. Findings are delivered as structured, remediation-first reports with severity scoring aligned to CVSS v3.1 and CERT-In classification. Start with a free VAPT scan to get a baseline of your cluster's exposure before an attacker finds it for you.

🎯Key Takeaway
Kubernetes clusters in Indian SaaS environments are compromised not by sophisticated exploits but by basic misconfigurations left unaddressed after initial setup. The eight gaps covered here — exposed endpoints, weak RBAC, privileged containers, open pod networks, cleartext secrets, default service accounts, unenforced pod security, and unscanned images — can each be fixed in hours. Chained together, they produce breaches that take months to recover from and, under India's CERT-In and DPDP frameworks, carry regulatory consequences. Fix the defaults before the scanner does.

Frequently Asked Questions

Is Kubernetes secure by default on managed services like AWS EKS or GKE?
Managed Kubernetes services handle the control-plane patching and some baseline hardening, but they do not configure RBAC policies, network policies, pod security standards, or image scanning for your workloads. Those controls are entirely the customer's responsibility. The cloud provider's shared-responsibility model is explicit on this point.
What is the fastest way to find Kubernetes misconfigurations in my existing cluster?
Run kubectl-bench (a CIS Kubernetes Benchmark tool) and Trivy's cluster scan (trivy k8s --report summary cluster) against your cluster. Together they cover RBAC issues, privileged containers, API server flags, and image vulnerabilities in a single pass and produce a prioritised findings list.
Do Kubernetes security misconfigurations need to be reported to CERT-In?
A misconfiguration alone is not a reportable event. If the misconfiguration leads to an actual security incident — unauthorised access, data exfiltration, service disruption — it becomes reportable under CERT-In's 2022 directions within six hours of detection. The misconfiguration itself should be remediated and documented internally.
What is the difference between Pod Security Policies and Pod Security Standards?
PodSecurityPolicy (PSP) was a Kubernetes admission controller that was deprecated in v1.21 and removed in v1.25. Pod Security Standards (PSS), enforced via the built-in Pod Security Admission controller, replaced PSP from v1.25 onward. If you are on a cluster version before 1.25, you need PSP or a third-party policy engine like OPA Gatekeeper. On 1.25+, use PSS namespace labels.
Can secrets stored in Kubernetes Secrets objects be considered encrypted?
By default, no. Kubernetes Secrets are base64-encoded in etcd, which is encoding, not encryption. To achieve actual encryption at rest, you must configure an encryption provider in the kube-apiserver configuration pointing to a KMS key. Without this configuration, any attacker with etcd access can read all your secrets in plaintext after a single base64 decode.
How do network policies protect against lateral movement inside a Kubernetes cluster?
Kubernetes NetworkPolicy objects act as namespace-scoped firewalls between pods. Without any NetworkPolicy, all pods can reach all other pods on their ClusterIPs regardless of namespace. A default-deny NetworkPolicy drops all traffic that is not explicitly permitted, meaning a compromised frontend pod cannot reach a database pod or admin API unless a specific allow rule exists. This limits the blast radius of any single pod compromise to only the services that pod legitimately needs to talk to.
BR

Bachao.AI Research Team

Cybersecurity Research

AI-powered security research and threat intelligence from the Bachao.AI team. Covering the latest vulnerabilities, CVEs, and cybersecurity developments affecting Indian businesses.

Get cybersecurity insights for Indian SMBs

Weekly vulnerability alerts, DPDP compliance tips, and security guides. No spam — unsubscribe anytime.

We respect your privacy. Your email is never shared.

Find misconfigurations before attackers do

Free automated scan — risk score in under 2 hours. No credit card required.

Review Your Cloud Security
Find your vulnerabilitiesStart free scan →