CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-XVG2-CGV6-6H7V

GHSA-XVG2-CGV6-6H7V: Local Traffic Interception and Information Disclosure via Improper DNS Block Responses in netfoil

Amit Schendel
Amit Schendel
Senior Security Researcher

Jul 29, 2026·6 min read·3 visits

Executive Summary (TL;DR)

netfoil DNS proxy returned 0.0.0.0 (NOERROR) for blocked domains, causing Linux systems to route traffic to localhost where local services could intercept credentials.

A protection mechanism failure in the netfoil DNS proxy prior to version 0.4.0 causes blocked domains to resolve to null IP addresses (0.0.0.0 or ::) with a NOERROR status instead of NXDOMAIN. On Linux systems, connections to these addresses are routed to the loopback interface (localhost), allowing local processes to intercept sensitive HTTP traffic, including authorization headers and session cookies, intended for the blocked domains.

Vulnerability Overview

The Go-based minimal DNS proxy netfoil provides domain-level filtering to block trackers, ads, and malicious sites. Prior to version 0.4.0, the proxy failed to implement secure domain blocking mechanics, leading to a severe protection mechanism failure classified under CWE-693.\n\nInstead of returning a standard Non-Existent Domain (NXDOMAIN) status, netfoil returned a successful NOERROR DNS response containing dummy A, AAAA, or HTTPS records. These dummy records resolved to null IP addresses (0.0.0.0 or ::), signaling to the querying application that the domain was active and reachable.\n\nThis behavior exposes clients, especially those on Linux platforms, to local traffic interception. When client applications attempt to connect to the resolved null IPs, the OS kernel routes the requests back to the local loopback interface (localhost). Consequently, any unprivileged local process listening on the target ports can intercept sensitive transaction details, including session cookies and authorization tokens, originally intended for the blocked external domain.

Root Cause Analysis

The root cause of the vulnerability lies in the implementation of the generateBlockResponse function within dns/filter.go. Instead of dropping the query or returning an error status, the function explicitly constructed a DNS answer containing an active resource record pointing to ipv4Null (0.0.0.0) or ipv6Null (::) and marked the response header flags with ResponseCodeNoError.\n\nWhen a client operating system receives this response, the local resolver interprets it as a fully valid, successful domain resolution. On Linux platforms, the kernel's routing table treats connections to 0.0.0.0 or :: as aliases for the loopback address (127.0.0.1 or ::1). Therefore, instead of terminating the connection attempt or generating a connection-refused error, the client browser or application initiates a three-way TCP handshake with localhost.\n\nThis design flaw introduces a severe vulnerability when local services run on matching ports (e.g., 80 or 443). Because the client browser believes it is communicating with the legitimate external host (for example, analytics.company.com), it transmits standard HTTP headers, cookies, and tokens over this loopback connection. An unprivileged local daemon or web server can accept these connections and capture high-value credentials.

Code Analysis

The vulnerable version of dns/filter.go constructed the blocked response by setting the RCODE to ResponseCodeNoError and appending dummy IPv4 and IPv6 null values in the answers slice:\n\ngo\n// Vulnerable Implementation\nfunc generateBlockResponse(question Question) *Response {\n\tdomain := question.Name\n\trecordType := question.Type\n\n\tvar response *Response\n\tflags := Flags{\n\t\tRCODE: ResponseCodeNoError, // ERROR: Signals successful resolution\n\t}\n\n\tif recordType == RecordTypeA || recordType == RecordTypeAAAA {\n\t response = &Response{\n\t Flags: flags,\n\t Answers: []Answer{\n\t {\n\t Name: domain,\n\t Type: recordType,\n\t Class: ClassTypeIN,\n\t TTL: defaultTTL,\n\t IPv4: ipv4Null, // 0.0.0.0\n\t IPv6: ipv6Null, // ::\n\t },\n\t },\n\t }\n\t} // ... HTTPS record logic also used ipv4Null / ipv6Null\n\n\nIn version 0.4.0, the package was refactored to remove the creation of synthetic resource records entirely. The updated logic changes the response code to ResponseCodeNXDomain and sets the answers to nil:\n\ngo\n// Patched Implementation in Commit 891d3513c77999a9deef9f23506807d9653ee448\nfunc generateBlockResponse() *Response {\n\tvar response *Response\n\tflags := Flags{\n\t\tRCODE: ResponseCodeNXDomain, // FIX: Informs client the domain does not exist\n\t}\n\n\tresponse = &Response{\n\t Flags: flags,\n\t Answers: nil, // FIX: Empty answer block forces connection failure\n\t}\n\n\treturn response\n}\n\n\nThis patch completely eliminates the routing of blocked requests to localhost. The client's operating system resolver instantly aborts connection attempts when encountering an NXDOMAIN response code, ensuring that no local ports are contacted.

