Cloud Computing

CVE-2026-86831: EKS Network Policy Sicherheitslücke ermöglicht Namespace-Bypass – sofort handeln

CVE-2026-86831 erlaubt einen Namespace-Bypass im EKS Network Policy Agent. Welche Versionen betroffen sind, wie Sie upgraden und was Sie sofort prüfen sollten – jetzt lesen.


Am 16. September 2026 hat AWS das Security Bulletin 2026-113-AWS veröffentlicht (CVE-2026-86831, Einstufung „Important“). Es beschreibt eine Schwachstelle im EKS Network Policy Agent, über die NetworkPolicy-Regeln zwischen Namespaces unter bestimmten Bedingungen umgangen werden können. Wer auf Amazon EKS Kubernetes Network Policies mit dem nativen VPC-CNI-Enforcement nutzt, sollte jetzt die Add-on-Version prüfen. Die gute Nachricht: Der Fix ist bereits seit dem 22. Juli 2026 verfügbar.

Was ist der EKS Network Policy Agent?

Architektur des EKS Network Policy Agent: Controller in der Control Plane, Agent und eBPF-Enforcement auf jedem Worker-Node

Kubernetes erlaubt standardmäßig jede Pod-zu-Pod-Kommunikation im Cluster, unabhängig vom Namespace. Mit NetworkPolicy-Objekten schränken Teams diesen Datenverkehr ein. Sie wirken als Namespace-scoped Firewall auf Layer 3 und 4 und steuern Ingress- und Egress-Traffic anhand von Pod- und Namespace-Selektoren.

Auf Amazon EKS setzt seit VPC CNI v1.14.0 ein eigener Network Policy Agent diese Regeln durch. Die Architektur besteht aus zwei Teilen:

  • Der Network Policy Controller läuft in der EKS Control Plane. Er übersetzt NetworkPolicy-Objekte in aufgelöste Endpunktlisten und stellt sie über die Custom Resource policyendpoints.networking.k8s.aws bereit.
  • Der aws-network-policy-agent läuft als Container aws-eks-nodeagent im aws-node-DaemonSet auf jedem Worker-Node. Er liest die PolicyEndpoints und setzt die Regeln über eBPF-Programme durch, die am host-seitigen veth-Interface jedes Pods hängen.

Dieser Ansatz ist performant und tief im Linux-Kernel verankert. Er setzt aber voraus, dass der Agent Pods verschiedener Namespaces zuverlässig auseinanderhalten kann. Genau hier liegt das Problem.

Die Sicherheitslücke im EKS Network Policy Agent: So entsteht der Namespace-Bypass

Laut Bulletin setzt der aws-network-policy-agent in Versionen vor v1.4.0 Pod-Identifikatoren aus Pod-Name und Namespace-Name zusammen, getrennt durch einen Bindestrich (-). Der Bindestrich ist aber sowohl in Pod- als auch in Namespace-Namen erlaubt.

Das führt zu Kollisionen. Ein Pod frontend im Namespace app-prod und ein Pod frontend-app im Namespace prod ergeben beide frontend-app-prod. Der Agent kann die beiden nicht mehr sicher unterscheiden. NetworkPolicy-Regeln für einen Namespace können dadurch fälschlich auf Pods eines anderen Namespace wirken oder dort ausbleiben.

Für einen gezielten Angriff braucht ein Angreifer oder eine kompromittierte Workload das Recht, Pods in einem passenden Namespace anzulegen. Außerdem muss er den Pod-Namen frei wählen können. Pods aus Deployments tragen zufällige Hash-Suffixe, deshalb sind Kollisionen dort unwahrscheinlich. Realistischer sind gezielt benannte Einzel-Pods oder StatefulSets. Gelingt die Kollision, kann der Angreifer möglicherweise Netzwerkzugriff auf Pods erhalten, die durch NetworkPolicies eigentlich abgeschirmt sind. Die Schwachstelle stellt damit die Namespace-Isolation als Sicherheitsgrenze infrage, ein Fundament vieler Multi-Tenant- und Compliance-Architekturen auf EKS.

Betroffen sind nur Cluster, in denen die Network-Policy-Unterstützung des VPC CNI aktiviert ist. Wer Network Policies nicht über das VPC CNI durchsetzt, ist nicht betroffen. Auf Fargate-Pods läuft der Network Policy Agent nicht.

Welche Versionen sind betroffen?

AWS nennt im Bulletin:

  • Amazon VPC CNI Managed Add-on: „1.14.0<1.22.3“
  • aws-network-policy-agent: alle Versionen vor v1.4.0

