5 NetworkPolicy Mistakes That Leave Kubernetes Clusters Completely Unprotected
Kubernetes NetworkPolicy objects can exist in the API without actually restricting any traffic, creating a false sense of security that only surfaces during penetration tests. The original Russian article from OTUS details five critical mistakes that produce exactly this outcome: policies are visible via kubectl get networkpolicy yet traffic flows freely.
CNI Plugin Does Not Support NetworkPolicy
Kubernetes stores NetworkPolicy objects but relies on the Container Network Interface plugin for enforcement. Plugins such as Calico, Cilium, and Weave Net implement them, while plain Flannel and kubenet do not. Administrators can confirm the plugin by checking pods in the kube-system namespace, yet the most reliable test applies a deny-all policy in a test namespace and attempts cross-namespace connectivity with tools like nicolaka/netshoot.
Default-Deny Egress Blocks DNS Resolution
Applying an egress deny-all rule immediately breaks name resolution because queries to CoreDNS on port 53 are also blocked. Applications report UnknownHostException or timeouts rather than access denied errors, leading teams to investigate the DNS service instead of the policy. The recommended fix adds a separate policy allowing UDP and TCP traffic to the kube-dns pods in the kube-system namespace.
Single Dash Creates Cluster-Wide Access
A misplaced dash in the YAML turns an AND condition into an OR condition. The correct structure places namespaceSelector and podSelector under the same list item so that only pods matching both labels are permitted. When separated by an extra dash, any pod bearing the label app: api from any namespace gains access, silently expanding the attack surface.
namespaceSelector Matches Labels, Not Namespace Names
The selector matchLabels: name: monitoring looks for a label on the namespace object, not its name. Most namespaces only carry the automatic label kubernetes.io/metadata.name. Administrators must either use this built-in label or manually apply custom labels, understanding that custom labels can be forgotten on newly created namespaces.
Confusion Between Protected Pods and Allowed Sources
The top-level podSelector defines which pods the policy protects, while selectors inside from or to blocks define allowed peers. Swapping these produces a policy with an empty from: [] list that permits traffic from everywhere. An empty ingress list without any rules denies all ingress, whereas a rule containing an empty source list allows all sources.
Additional coverage gaps remain even with correct policies: pods using hostNetwork: true bypass the CNI, intra-pod localhost traffic between containers is uncontrolled, and response traffic for established connections is automatically permitted. The article advises starting with traffic tests, rolling out default-deny together with DNS allowances, using policy audit modes in Calico and Cilium, and keeping a single-command rollback ready.
Related articles
Positive Technologies Develops Dynamic Crawler for Single-Page Applications in PT BlackBox Scanner
Positive Technologies engineers have detailed the development of a dynamic crawler for their PT BlackBox DAST scanner to handle modern single-page applications built with frameworks such as React and Vue. The crawler must discover attack surface elements that only appear after user interactions because static parsing of initial DOM fails on SPAs where navigation occurs without URL changes. Key challenges include identifying interactive elements whose handlers are attached via JavaScript, detecting state changes after clicks or inputs, and managing combinatorial explosion of states caused by independent UI toggles. The team models the application as a labeled transition system and defines state equivalence using sets of 64-bit fingerprints of interactive elements rather than raw HTML similarity or URL values. This equivalence relation satisfies reflexivity, determinism from external observations, cheap hash-based comparison, slower growth than action count, and preservation of enabled actions across equivalent states. The approach allows the crawler to visit representatives of equivalence classes instead of every reachable state, keeping scans finite and practical within action budgets of several thousand interactions.
Over 8,300 Gitea Servers Remain Exposed to Remote Code Execution via CVE-2026-60004
Thousands of publicly accessible Gitea instances were still unpatched against CVE-2026-60004 as of late August 2026, leaving them open to remote command execution. The critical vulnerability combines abuse of the diffpatch endpoint with the ability to install and trigger attacker-controlled Git hooks, allowing unauthenticated attackers to run commands on the server. Exploitation requires only write access to a repository, which is often trivial due to default open user registration in many deployments. The issue was fixed in Gitea 1.27.1 released on July 27, 2026, and CISA added the flaw to its Known Exploited Vulnerabilities catalog with a remediation deadline of August 28 for U.S. federal agencies. In observed incidents, attackers used the access to deploy cryptocurrency miners inside Docker containers. A related authentication bypass affecting the official Docker image, CVE-2026-20896, was also noted when reverse-proxy headers such as X-WEBAUTH-USER are enabled.
Microsoft Defender Displays False 'Enable Virus Protection' Alerts on Windows Despite Active Real-Time Protection
Microsoft has confirmed a bug in Microsoft Defender that causes Windows to show persistent notifications urging users to enable virus protection even when the antivirus is already running with real-time protection active. The issue emerged after recent Defender updates and affects home users as well as enterprise environments running Windows 11 versions 23H2, 24H2, and 25H2, along with Windows 10 and Windows Server editions. Notifications appear at startup or during normal operation, ignore Do Not Disturb settings, and clicking them only opens the Windows Security app without resolving the alert. Microsoft is developing a fix to be released in a future Defender update but has not provided a timeline. Users are advised not to dismiss all such banners automatically, as similar messages could originate from malware, and should verify protection status through Windows Security or PowerShell commands. The problem stems from configuration errors introduced by the antivirus updates rather than specific Windows builds.
Weekly Roundup: Next.js Leads Critical Vulnerability Reports as Chrome, Tomcat, and PostgreSQL See Major Patches
Security NEXT has published its list of the ten most-read articles for the week of August 23-29, 2026. The top story covered multiple serious vulnerabilities in Next.js that prompted an accelerated release schedule. Other high-interest items included a critical flaw in Zscaler Client Connector, several issues in Apache Tomcat rated critical, and Google’s Chrome 152 update fixing 327 vulnerabilities. Additional reports highlighted a ransomware incident at a systems development firm, flaws in SKYSEA Client View, 28 vulnerabilities fixed in PostgreSQL, and confirmed exploitation of six known flaws in SQL Server and NetScaler. The list also featured a vulnerability in the Android version of the Digital Agency’s My Number Point app and warnings about active exploitation of a WebLogic module flaw.