Exploitation & Attack Scenarios

Exploitation of GHSA-XVG2-CGV6-6H7V is straightforward and requires no active privileges or authentication. Below is a representation of the routing flow during an exploitation attempt:\n\nmermaid\ngraph LR\n Client["Client App / Browser"] -->|"1. Query: tracker.com"| Proxy["Vulnerable netfoil"]\n Proxy -->|"2. Response: 0.0.0.0 (NoError)"| Client\n Client -->|"3. TCP Handshake to 0.0.0.0:80"| Kernel["Linux Kernel Routing"]\n Kernel -->|"4. Redirects connection"| Localhost["Local Listener (Port 80/443)"]\n\n\nAn attacker operating on the same machine as the victim (e.g., in a multi-user environment or via a malicious low-privilege script) can bind to the target port on localhost (such as 8080 or 80). When the victim's application triggers a background request to a blocked tracker, netfoil resolves the domain to 0.0.0.0, routing the traffic directly into the attacker's listener.\n\nOnce connected, the victim's client transmits a fully populated HTTP request. Since the client thinks it is communicating with the legitimate domain, the request includes active Session IDs, Bearer tokens, and Authorization headers. The attacker can log these headers to hijack sessions or gain unauthorized API access.

Security Impact Assessment

The security impact of this vulnerability is significant, particularly in development, corporate, or shared Linux environments where netfoil is deployed. By resolving blocked domains to local loopback addresses, the proxy undermines the security isolation between external web services and local applications.\n\nFurthermore, this flaw enables Same-Origin Policy (SOP) bypasses. Because the browser continues to map the domain name to the request, cookies scoped to the blocked domain are transmitted to localhost, allowing local malicious pages or applications to execute Cross-Site Request Forgery (CSRF) or Server-Side Request Forgery (SSRF) actions against services running on the loopback interface.\n\nThe CVSS v4.0 score is assessed at 7.4 (High), reflecting high confidentiality and integrity impacts on the affected host, with a low attack complexity. Although exploitation relies on specific local state conditions, the automated nature of modern web browsers makes exploitation highly reliable once those conditions are met.

Remediation & Patch Completeness

To remediate this issue, administrators and developers must upgrade netfoil to version 0.4.0 or later. This version incorporates the correct NXDOMAIN behavior, which stops DNS resolution on the client side without executing local loops.\n\nIf upgrading is not immediately possible, temporary mitigation can be achieved by overriding local routing behaviors or applying local firewall policies. Specifically, rules can be created using iptables or nftables to drop outgoing packets destined to 0.0.0.0 or :: that are not originating from local control interfaces.\n\nAnalysis of the patch confirms that the fix is complete. By shifting from dummy address spoofing to standard NXDOMAIN responses, the root cause—relying on invalid/routable address translation—is fully eradicated, ensuring that variant attacks utilizing alternative local loopback ranges are blocked.

Fix Analysis (1)

Technical Appendix

CVSS Score
7.4/ 10
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Affected Systems

Linux installations utilizing netfoil DNS proxyContainers and platforms running applications that compromise netfoil filtering

Affected Versions Detail

Product
Affected Versions
Fixed Version
netfoil
tinfoil-factory
< 0.4.0v0.4.0
AttributeDetail
CWE IDCWE-693
Attack VectorNetwork
CVSS v4.07.4
ImpactHigh (Confidentiality & Integrity)
Exploit StatusProof of Concept (PoC) available
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1562.001Impair Defenses: Disable or Modify System Firewall
Defense Evasion
T1557Adversary-in-the-Middle (AiTM)
Collection
T1185Browser Session Hijacking
Collection
CWE-693
Protection Mechanism Failure

