Summary
In Cilium clusters with the Secret Discovery Service (SDS) enabled for L7 network policies, an attacker may exploit name collisions between synced Secret and ConfigMap objects to affect policy enforcement behavior. A namespaced attacker who can create a Secret or ConfigMap and a referencing CiliumNetworkPolicy may choose object names that collide with a victim object, allowing the attacker-controlled object to overwrite the synchronized SDS object used by the victim policy, including policies using headerMatches.secret. This can result in unauthorized traffic being permitted or legitimate traffic being denied.
Impact
A namespaced attacker with privileges to create Secrets or ConfigMaps and CiliumNetworkPolicy objects can overwrite the SDS objects used by victim policies in other namespaces. This allows the attacker to change policy enforcement behavior—permitting traffic that should be denied, or denying traffic that should be allowed. Only clusters with SDS enabled for L7 network policies are affected. The adjacency-scoped (AV:A) and high-privilege (PR:H) requirements constrain exploitability to privileged, network-adjacent actors in the cluster.
Detection
Review Cilium audit logs for unexpected SDS secret synchronization events. Monitor the cilium-secrets namespace for Secret objects whose names match policy-referenced secrets from other namespaces. Inspect CiliumNetworkPolicy objects that use headerMatches.secret references and verify that referenced secret names are unique and not reproducible by tenant namespaces. Unexpected policy behavior changes—traffic unexpectedly allowed or denied—should prompt investigation of synchronized SDS objects.
Mitigation
Upgrade Cilium to a patched version:
- v1.17.x: upgrade to v1.17.18 or later
- v1.18.x: upgrade to v1.18.12 or later
- v1.19.x: upgrade to v1.19.6 or later
As a workaround, operators can mitigate the SDS name collision by disabling policy Secret synchronization and managing referenced policy Secrets directly in the configured policy secrets namespace (cilium-secrets by default), rather than relying on Cilium to sync them from tenant namespaces.
Related Security Guidance
References
- GHSA-xqhm-7xhv-6ppj — GitHub Security Advisory