Bug 2536076 (CVE-2026-93007) - CVE-2026-93007 dnsmasq: dnsmasq: TCP/53 child-slot exhaustion starves DNSSEC validation
Summary: CVE-2026-93007 dnsmasq: dnsmasq: TCP/53 child-slot exhaustion starves DNSSEC ...
Keywords:
Status: NEW
Alias: CVE-2026-93007
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Product Security
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-09-17 14:47 UTC by OSIDB Bzimport
Modified: 2026-10-28 09:37 UTC (History)
35 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)

Description OSIDB Bzimport 2026-09-17 14:47:02 UTC
A resource-exhaustion issue was found in dnsmasq's TCP DNS handler. Incoming TCP connections on port 53 cause fork() of a child process tracked in fixed-size tcp_pids/tcp_pipes arrays bounded by MAX_PROCS (default 30, configurable via --max-tcp-connections). Children block on read_write() of the client socket with no SO_RCVTIMEO. The only timeout is CHILD_LIFETIME (150 seconds via SIGALRM).

An unauthenticated remote attacker can open MAX_PROCS idle TCP connections and hold all slots for up to 150 seconds. During exhaustion, set_dns_listeners() stops polling TCP listen sockets, and DNSSEC swap_to_tcp() (which shares the same slot pool) returns STAT_ABANDONED. UDP DNS continues to function.

This is a slowloris-style exhaustion of the fork-per-connection TCP architecture. SO_RCVTIMEO is already applied to upstream server sockets (forward.c) but not to accepted client sockets.

Affected versions: all current versions (fundamental TCP architecture).
Fix: Not yet available (reporter coordinating with upstream).
Reporter: Shubham Raj (Causal Security)
PSIRT Ticket: PSIRTSUPT-23743


Note You need to log in before you can comment on or make changes to this bug.