The product fails to correctly configure or execute a security mechanism, thereby failing to defend against unauthorized connection interception or routing behaviors.

Vulnerability Timeline

Pull Request #33 created and merged
2026-06-08
Fix commit 891d3513c77999a9deef9f23506807d9653ee448 finalized
2026-06-08
GitHub Security Advisory GHSA-XVG2-CGV6-6H7V published
2026-07-29

References & Sources

  • [1]GHSA-XVG2-CGV6-6H7V: Local traffic interception in netfoil
  • [2]Official Advisory Page on Repository
  • [3]Fix Pull Request #33
  • [4]Fix Commit Diff
  • [5]v0.4.0 Release Page

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 1 hour ago•CVE-2026-54680
9.9

CVE-2026-54680: Remote Code Execution via Fluentd Configuration Injection in Logging Operator

A critical security flaw (CVE-2026-54680) in the Kubernetes Logging Operator allows authenticated attackers with namespace-level access to craft malicious Custom Resources that inject arbitrary configuration directives into the downstream Fluentd logging aggregator, resulting in unauthenticated remote code execution (RCE) in the context of the aggregator pod.

Alon Barad
Alon Barad
1 views•7 min read
•about 3 hours ago•GHSA-PMWX-RM49-XV39
9.1

GHSA-PMWX-RM49-XV39: Path Traversal in ActiveRecord::Tenanted::Storage::DiskService

A directory traversal vulnerability exists in the `activerecord-tenanted` Ruby gem's local storage path resolution logic. Prior to version 0.7.0, the `path_for` method failed to sanitize input keys, allowing remote attackers to traverse directories and access arbitrary files on the host filesystem.

Alon Barad
Alon Barad
4 views•6 min read
•about 4 hours ago•CVE-2026-54712
5.3

CVE-2026-54712: Uncontrolled Resource Consumption in OpenTelemetry Javaagent RMI Context Propagation

An uncontrolled resource consumption vulnerability in the OpenTelemetry Javaagent RMI context propagation mechanism allows remote unauthenticated attackers to cause a Denial of Service (DoS) via heap memory exhaustion.

Alon Barad
Alon Barad
3 views•7 min read
•about 5 hours ago•CVE-2026-54704
6.5

CVE-2026-54704: Sensitive Data Exposure in OpenTelemetry Java Instrumentation SQL Sanitizer

A sensitive data exposure vulnerability (CWE-532) exists in OpenTelemetry Java Instrumentation prior to version 2.28.0. The JDBC auto-instrumentation component's SQL statement sanitizer contains lexer flaws that prevent the correct redaction of administrative passwords under specific conditions, such as when double-quotes represent identifiers or during multi-statement executions separated by semicolons.

Alon Barad
Alon Barad
5 views•5 min read
•about 6 hours ago•CVE-2026-54705
6.3

CVE-2026-54705: DOM-Based Cross-Site Scripting in MathLive LaTeX Rendering Engine

CVE-2026-54705 is a critical DOM-based Cross-Site Scripting (XSS) vulnerability affecting the MathLive library prior to version 0.110.0. The flaw stems from a lack of proper character escaping in the rendering path for LaTeX text-mode commands such as \text{} and \mbox{}, enabling unauthenticated attackers to execute arbitrary JavaScript in the victim's browser.

Amit Schendel
Amit Schendel
5 views•7 min read
•about 7 hours ago•CVE-2026-54693
8.2

CVE-2026-54693: Authorization Bypass in ZITADEL Identity Management Platform

A critical authorization bypass vulnerability was identified in the ZITADEL identity management platform, tracked as CVE-2026-54693 (GHSA-jq8w-8q2f-ffm9). Due to incorrect privilege validation in self-service profile modification endpoints, standard authenticated users could obtain plaintext verification codes during email or phone number updates. This allows attackers to claim and verify arbitrary email addresses or phone numbers without controlling the underlying contact methods.

Alon Barad
Alon Barad
5 views•7 min read