OpenThread: mDNS discovery proxy denial of service (CVE-2026-112325)
A NULL-pointer dereference vulnerability in the OpenThread DNS-SD Discovery Proxy allows a remote attacker on the same Thread mesh to trigger a denial of service on the Border Router via two crafted DNS-SD queries.
CVE search metadata
CVE search record: CVE-2026-112325. KEV: no. Product: OpenThread (< b47613f1), OpenThread Border Router (< b47613f1). Brief: OpenThread: mDNS discovery proxy denial of service (CVE-2026-112325). Brief link: https://feed.craftedsignal.io/briefs/2026-10-openthread-mdns-dos/
Triage facts
Revision 1- Applicability
- OpenThread (< b47613f1), OpenThread Border Router (< b47613f1)
- Evidence
- Unknown
- Severity
- Medium
- Action
- Elevated
- Sources
- 4 public sources
- Freshness
- Revision 1Oct 25, 21:47 UTC
- Vulnerabilities
- 1 CVE
- Source quality
- A1Likely
OpenThread's native Multicast DNS (mDNS) implementation contains a vulnerability in the Core::RecordCache::Matches() function. The function fails to validate that the mNextLabels pointer of an incoming DNS-SD querier is non-NULL before passing it to NameMatch(). An attacker on a Thread mesh can send two specific, well-formed DNS-SD query packets that cause the Matches() function to dereference a NULL pointer, crashing the OpenThread Border Router (OTBR). This results in a denial of service (DoS) for the entire Thread network, as the router loses its capability to facilitate off-network connectivity.
Attack Chain
- An attacker gains access to a device on the Thread mesh (e.g., a compromised IoT sensor or light bulb).
- The attacker sends a first DNS-SD query (
QNAME:default.service.arpa.default.service.arpa) to the Border Router. - The Border Router processes the query, resulting in a cache entry with a non-NULL
mNextLabelsvalue. - The attacker sends a second DNS-SD query (
QNAME:default.service.arpa). - The
StripDomainName()function fails to strip the domain, resulting in an incoming querier withmNextLabels = nullptr. - The
RecordCache::Matches()function executes, comparing the new query against the cached entry. - The
RecordCache::Matches()function enters theelsebranch, invokingNameMatch()without checking if the querier'smNextLabelsis NULL. NameMatch()dereferences the NULL pointer (address 0x0), crashing the process.
Impact
The crash causes an immediate denial of service on the OpenThread Border Router. Because the Border Router acts as the gateway between the Thread mesh and external networks, the entire Thread network is cut off from off-network connectivity until the service or device is manually recovered.
Recommendation
- Upgrade OpenThread and OpenThread Border Router (OTBR) to a revision containing commit
b47613f1or later. - Audit mesh networks for unauthorized devices, as the exploit requires adjacency to the Thread interface.
- Implement monitoring for service crashes on Border Router hardware to identify potential exploitation attempts.
Immediate actions
Upgrade OpenThread Border Router to a version containing commit b47613f1
Threat Hunt
Monitor Border Router logs for recurring unexpected service restarts or segmentation faults
Data: Systemd/kernel crash logs from OTBR hosts