Skip to content

macOS: system-resolver (mDNSResponder) lookups bypass NE — per-process DNS leak for tunnel-backed endpoints #772

Description

@magurotuna

macOS counterpart of #765 (Linux side fixed in #771).

The NE transparent proxy rewrites a child's own UDP/53 flows to <gateway>:53 (Provider.swift pumpUDP), but apps that resolve via the system resolver — getaddrinfo, curl 8+, anything using mDNSResponder — never emit an NE-visible UDP/53 flow: mDNSResponder runs outside the registered PPID subtree, so its upstream queries are answered off-tunnel. For tunnel-backed endpoints (kubernetes_port_forward, local_command, postgres) that answer is a raw upstream IP, which black-holes exactly as described in #765. Already acknowledged in the Provider.swift comment near the tsnetGatewayIP field; no mitigation exists.

Candidate directions (all greenfield — none of these APIs are used in the repo today):

  • NEDNSProxyProvider to intercept system-resolver traffic;
  • NEDNSSettings / per-session resolver configuration pointing at the gateway;
  • a loopback forwarder + /etc/resolver entries.

Distinct from #754, which is about VIP answers/routing being broken even for flows the NE does intercept; this issue is about lookups the NE never sees.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions