This is a house number painted on the mailbox, not the front door left unlocked
Plugin 12218 is not finding code execution, auth bypass, or a memory corruption bug. It is finding a host that answers mDNS/Bonjour requests and leaks inventory-style details such as hostname, service list, interface addresses, and sometimes enough fingerprints to infer OS family or exact build. The affected range is not a software version range in the usual CVE sense; it is any device or host running an mDNS responder that will answer from a remotely reachable segment, whether that responder is Apple Bonjour, Avahi, embedded IoT firmware, or another DNS-SD implementation.
Tenable's MEDIUM label reflects confidentiality exposure in the abstract, but in enterprise reality this is usually over-scored. mDNS is designed for the local link, with TTL and multicast scope intended to keep it local; if this plugin fires, the more important story is segmentation drift, an mDNS gateway/repeater, or a device answering unicast queries it should not answer. The impact is reconnaissance fuel, not compromise by itself, so the right operational bucket is LOW unless the responder is directly reachable from the Internet or is disclosing unusually sensitive service metadata.
4 steps from start to impact.
Find a reachable responder with nmap or masscan
UDP/5353, typically with nmap -sU -p 5353 or a high-speed UDP sweep. This is discovery, not exploitation. If a host answers from a non-local segment, that already implies the environment is forwarding or exposing traffic that mDNS was never meant to share broadly.- Attacker has IP reachability to the target segment
- A host or appliance is listening on
UDP/5353and responds across the boundary
- Most routed enterprise networks do not forward link-local multicast normally
- Firewalls commonly block
UDP/5353at segment and perimeter boundaries - Many responders only answer on the local subnet
12218 detects this condition remotely; nmap dns-service-discovery and simple dig probes can validate it.Enumerate DNS-SD records with dig or Nmap dns-service-discovery
_services._dns-sd._udp.local and related PTR/TXT/SRV records. That often reveals concrete service names, hostnames, local IPs, models, and application metadata. On embedded gear, those TXT records can be surprisingly chatty.- Responder returns DNS-SD records to remote queries
- The implementation exposes PTR/SRV/TXT data
- Some implementations expose only minimal records
- Many devices rate-limit, scope responses, or stay multicast-only
- Unicast queries to port
5353do not work everywhere
nmap --script=dns-service-discovery -p 5353 <target> or dig @<target> -p 5353 _services._dns-sd._udp.local PTR.Turn metadata into targeting intelligence
- Returned records contain useful naming or service details
- Attacker has another path for follow-on access
- The finding alone does not deliver code execution or credentials
- Modern enterprises already leak similar inventory from DHCP, AD, TLS, or EDR telemetry
- Hostnames without business context are often low-value
DNS-SD sweeps but many orgs do not alert on them.Exploit the real weakness: boundary misconfiguration
- mDNS is crossing VLANs, VRFs, or the perimeter
- Boundary controls permit the traffic
- Blast radius is bounded to the exposed segment and the data the responder emits
- No integrity or availability impact is inherent to this plugin's finding
The supporting signals.
| In-the-wild status | No CISA KEV entry and no credible reporting of this Tenable finding being used as a standalone intrusion vector. This is reconnaissance exposure, not a weaponized vuln class. |
|---|---|
| PoC / tooling | Trivial enumeration exists via standard admin tools: dig, nmap --script=dns-service-discovery, and Nessus plugin 12218. That is enumeration tooling, not exploit code. |
| EPSS | Not applicable: this is not a CVE-backed software flaw and has no meaningful EPSS model entry. |
| KEV status | Not listed in CISA Known Exploited Vulnerabilities; there is no corresponding KEV-tracked CVE. |
| CVSS / vendor basis | Tenable scores it 5.0 with vector CVSS2#AV:N/AC:L/Au:N/C:P/I:N/A:N, which assumes partial confidentiality loss. That is technically fair but operationally inflated because it ignores the strong reachability friction. |
| Affected range | Any host, appliance, or embedded device running an mDNS/Bonjour/DNS-SD responder that answers from a reachable remote segment. No normal patchable version range is defined. |
| Fixed version | No vendor-fixed version in the Tenable advisory. This is usually addressed by filtering UDP/5353, disabling the responder where unnecessary, or correcting mDNS gateway/repeater behavior. |
| Exposure reality | RFC 6762 defines mDNS as link-local and sent to 224.0.0.251 / ff02::fb; Cisco explicitly notes routers should not forward it normally. If your scanner sees it remotely, that is an exception state. |
| Internet scanning / exposure | Shadowserver publishes an Open mDNS Report, which confirms real Internet exposure exists, but it is still abnormal. Censys scans the public IPv4 Internet broadly enough that genuinely public UDP/5353 exposure is discoverable. |
| Disclosure / provenance | Tenable published plugin 12218 on 2004-04-28 and last updated it on 2021-06-28. Reporting source is Tenable service-detection content, not a vendor security bulletin. |
noisgate verdict.
The decisive factor is attacker position and reachability friction: mDNS is supposed to be local-link only, so most real enterprise deployments never expose this beyond one subnet. When it does appear remotely, the result is usually metadata leakage and architectural sloppiness, not a direct compromise path.
Why this verdict
- Major downward adjustment: requires unusual reachability.
mDNSis a local-link protocol by design, so remote visibility means the attacker already has internal network position or the environment is misconfigured to exposeUDP/5353across boundaries. - Second downward adjustment: no compromise primitive. The finding leaks host and service metadata, but it does not grant execution, auth bypass, privilege escalation, or durable persistence.
- Not ignored entirely: it exposes useful targeting data. Hostnames, TXT records, service types, and local addresses can materially improve follow-on phishing, lateral movement planning, and asset fingerprinting.
Why not higher?
There is no direct path from this finding to code execution or privilege gain. The attack chain depends on a separate initial access or follow-on exploit, and the population that is remotely reachable is much smaller than the vendor score implies because normal routing and firewall policy should keep mDNS local.
Why not lower?
It is still real information disclosure when the plugin fires. If a host answers remotely, you have either Internet exposure or cross-segment leakage of a protocol that routinely reveals asset identity and service inventory, which is worth fixing even if it is not urgent.
What to do — in priority order.
- Block
UDP/5353at trust boundaries — Enforce ACLs/firewall policy somDNSstays on the local link and cannot cross user/server, server/management, or perimeter boundaries. For aLOWverdict there is no SLA; treat this as backlog hygiene and deploy in the next normal network change window. - Disable unnecessary responders — Turn off
Bonjour/Avahi/embedded DNS-SD advertising on servers and appliances that do not need zero-config discovery. This reduces passive metadata leakage and should be handled as routine hardening with no SLA; treat as backlog hygiene. - Audit mDNS gateways and reflectors — Review wireless controllers, IoT gateway features, Bonjour gateways, and multicast repeaters that intentionally bridge discovery across VLANs. Keep only explicit business-required service types and remove broad forwarding during the same hygiene cycle.
- Suppress vuln noise with exposure context — If the finding is limited to internal user subnets and only discloses commodity workstation/printer metadata, document the exposure class and avoid escalating it like a real vuln. Use asset tags or scanner exceptions so your queue reflects actual exploitability.
EDRdoes not stop the protocol from leaking service metadata over the network; this is a boundary-control problem.MFAis irrelevant because no authentication event occurs in this attack path.- Blind patching campaigns do not solve it when there is no vendor-fixed version and the issue is routing, filtering, or unnecessary service exposure.
Crowdsourced verification payload.
Run this from an auditor workstation, scanner node, or jump host that has the same network reachability as the scanner finding. Invoke it as ./check_mdns_remote.sh 10.20.30.40; it needs dig installed and does not require root. The script sends a direct DNS-SD PTR query to UDP/5353 and reports whether the host answers with service data.
#!/usr/bin/env bash
# check_mdns_remote.sh
# Verify whether a target answers remote mDNS/DNS-SD queries on UDP/5353.
# Output: VULNERABLE / PATCHED / UNKNOWN
# Exit codes: 0=VULNERABLE, 1=PATCHED, 2=UNKNOWN
set -u
TARGET="${1:-}"
QUERY="_services._dns-sd._udp.local"
if [[ -z "$TARGET" ]]; then
echo "UNKNOWN - usage: $0 <target-ip-or-hostname>"
exit 2
fi
if ! command -v dig >/dev/null 2>&1; then
echo "UNKNOWN - 'dig' not found; install dnsutils/bind-utils"
exit 2
fi
# Ask the target directly on UDP/5353 for DNS-SD service enumeration.
# Some responders will not answer unicast queries; that is expected and will be reported as PATCHED here,
# meaning 'not remotely answering in the way plugin 12218 depends on'.
OUT=$(dig @"$TARGET" -p 5353 "$QUERY" PTR +time=2 +tries=1 +short 2>/dev/null)
RC=$?
if [[ $RC -ne 0 ]]; then
echo "UNKNOWN - dig query failed"
exit 2
fi
if [[ -n "$OUT" ]]; then
echo "VULNERABLE - target answered remote mDNS/DNS-SD query on UDP/5353: $OUT"
exit 0
fi
# Fallback: ask for a common workstation PTR name pattern. This is still safe and lightweight.
OUT2=$(dig @"$TARGET" -p 5353 _workstation._tcp.local PTR +time=2 +tries=1 +short 2>/dev/null)
RC2=$?
if [[ $RC2 -ne 0 ]]; then
echo "UNKNOWN - fallback dig query failed"
exit 2
fi
if [[ -n "$OUT2" ]]; then
echo "VULNERABLE - target answered remote mDNS workstation query on UDP/5353: $OUT2"
exit 0
fi
echo "PATCHED - no remote mDNS/DNS-SD response observed on UDP/5353"
exit 1
If you remember one thing.
UDP/5353 from a non-local segment or the Internet, then fold boundary filtering and responder cleanup into the next normal change window. For a LOW verdict there is no noisgate mitigation SLA and no noisgate remediation SLA beyond backlog hygiene; document the rationale, block cross-boundary mDNS where unnecessary, and only fast-track it if you confirm Internet exposure or leakage from a sensitive management/server segment.Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.