Der Fix wird erst mit VPC CNI v1.22.4 ausgeliefert, das den Agent v1.4.0 mitbringt. Behandeln Sie deshalb alle VPC-CNI-Versionen ab v1.14.0 und vor v1.22.4 als betroffen, auch v1.22.3. Die Untergrenze v1.14.0 ergibt sich daraus, dass diese Version die native Network-Policy-Unterstützung eingeführt hat. Cluster auf v1.13.x oder älter sind von dieser Lücke nicht betroffen, sollten aber aus anderen Gründen dringend aktualisiert werden.

Alle drei Images im aws-node-DaemonSet, also CNI, Init-Container und Network Policy Agent, zeigt dieser Befehl:

kubectl describe daemonset aws-node -n kube-system \
  | grep Image | cut -d "/" -f 2-3

Ein gepatchter Cluster liefert:

amazon-k8s-cni-init:v1.22.4
amazon-k8s-cni:v1.22.4
amazon/aws-network-policy-agent:v1.4.0

Beim EKS Managed Add-on liefert die AWS CLI die Version:

aws eks describe-addon \
  --cluster-name <cluster-name> \
  --addon-name vpc-cni \
  --query addon.addonVersion \
  --output text

Ob Network Policies aktiviert sind, prüfen Sie so:

# Managed Add-on: Konfiguration enthält "enableNetworkPolicy": "true"
aws eks describe-addon \
  --cluster-name <cluster-name> \
  --addon-name vpc-cni \
  --query addon.configurationValues \
  --output text

# Direkt im DaemonSet: Argument --enable-network-policy=true
kubectl get daemonset aws-node -n kube-system \
  -o jsonpath='{.spec.template.spec.containers[?(@.name=="aws-eks-nodeagent")].args}'

Wichtig vor dem Upgrade: kein einfacher Rollback

Laut den Release Notes zu v1.22.4 ist das Release bei aktivierter Network Policy nicht abwärtskompatibel, weil sich das interne Format der Pod-Identifikatoren geändert hat. Beim Upgrade wird der bestehende Enforcement-Zustand automatisch migriert. Nach einem späteren Downgrade greift die Enforcement für Pods, die vor dem Rollback erstellt wurden, jedoch erst wieder, wenn deren Nodes ersetzt wurden.

Ein Rollback bedeutet in der Praxis also Node-Replacement. Planen Sie das in Ihr Change-Fenster ein und testen Sie das Upgrade zuerst in einer Nicht-Produktionsumgebung.

Sofortmaßnahmen: Upgrade

AWS empfiehlt das Upgrade auf Amazon VPC CNI ≥ v1.22.4 und aws-network-policy-agent ≥ v1.4.0. Aktualisieren Sie VPC CNI dabei jeweils nur um eine Minor-Version. Von v1.20.x geht es also zunächst auf v1.21.x und dann auf v1.22.x.

EKS Managed Add-on

Ermitteln Sie zuerst den verfügbaren Build für Ihre Kubernetes-Version:

aws eks describe-addon-versions \
  --addon-name vpc-cni \
  --kubernetes-version <k8s-version> \
  --query 'addons[].addonVersions[].addonVersion' \
  --output text

Starten Sie dann das Upgrade. PRESERVE behält manuelle Anpassungen am aws-node-DaemonSet bei. OVERWRITE würde sie zurücksetzen.

aws eks update-addon \
  --cluster-name <cluster-name> \
  --addon-name vpc-cni \
  --addon-version <v1.22.4-eksbuild.X> \
  --resolve-conflicts PRESERVE

Wer das Add-on über IaC oder GitOps verwaltet, sollte die Version dort anheben, damit der nächste Sync das Upgrade nicht wieder zurückdreht.

Self-Managed über Helm

Aktualisieren Sie alle drei Images, nicht nur das CNI-Image, sonst bleibt der verwundbare Agent aktiv. Nutzen Sie außerdem --reuse-values, damit bestehende Einstellungen wie die Network-Policy-Aktivierung nicht auf Defaults zurückfallen:

helm repo update eks
helm upgrade aws-vpc-cni eks/aws-vpc-cni \
  --namespace kube-system \
  --version <Chart-Version für App v1.22.4> \
  --reuse-values \
  --set image.tag=v1.22.4 \
  --set init.image.tag=v1.22.4 \
  --set nodeAgent.image.tag=v1.4.0

Prüfen Sie anschließend mit dem Befehl oben, dass alle drei Images auf dem neuen Stand sind.

Wenn das Upgrade nicht sofort möglich ist

AWS nennt als Workaround, keine Bindestriche in Namespace-Namen zu verwenden. Ohne Bindestrich im Namespace ist der Identifikator eindeutig. In bestehenden Clustern ist das selten kurzfristig umsetzbar, denn ein Namespace lässt sich nicht umbenennen, nur neu anlegen.

