TCP framing bug allows cross-client request leakage in Simple DNS Plus
9/15/2025
Introduction
Improper handling of DNS over TCP in Simple DNS Plus v9 allows a remote attacker with querying access to the DNS server to cause the server to return request payloads from other clients. This happens when the TCP length prefix is malformed (len ≠ actual packet len), and due to a concurrency/buffering issue, even when the lengths match. A length prefix that is smaller than the actual packet size increases information leakage. In summary, this vulnerability allows an attacker to see DNS queries of other clients’ (CWE-125 / CWE-130 / CWE-444).
Affected components
- Product:
Simple DNS Plus
v9.1.116 - Feature: DNS over TCP
- Host device: Windows Server 2019
Reproduction
This was done on a device running macOS 26 connected to the network with a Simple DNS resolver forced. DNS requests to other resolvers were blocked by blocking port 53 outbound.
The following script was run, and server responses were logged to a text file.
The packet was sent 28,700 times (40 seconds), and DNS requests were logged. These requests were confirmed not to have been made from the test machine. A 2nd machine was tried with domains that are known not to exist, but due to the heavy traffic, the machine’s queries weren’t logged. The following domains were confirmed to have never been queried by the test machine.
These are malformed DNS queries by other machines on the network, and pcap logs confirm that the test machine did not look these queries up.
Mitigations
- Validating packet length directly instead of relying on the header
- Make sure each connection has an individual buffer