Your NTP daemon is a megaphone strangers can borrow to shout at someone else's building
Tenable plugin 97861 flags NTP servers that respond to mode 6 control queries (readvar, peers, sysinfo, etc.) from arbitrary source addresses. The problem isn't that mode 6 leaks catastrophic data — it leaks daemon version, peer list, and system variables — it's that mode 6 replies can be dozens to hundreds of times larger than the query, giving a spoofed-source attacker a UDP amplification vector for reflection DDoS. Related CVEs include CVE-2016-9310 (mode 6 unauthenticated trap / DDoS vector, fixed in ntpd 4.2.8p9) and CVE-2013-5211 (monlist). The plugin fires on any NTP daemon — reference ntpd, chrony with cmdallow, Cisco IOS NTP, Juniper, Windows W32Time is not typically affected because it doesn't speak mode 6.
Tenable's MEDIUM rating is defensible as a compliance flag but overstates the risk to *your* organization. The victim of amplification is a third party on the internet, not you — the confidentiality leak is trivial (version banners you'd expose to Shodan anyway), and there is no code execution, no privilege gain, no lateral movement path. The only way this rating deserves to stay MEDIUM is if the affected host is internet-facing UDP/123 and your org cares about being a reflection source (ISP, cloud, regulated). For internal-only NTP infrastructure, this is a LOW finding — hygiene, not a fire.
3 steps from start to impact.
Locate a mode-6-responsive NTP server
zmap -p 123 -M udp --probe-args=file:ntp_mode6.pkt) and Shadowserver's public NTP-Version report, which enumerates ~1M+ mode-6-responsive hosts weekly.- ntpd 4.x with default
restrictor missingnoquery - No upstream ACL blocking UDP/123 ingress from the public internet
- Modern
ntp.conftemplates from Debian/RHEL/Ubuntu ship withrestrict default nomodify notrap nopeer noquery— mode 6 blocked out of the box on new installs chrony(default on RHEL 8/9, Ubuntu 20.04+) does not respond to mode 6 unlesscmdallowis set — it's a different protocol
Craft spoofed-source readvar / peers query
ntpq -c rv <server> is the researcher-friendly way to see what a mode 6 response looks like. Response payloads for readvar can reach ~30x the request; peer-listing responses have been observed at 200x+ in the wild.- Attacker's upstream network permits IP source spoofing (violates BCP38)
- Victim's uplink is not upstream-scrubbing UDP/123 reflection floods
- Major carriers (Level3, Cogent, Zayo, most Tier-1s) have deployed BCP38 uRPF on customer edges — spoofing works only from a small subset of hosting providers and residential ISPs
- Cloud provider egress (AWS/GCP/Azure) blocks spoofed source addresses entirely
Reflect amplified traffic to the victim
monlist, but mode 6 amplification factors are more modest.- A large pool of unpatched, mode-6-open NTP hosts (attacker's bot resource, not the defender's problem to solve alone)
- Cloudflare Magic Transit, AWS Shield, Akamai Prolexic scrub NTP amplification signatures automatically
- Amplification factor for mode 6 is meaningfully lower than legacy
monlist(CVE-2013-5211) — attackers prefer DNS/memcached/CLDAP
The supporting signals.
| Plugin ID | Tenable Nessus 97861 — Misc family, published 2017-03 |
|---|---|
| Underlying CVEs | CVE-2016-9310 (mode 6 unauth trap / DDoS vector), CVE-2013-5211 (monlist amplification) |
| In-the-wild | NTP reflection is a known, active DDoS vector; NOT on CISA KEV (KEV tracks endpoint compromise, not reflection). No campaign attributes 97861 to a specific actor — it's a commodity booter/stresser resource. |
| EPSS | CVE-2016-9310 EPSS ~0.5–1.5% — reflection isn't 'exploited against you' in the EPSS sense, so score is intentionally low |
| KEV status | Not listed. KEV explicitly excludes DDoS reflection primitives. |
| Public exposure | Shadowserver publishes a daily 'Accessible NTP Version' feed — historically ~1M+ hosts globally; trending down as distros ship noquery defaults. Shodan ntp readvar returns hundreds of thousands. |
| Affected versions | ntpd < 4.2.8p9 with permissive restrict config; Cisco IOS NTP without no ntp allow mode control; any daemon speaking RFC 1305 mode 6 without ACL |
| Fixed versions | ntp 4.2.8p9 (Dec 2016) with mitigation; distro-shipped configs (RHEL/CentOS, Debian/Ubuntu, Amazon Linux) default to noquery since ~2017 |
| Amplification factor | ~3.7x to 30x for readvar; higher for peers on servers with many associations; well below monlist's 200x+ |
| Reporter | Matthew Van Gundy (Cisco Talos / ntp.org) — NTP Bug 3118 |
noisgate verdict.
Downgraded from vendor MEDIUM because the single decisive factor is blast-radius direction: the harm from this finding lands on a third-party DDoS victim, not on the scanned enterprise. There is no confidentiality, integrity, or availability impact to the affected host or its network beyond trivial version-banner disclosure.
Why this verdict
- No compromise of the scanned host. Mode 6 responses leak
ntpdversion and peer variables — nothing an attacker can pivot into RCE, credential theft, or lateral movement. - Victim is external. The amplification harm accrues to whoever the attacker spoofs, not to you. This is a good-internet-citizen issue, not a fleet-defense issue.
- Friction: spoofing is required. BCP38 uRPF on Tier-1 carrier edges and hyperscaler egress filters block source-address spoofing from most of the internet — the attacker population is bounded.
- Role multiplier: none. NTP daemons run in a stateless time-service role. There is no high-value deployment scenario (DC, hypervisor, PAM, CI) where mode 6 responses turn into fleet compromise. The role-multiplier floor does not apply.
- Modern defaults already fix it.
chrony(RHEL 8+, Ubuntu 20.04+) doesn't speak mode 6;ntpdpackages since ~2017 shiprestrict default noquery. New-build fleets are largely clean. - Reputational / compliance tail exists. ISPs, hosting providers, and CDN/edge operators receive Shadowserver abuse notifications and can end up on RBLs — for those orgs, the finding stays MEDIUM.
Why not higher?
MEDIUM would require impact on the scanned host or its data. Mode 6 exposes only version and peer metadata, no auth material, no config secrets, no RCE. There is no chain that pivots from mode 6 response to endpoint compromise, so keeping this at MEDIUM misallocates SOC attention against genuinely exploitable findings.
Why not lower?
IGNORE would require zero externality. If the flagged host is internet-facing on UDP/123, it can be conscripted into reflection DDoS campaigns and generate abuse tickets, RBL entries, and potentially breach hosting-provider AUPs. LOW captures 'fix on a normal hygiene cadence' — the correct signal.
What to do — in priority order.
- Block inbound UDP/123 at the perimeter for hosts that don't need to serve external NTP — Firewall/edge ACL: only your public stratum-1/2 servers (if any) should accept internet UDP/123. Everything else — internal servers, workstations, appliances — should egress-only to your NTP pool. Deploy within the noisgate mitigation SLA of 30 days if any flagged hosts are internet-facing; otherwise treat as backlog.
- Set
restrict default nomodify notrap nopeer noqueryinntp.conf— Pushes the daemon to refuse mode 6 (and mode 7) from anyone not explicitly permitted. Then allow local admin queries withrestrict 127.0.0.1/restrict ::1. Roll via config-management (Ansible/Puppet/Chef) across the fleet. - Migrate
ntpdtochronywhere feasible —chronydoes not respond to mode 6 by default and has a smaller attack surface. RHEL 8+, Ubuntu 20.04+, and Amazon Linux 2023 usechronyas the default time daemon. - For Cisco IOS:
no ntp allow mode control(orntp allow mode control 3with ACL) — Cisco devices are a common source of 97861 hits. The command disables mode 6 replies entirely. Apply via network-team change window. - Enable BCP38 / uRPF on your own edges — Doesn't fix the finding, but ensures your network cannot be used as a *spoofing origin* for anyone else's reflection attacks. Good-neighbor control.
- IPS signatures for 'NTP amplification' inbound — the amplification traffic flows *outbound* from your NTP host to the victim; inbound IPS won't see the flood
- Rate-limiting UDP/123 at the firewall — reduces amplification factor but doesn't eliminate the reflection; still leaves you as a listed reflector
- Patching
ntpdalone to 4.2.8p9 — the fix requires a config change (noquery), not just a version bump. Many orgs upgrade the binary and stay vulnerable to the plugin - Disabling
monlist— that's CVE-2013-5211; mode 6 is a separate control channel and remains open
Crowdsourced verification payload.
Run on the target NTP host as any user, or against a remote target from your auditor workstation (network-reachable to UDP/123). Requires ntpq (package ntp or ntpsec-ntpq). Example: ./check_ntp_mode6.sh 10.0.0.5 — omit the argument to check localhost.
#!/usr/bin/env bash
# noisgate: Tenable 97861 — NTP Mode 6 responder check
# Exit: 0 PATCHED, 1 VULNERABLE, 2 UNKNOWN
set -u
TARGET="${1:-127.0.0.1}"
TIMEOUT=3
if ! command -v ntpq >/dev/null 2>&1; then
echo "UNKNOWN: ntpq not installed — install 'ntp' or 'ntpsec-ntpq' package"
exit 2
fi
# Mode 6 readvar query — a responsive daemon returns system variables
RESP=$(timeout "$TIMEOUT" ntpq -c 'rv 0' "$TARGET" 2>&1)
RC=$?
if [ $RC -ne 0 ] && echo "$RESP" | grep -qiE 'timed? out|no server|refused|connection'; then
echo "PATCHED: $TARGET does not respond to mode 6 readvar (or UDP/123 filtered)"
exit 0
fi
if echo "$RESP" | grep -qiE 'version=|processor=|system=|stratum='; then
echo "VULNERABLE: $TARGET responded to unauthenticated mode 6 readvar"
echo "---"
echo "$RESP" | head -5
exit 1
fi
echo "UNKNOWN: inconclusive response from $TARGET"
echo "$RESP" | head -3
exit 2
If you remember one thing.
restrict default ... noquery into your NTP config-management baseline on the next fleet-wide config push. Monday morning: run the verification script across your NTP servers, prioritize any host that answers mode 6 on an internet-facing interface (block UDP/123 ingress at the edge within 30 days), and put a Jira ticket on the network team to add no ntp allow mode control to your Cisco IOS gold config. Do not let this finding pull engineer attention away from KEV-listed or exposure-heavy CVEs — the harm here lands on someone else's DDoS victim, not your fleet.Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.