← Back to Feed CACHED · 2026-07-10 09:44:39 · CACHE_KEY tenable:97861
tenable:97861 · CWE-406 · Disclosed 2016-11-21

Network Time Protocol

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

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.

"NTP mode 6 responses enable reflection DDoS against third parties — a good-neighbor hygiene issue, not a threat to your fleet"
02 · The Attack Path

3 steps from start to impact.

STEP 01

Locate a mode-6-responsive NTP server

Attacker scans UDP/123 across the internet looking for daemons that answer unauthenticated mode 6 control queries. Tools of choice: ZMap (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.
Conditions required:
  • ntpd 4.x with default restrict or missing noquery
  • No upstream ACL blocking UDP/123 ingress from the public internet
Where this breaks in practice:
  • Modern ntp.conf templates from Debian/RHEL/Ubuntu ship with restrict 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 unless cmdallow is set — it's a different protocol
Detection/coverage: Tenable 97861, Qualys 38607, Shadowserver daily 'NTP Version' feed, Rapid7 Sonar. Trivial to detect from the outside; near-zero false positives.
STEP 02

Craft spoofed-source readvar / peers query

Attacker sends a small (~48-byte) mode 6 control packet with the source IP forged to the victim's address. 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.
Conditions required:
  • Attacker's upstream network permits IP source spoofing (violates BCP38)
  • Victim's uplink is not upstream-scrubbing UDP/123 reflection floods
Where this breaks in practice:
  • 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
Detection/coverage: NetFlow / IPFIX showing asymmetric UDP/123 traffic; Arbor/Radware/Cloudflare DDoS telemetry.
STEP 03

Reflect amplified traffic to the victim

The vulnerable NTP host sends the large response to the spoofed victim address. Aggregated across thousands of reflectors, a ~1 Gbps attacker uplink can generate a 30–200 Gbps flood at the victim. Historical NTP reflection attacks (2014 Cloudflare/OVH) peaked at 400+ Gbps using monlist, but mode 6 amplification factors are more modest.
Conditions required:
  • A large pool of unpatched, mode-6-open NTP hosts (attacker's bot resource, not the defender's problem to solve alone)
Where this breaks in practice:
  • 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
Detection/coverage: Victim-side DDoS telemetry; source-side unusually high egress on UDP/123.
03 · Intelligence Metadata

The supporting signals.

Plugin IDTenable Nessus 97861 — Misc family, published 2017-03
Underlying CVEsCVE-2016-9310 (mode 6 unauth trap / DDoS vector), CVE-2013-5211 (monlist amplification)
In-the-wildNTP 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.
EPSSCVE-2016-9310 EPSS ~0.5–1.5% — reflection isn't 'exploited against you' in the EPSS sense, so score is intentionally low
KEV statusNot listed. KEV explicitly excludes DDoS reflection primitives.
Public exposureShadowserver 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 versionsntpd < 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 versionsntp 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+
ReporterMatthew Van Gundy (Cisco Talos / ntp.org) — NTP Bug 3118
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to LOW (3.1/10)

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.

HIGH technical accuracy of the mode 6 amplification mechanism
HIGH absence of endpoint-compromise risk from this finding alone
MEDIUM real-world exposure — depends heavily on whether the flagged host is internet-facing

Why this verdict

  • No compromise of the scanned host. Mode 6 responses leak ntpd version 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; ntpd packages since ~2017 ship restrict 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.

05 · Compensating Control

What to do — in priority order.

  1. 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.
  2. Set restrict default nomodify notrap nopeer noquery in ntp.conf — Pushes the daemon to refuse mode 6 (and mode 7) from anyone not explicitly permitted. Then allow local admin queries with restrict 127.0.0.1 / restrict ::1. Roll via config-management (Ansible/Puppet/Chef) across the fleet.
  3. Migrate ntpd to chrony where feasiblechrony does not respond to mode 6 by default and has a smaller attack surface. RHEL 8+, Ubuntu 20.04+, and Amazon Linux 2023 use chrony as the default time daemon.
  4. For Cisco IOS: no ntp allow mode control (or ntp allow mode control 3 with ACL) — Cisco devices are a common source of 97861 hits. The command disables mode 6 replies entirely. Apply via network-team change window.
  5. 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.
What doesn't work
  • 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 ntpd alone 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
06 · Verification

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.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/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
07 · Bottom Line

If you remember one thing.

TL;DR
Treat 97861 as hygiene, not incident. Per the noisgate mitigation SLA for LOW there is no mitigation deadline — go straight to the noisgate remediation SLA of ≤365 days and roll 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

  1. Tenable plugin 97861
  2. NVD CVE-2016-9310
  3. ntp.org Bug 3118 advisory
  4. Shadowserver NTP Version Report
  5. Virtue Security — NTP Mode 6 Vulnerabilities
  6. Red Hat CVE-2016-9310
  7. APNIC — UDP-based amplification DDoS vector
  8. F5 K87922456 CVE-2016-9310
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.