Kubernetes security: Cilium identity and eBPF capabilities
Cilium utilizes eBPF technology to provide identity-based security and Layer 7 policy enforcement for Kubernetes pods. The system manages network connectivity through Hubble and Tetragon while addressing specific vulnerabilities like CVE-2026-49445 in Envoy instances.
Kubernetes Pod Networking
Kubernetes automates the deployment, scaling, and management of containerized applications. The system organizes containers into pods, which are the smallest unit of scheduling. Each pod contains one or more containers that share resources and a unique IP address. Kubernetes grew from 15 years of Google experience running production workloads. The control plane manages the cluster through components like the API server, kube-scheduler, and controller manager. The kubelet runs on every worker node and ensures containers remain healthy. Kube-proxy handles network abstraction and load balancing.
Container networking interfaces (CNIs) provide the connectivity needed for these pods. Traditional CNIs use iptables or IPVS for network functions. DevOps teams choosing between various CNI options like Cilium and Calico must understand how identity-based security changes the networking model. Cilium deviates from the traditional approach by using eBPF. This technology allows the kernel to execute bytecode for networking and security tasks without the overhead of traditional packet processing. You should look past simple IP-based rules if you want granular control. Cilium is a networking, observability, and security solution. It uses an identity-based security model that decouples security from network addressing. This model assigns security identities to groups of application containers. These identities associate with network packets, so receiving nodes validate them without relying on brittle IP addresses.
Cilium Security Capabilities
Cilium implements Layer 3 to Layer 7 security policies. These policies use labels, protocols, and ports to restrict traffic. Users can also write DNS-based policies to allow or deny traffic to specific FQDNs or wildcard domains. For Layer 7 requirements, the system filters traffic by HTTP method, URL path, or gRPC calls. Tetragon provides runtime enforcement by applying policy and filtering directly in the kernel. Hubble provides real-time service maps and flow visibility.
Cilium provides a flat Layer 3 network. It can span multiple clusters using Cilium Cluster Mesh. This feature allows workloads across different clusters to discover and connect to services. This provides fault tolerance, as users can fail over to backends in another cluster. Cilium also integrates BGP to facilitate routing across Layer 3 boundaries. The system supports SRv6, which defines packet processing as a program. For high-throughput scenarios, Cilium utilizes XDP for north-south load balancing.
| Capability | Implementation Detail |
|---|---|
| Network Policy | L3, L4, L7, and FQDN-based |
| Encryption | IPsec or WireGuard |
| Load Balancing | XDP and Maglev |
| Service Mesh | Ingress, TLS, and Canary rollouts |
| Observability | Hubble and Tetragon |
Cilium replaces kube-proxy by using efficient hash tables in eBPF. This replacement allows for high service density and low latency at scale. The system manages ingress and egress gateways.
Vulnerabilities and Patching
DevOps teams must monitor specific vulnerabilities in Cilium versions. In July 2026, a critical vulnerability (CVE-2026-49445) affected versions prior to 1.17.14, 1.18.8, and 1.19.2. When L7 functionality is enabled, the embedded Envoy instance creates a world-accessible admin.sock. An attacker uses this to access Envoy admin endpoints, expose TLS secrets, or terminate Envoy. A medium-severity issue (CVE-2026-56743) affected versions 1.19.0 through 1.19.4. In these versions, standard Kubernetes NetworkPolicy specifications using CIDR-based ipBlock rules without selectors erroneously generate a wildcard namespace allow rule when users configure a custom clusterName.
Another vulnerability, CVE-2026-56742, allows users with permissions to create or update namespaced HTTPRoutes to mirror HTTP traffic to any Service in any namespace. This issue affects versions prior to 1.17.17, 1.18.11, and 1.19.5. CVE-2026-41520 remains a high-risk concern for those using WireGuard. Prior to versions 1.17.15, 1.18.9, and 1.19.3, the output of cilium-bugtool can contain sensitive data when the tool runs against Cilium deployments with WireGuard encryption enabled. Users with the ability to create CiliumLocalRedirectPolicies can also hijack traffic to Services in any namespace via CVE-2026-53935. This affects versions prior to 1.17.16, 1.18.2 through 1.18.9, and 1.19.0 through 1.19.3.
In certain cloud environments, Cilium fails to enforce policies correctly. CVE-2026-33726 affects versions prior to 1.17.14, 1.18.8, and 1.19.2. In deployments using cloud IPAM, such as Amazon EKS with Cilium ENI mode, Ingress Network Policies do not enforce traffic from pods to L7 Services with a local backend when Per-Endpoint Routing is enabled and BPF Host Routing is disabled. Does a single vulnerability invalidate the entire eBPF advantage? CVE-2026-26963 shows that when Native Routing, WireGuard, and Node Encryption are enabled, versions 1.18.0 through 1.18.5 incorrectly permit traffic from Pods on other nodes.
CVE-2026-23028 affects versions 1.14.0 through 1.14.7, 1.15.0 through 1.15.11, and 1.16.0 through 1.16.4. If Cilium proxies DNS traffic, an attacker can send a crafted DNS response to crash Cilium agents. CVE-2026-52529 affects version 1.16 between 1.16.0 and 1.16.3. If a user applies an allow policy for a port range and an L7 policy for a specific port, the L7 enforcement fails for traffic in that range. Users must rewrite policies to individually specify permitted ports to avoid this flaw. CVE-2025-64715 affects versions prior to 1.16.17, 1.17.10, and 1.18.4. When using egress.toGroups.aws.securityGroupsIds to reference AWS security group IDs that do not exist, CiliumNetworkPolicys might allow broader outbound access than intended because the system fails to generate the toCIDRset section.