netfoil: Incorrect Block Response Sends Traffic to Localhost
A DNS filtering tool used on Linux sent blocked domain queries to the local machine instead of dropping them, because it returned 0.0.0.0 in a valid DNS answer rather than a proper NXDOMAIN response.

The problem
netfoil versions before 0.4.0 responded to blocked domain queries with a DNS answer of 0.0.0.0 (RCODE NOERROR, A record 0.0.0.0) instead of returning NXDOMAIN.
On Linux, 0.0.0.0 is not a null sink. The kernel routes connections to that address to the loopback interface, so any application that blindly connects to the resolved address sends real TCP/UDP traffic to localhost. If services such as web servers, databases, or Unix socket listeners are bound there, that traffic may hit them unexpectedly.
The actual risk depends on what is listening and what firewall rules are in place.
Proof of concept
A working proof-of-concept for this issue in github.com/tinfoil-factory/netfoil, with the exact payload below.
;; DNS response netfoil produced for a BLOCKED domain (before fix)
;; RCODE: NOERROR (should be NXDOMAIN)
;; ANSWER SECTION:
blocked.example.com. 0 IN A 0.0.0.0
;; A Linux client connecting to the resolved address routes to 127.0.0.1 (loopback)
;; instead of the connection being dropped.The root cause is a Protection Mechanism Failure (CWE-693): the block mechanism chose the wrong DNS response. Returning NOERROR + 0.0.0.0 is a common sinkhole pattern, but it is only safe when the target OS discards connections to 0.0.0.0. Linux does not; it maps the address to loopback and delivers the packet locally.
The patch (commit 891d3513, PR #33) changes the block path to return NXDOMAIN (RCODE 3) with an empty answer section. NXDOMAIN causes the resolver to treat the domain as non-existent, so the client never opens a connection at all. No A record is written into the response, removing the loopback-routing vector entirely.
The fix
Upgrade to github.com/tinfoil-factory/netfoil v0.4.0 or later. The fix is in commit 891d3513c77999a9deef9f23506807d9653ee448 (PR #33): blocked domains now receive a proper NXDOMAIN response instead of a 0.0.0.0 answer record.
Related research
- critical · 9.9CVE-2026-50545CVE-2026-50545: Fission Environment PodSpec Injection Leading to Node Escape and Cluster Takeover
- critical · 9.9CVE-2026-50564CVE-2026-50564: Fission Environment PodSpec Passthrough Privilege Escalation to Node Escape
- critical · 9.9CVE-2026-54680CVE-2026-54680: kube-logging/logging-operator Fluentd Configuration Injection RCE
- critical · 10CVE-2026-54735CVE-2026-54735: prebid-server Bidder Adapter Server-Side Request Forgery