Pragmatischer sind zwei Zwischenschritte. Prüfen Sie erstens, ob im Cluster aktuell Kollisionen existieren. Der folgende Befehl bildet die Identifikatoren nach dem im Bulletin beschriebenen Schema nach und gibt Duplikate aus. Er erfasst nur aktuell laufende Pods:

kubectl get pods -A -o json \
  | jq -r '.items[] | "\(.metadata.name)-\(.metadata.namespace)"' \
  | sort | uniq -d

Verhindern Sie zweitens, dass bis zum Upgrade neue Namespaces mit Bindestrich entstehen, zum Beispiel mit einer ValidatingAdmissionPolicy:

apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingAdmissionPolicy
metadata:
  name: deny-hyphenated-namespaces
spec:
  failurePolicy: Fail
  matchConstraints:
    resourceRules:
    - apiGroups: [""]
      apiVersions: ["v1"]
      operations: ["CREATE"]
      resources: ["namespaces"]
  validations:
  - expression: "!object.metadata.name.contains('-')"
    message: "Bis zum VPC-CNI-Upgrade (CVE-2026-86831) sind keine Bindestriche in Namespace-Namen erlaubt."
---
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingAdmissionPolicyBinding
metadata:
  name: deny-hyphenated-namespaces
spec:
  policyName: deny-hyphenated-namespaces
  validationActions: [Deny]

Achtung: Die Policy blockiert auch Add-ons und Tools, die eigene Namespaces mit Bindestrich anlegen. Setzen Sie sie gezielt und nur temporär ein. Das Upgrade bleibt die eigentliche Lösung.

Was das für Multi-Tenant-Cluster bedeutet

Die Schwachstelle trifft vor allem Cluster, in denen Namespaces Teams, Mandanten oder Umgebungen voneinander trennen. Wer Produktions- und Staging-Workloads per NetworkPolicy isoliert oder Kunden-Workloads in einem Shared Cluster betreibt, verlässt sich darauf, dass diese Grenze hält.

Ob ein Cluster ausnutzbare Kollisionen aufweist, hängt von den konkreten Pod- und Namespace-Namen ab. AWS macht keine Angaben dazu, ob die Schwachstelle bereits ausgenutzt wurde. Priorisieren Sie das Upgrade deshalb unabhängig davon, ob Ihr Kollisionscheck etwas findet.

Wer mehrere Cluster betreibt, etwa im Rahmen einer AWS Landing Zone, sollte die Add-on-Stände zentral inventarisieren und das Upgrade in den regulären Change-Management-Prozess einspeisen. Gehen Sie nicht davon aus, dass alle Cluster auf demselben Stand sind.

Worauf Sie bei EKS-Upgrades und dem neuen Version Rollback generell achten sollten, beschreibt unser Beitrag Kubernetes v1.37 „Garhwal": Was EKS-Betreiber vor dem nächsten Upgrade wissen müssen. Beachten Sie dabei: Das Rollback der Control Plane hilft beim CNI-Downgrade-Problem oben nicht. Wie Identitäten im Cluster zur Angriffsfläche werden, zeigt unser Artikel Die unsichtbare Bedrohung: Warum Machine Identities Ihre größte Cloud-Sicherheitslücke sind.

Was Sie jetzt konkret tun sollten

  • Prüfen Sie für jeden EKS-Cluster, ob die Network-Policy-Unterstützung des VPC CNI aktiviert ist.
  • Ermitteln Sie die Versionen von VPC CNI und aws-network-policy-agent mit den Befehlen oben.
  • Planen Sie das Upgrade auf VPC CNI ≥ v1.22.4 und Agent ≥ v1.4.0. Testen Sie zuerst außerhalb der Produktion und berücksichtigen Sie, dass ein Rollback Node-Replacement erfordert.
  • Falls das Upgrade warten muss: Führen Sie den Kollisionscheck durch und verhindern Sie neue Namespaces mit Bindestrich.
  • Verfolgen Sie die Advisories GHSA-7xv7-8r3j-3j25 und GHSA-gjc7-c7mx-x8f3 und abonnieren Sie den AWS Security Bulletins Feed.

Das Upgrade selbst ist meist unkompliziert, und Prüfung und Planung sind überschaubar. Nicht lohnen sollte sich dagegen, abzuwarten und darauf zu hoffen, dass die eigenen Namespace-Namen keine Kollisionen erzeugen.

Similar posts

Neues aus Cloud, DevOps & KI direkt in dein Postfach.

Kurz, klar und anwendungsnah. So, wie wir in Projekten arbeiten – nicht wie in Whitepapers.