CVE-2026-86831
Executive Summary
CVE-2026-86831 is a vulnerability in the Amazon EKS Network Policy Agent (before v1.4.0) arising from improper validation of pod identifier uniqueness. An authenticated remote user with the ability to create pods can craft pod and namespace names that cause pod identifier collisions, potentially bypassing Kubernetes NetworkPolicy enforcement on co-located pods in other namespaces. With a CVSS 3.1 base score of 8.7, the flaw has a changed scope and high confidentiality and integrity impact, meaning tenant isolation assumptions in multi-tenant EKS clusters may be violated.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
The Kubernetes Network Policy Agent functions as the enforcement component that translates NetworkPolicy objects into node-level packet filtering rules (typically eBPF or iptables). To do this, it must map each workload to a stable identifier so that policy selectors (namespace, labels, pod name) resolve to the correct set of endpoints on the node.
CVE-2026-86831 is rooted in CWE-1289: Improper Validation of Unsafe Equivalence — specifically, the agent does not properly validate that the pod identifier it constructs is unique. The vulnerability is triggered when a remote authenticated user creates pods whose names, combined with their namespace names, produce an identifier that collides with the identifier of a different pod. Because the agent's internal identity mapping is non-unique, policy enforcement can be attributed to the wrong workload. As described in the NVD entry, a successful attack allows an attacker to "bypass NetworkPolicy enforcement on co-located pods in other namespaces."
Key points derivable from the advisory:
- Attack surface: Pod and namespace creation in an EKS cluster where the Network Policy Agent is deployed (i.e., clusters using the VPC CNI managed add-on with network policy enabled).
- Root cause class: Identifier/OID collision due to insufficient validation of uniqueness constraints — an equivalence-validation flaw rather than a memory-safety bug.
- Affected component:
aws-network-policy-agenton the worker node (before v1.4.0). The agent runs with node-level privileges and programs the datapath filters for all pods on that node. - Scope change (S:C): The vulnerable component is the network policy agent, but the security impact extends to workloads in other namespaces that share the same node — a classic cross-tenant boundary concern.
The NVD description does not disclose specific function names, source files, or the exact serialization format used for pod identifiers. No further implementation detail is available from the provided intelligence, so the analysis must remain at the vulnerability-class level: a uniqueness/equivalence validation failure in the pod identity mapping used for policy enforcement.
Exploitation Scenarios
No public PoC, exploit code, or Nuclei template is available for CVE-2026-86831. The chain below is inferred from the vulnerability class and the advisory wording; it does not rely on invented function names or endpoints.
Reconnaissance / target identification. The attacker requires an authenticated account with permissions to create pods in at least one namespace of a target EKS cluster. The attacker enumerates namespaces and existing pod names (where RBAC permits listing) to identify candidate names that can be combined with a namespace name to collide with an existing pod's identifier. Nodes hosting pods from multiple tenants are the highest-value targets.
Triggering the flaw. The attacker creates a pod with a crafted pod name and, if permitted, a crafted namespace name chosen so that the resulting pod identifier equals that of a victim pod in a different namespace on the same node. Because the agent does not validate identifier uniqueness (CWE-1289), the collision is accepted and the two workloads become indistinguishable to the policy engine.
Payload / execution at the vulnerability-class level. Once identities collide, the NetworkPolicy that should apply to the victim pod can instead be matched against (or overwritten by) the attacker-controlled pod's identity. The practical effect is that ingress/egress filtering intended to isolate the victim is mis-applied — enabling the attacker to reach or be reached by workloads that policy should have denied, or to cause the victim's legitimate traffic to be dropped. No memory corruption, code injection primitive, or remote code execution is described; the flaw is a policy-enforcement/authorization bypass.
Post-exploitation impact. With NetworkPolicy enforcement bypassed, the attacker can pivot laterally across namespace boundaries on the same node, exfiltrate data from or tamper with traffic of co-located pods in other namespaces, or degrade availability by disrupting the victim's allowed flows. This aligns with the CVSS vector's Changed scope and High Confidentiality/Integrity impacts, with Availability rated None.
Impact Assessment
- CVSS 3.1: 8.7 (High) —
AV:N(remotely reachable via the cluster API),AC:L(no special conditions),PR:H(requires privileged/authenticated pod-creation rights),UI:N(no user interaction),S:C(impact extends beyond the vulnerable component to other namespaces),C:H/I:H/A:N(high confidentiality and integrity impact; no availability impact). - Business impact: Multi-tenant EKS clusters that rely on NetworkPolicy for tenant isolation are the primary concern. A successful exploit undermines the cluster's segmentation model, enabling cross-namespace access that compliance frameworks (e.g., PCI-DSS segmentation, zero-trust architectures) assume is prevented.
- Blast radius: Any pod co-located on the same node as the attacker's pod and protected by a NetworkPolicy may be affected. Because the collision mechanism is identifier-based rather than node-wide, impact is bounded to nodes where colliding pods run, but an attacker with scheduling control can influence placement.
- Affected population: EKS clusters running
aws-network-policy-agentbefore v1.4.0, or the VPC CNI managed add-on before v1.22.4, with network policy enforcement enabled. Clusters not using the network policy feature are not exposed to this specific flaw. - Exploit maturity: Low. No public exploit, no CISA KEV listing, and no EPSS score has been assigned (not yet scored by FIRST.org).
Detection Guidance
Detection should focus on anomalous pod/namespace creation activity and on unexpected NetworkPolicy evaluation state. Since the flaw is an authorization/logic defect rather than a memory-safety bug, network signatures are indirect; the strongest signals come from Kubernetes audit logs.
Sigma Rule
title: Potential EKS Network Policy Agent Pod Identifier Collision Activity
id: 7b2f9c14-6d3a-4e88-9a1f-0c5e2b7f4d10
status: experimental
description: Detects creation of pods/namespaces with suspiciously crafted names that may cause pod identifier collisions in aws-network-policy-agent (CVE-2026-86831).
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-86831
author: valtersit.com
date: 2026-01-01
logsource:
product: kubernetes
service: audit
detection:
selection_verb:
verb:
- create
selection_resource:
objectRef.resource:
- pods
- namespaces
selection_names:
objectRef.name|re:
- '^[a-z0-9-]*-[a-z0-9]{5,}$'
- '.*\.\.*'
- '.*--.*--.*'
condition: selection_verb and selection_resource and selection_names
falsepositives:
- Legitimate automated pod naming conventions with hyphenated suffixes
level: medium
tags:
- attack.privilege_escalation
- attack.t1068
- cve.2026.86831
YARA Rule
rule CVE_2026_86831_EKS_NetworkPolicyAgent_IdentifierCollision
{
meta:
description = "Detects indicators of pod identifier collision handling in Amazon EKS Network Policy Agent before v1.4.0"
author = "valtersit.com"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-86831"
date = "2026-01-01"
cve = "CVE-2026-86831"
strings:
$agent = "aws-network-policy-agent" ascii wide nocase
$podid1 = "podIdentifier" ascii wide nocase
$podid2 = "pod_identifier" ascii wide nocase
$ns = "namespace" ascii wide nocase
$ver = "v1.3" ascii wide nocase
condition:
uint32(0) == 0x464c457f and
$agent and
( $podid1 or $podid2 ) and
$ns and
$ver
}
Suricata IDS Rule
alert http any any -> any any (msg:"CVE-2026-86831 Possible EKS Pod Identifier Collision Attempt via Kubernetes API"; flow:established,to_server; http.method; content:"POST"; http.uri; content:"/api/v1/namespaces"; content:"/pods"; distance:0; http.request_body; content:"\"metadata\""; content:"\"name\""; pcre:"/\"name\"\s*:\s*\"[a-z0-9-]{20,}\"/Ri"; reference:cve,2026-86831; reference:url,nvd.nist.gov/vuln/detail/CVE-2026-86831; classtype:attempted-admin; sid:202686831; rev:1; metadata:created_at 2026_01_01, updated_at 2026_01_01;)
Elastic Detection
sequence by user.name with maxspan=5m
[any where event.action == "create" and kubernetes.audit.objectRef.resource == "namespaces"]
[any where event.action == "create" and kubernetes.audit.objectRef.resource == "pods" and
kubernetes.audit.objectRef.name regex~ "^[a-z0-9-]{20,}$"]
Splunk SPL Query
index=kubernetes sourcetype=kube:apiserver:audit verb=create objectRef.resource IN (pods, namespaces)
| eval crafted=if(match(objectRef.name, "^[a-z0-9-]{20,}$") AND match(objectRef.name, "-{2,}"), 1, 0)
| where crafted=1
| stats count values(objectRef.name) as pod_names values(objectRef.namespace) as namespaces by user.username, user.groups
| where count > 3
| table user.username, user.groups, count, pod_names, namespaces
Wazuh OSSEC Rule
<group name="kubernetes,cve-2026-86831,">
<rule id="2026868" level="10">
<decoded_as>json</decoded_as>
<field name="verb">create</field>
<field name="objectRef.resource">pods|namespaces</field>
<field name="objectRef.name">^[a-z0-9-]{20,}$</field>
<description>CVE-2026-86831: Suspicious pod/namespace name creation that may cause pod identifier collision in aws-network-policy-agent</description>
<mitre>
<id>T1068</id>
</mitre>
<group>cve_2026_86831,</group>
</rule>
</group>
Mitigation & Patch Guidance
Patch confidence: 0/4 (UNPATCHED — no patch evidence from any tracked source; no vendor fix or workaround recorded in the supplied intelligence).
Immediate mitigations
- Restrict pod and namespace creation to trusted, least-privileged service accounts. Use RBAC and admission policies (OPA Gatekeeper / Kyverno) to constrain who may create pods and to reject names that can produce identifier collisions.
- Where feasible, schedule untrusted tenant workloads away from sensitive namespaces (node affinity / taints) to reduce co-location opportunities.
- Closely monitor Kubernetes audit logs for anomalous pod/namespace creation using the detections above.
Patch / upgrade steps
- Upgrade the Amazon EKS Network Policy Agent to v1.4.0 or later.
- Alternatively, upgrade the Amazon VPC CNI Managed Add-on to v1.22.4 or later, which bundles Network Policy Agent v1.4.0.
- After upgrade, validate that network policy enforcement behaves correctly and that no stale agent versions remain on worker nodes.
Long-term hardening
- Adopt a validation/admission layer that enforces name uniqueness and format constraints so that logically distinct identities cannot collide.
- Implement network segmentation independent of a single enforcement agent (defense in depth) and monitor for policy-enforcement drift.
- Track the vendor advisory for CVE-2026-86831 and apply the fix as soon as it becomes available in your channel.
References
- NVD — CVE-2026-86831: https://nvd.nist.gov/vuln/detail/CVE-2026-86831
- CWE-1289 — Improper Validation of Unsafe Equivalence: https://cwe.mitre.org/data/definitions/1289.html
- Amazon EKS Network Policy Agent documentation (upgrade guidance for v1.4.0): https://docs.aws.amazon.com/eks/latest/userguide/
- Amazon VPC CNI Managed Add-on release notes (v1.22.4+): https://docs.aws.amazon.com/eks/latest/userguide/managing-vpc-cni.html
- MITRE ATT&CK T1068 — Exploitation for Privilege Escalation: https://attack.mitre.org/techniques/T1068/
Note: No CISA KEV listing, no known threat actor campaigns, and no exploit-in-the-wild evidence are associated with CVE-2026-86831 based on the supplied intelligence. No public PoC exists; exploitation is inferred from the vulnerability class.