ntp.util: Fix rpeers mode in PeerSummary.summary
[ntpsec.git] / NEWS.adoc
blob028a690011a62d208866e4641d78be2b4e02cc1e
1 = NTPsec project news =
3 For historic news from NTP Classic, see devel/HISTORIC-NEWS in the
4 distribution.
6 Not all news features are described here; see docs/ntpsec.adoc in the
7 distribution.
9 Much of the traditional function of a news file is now better addressed
10 by browsing the comments in the revision history.  This file will focus
11 on user-visible changes.
13 ## Repository Head
15 * ntpd can now listen on a second port.  Add either "nts port xxxx"
16   or "extra port xxxx" in your config file. If either is specified,
17   the NTS-KE server will tell the client to use that port.  This might
18   help get around some of the blocking or filtering that ISPs are
19   doing to port 123.  (Don't forget to let UDP traffic for that port
20   through your firewall.) I've been testing with port 8123.
22 * Client requests will also be sent from that port.  Again, that will
23   bypass some port 123 filtering.
25 ## 2023-12-30: 1.2.3
27 * Change mode6 alignment to four, which may
28   break some compatibility with classic NTP.
30 * Seccomp should now also yield invalid syscall names when dying.
32 * Make ntpq stop dropping output timestamp leading zeroes.
34 * Update documents in quite a few places.
36 * Reset some stats hourly, even when not logged into files.
38 * Add error logging, and stats for ms-sntp.
40 * Add spacing between multiple peer views in ntpq.
42 * We think we have fixed ms-sntp but we can't test it.
43   If you can test it, please let us know if it does/doesn't work.
45 * ntpd and ntpq both treat SHA-1 as an alias for SHA1
46   NIST uses SHA-1.  The crypto package from OpenSSL uses SHA1.
48 * The default crypto type for ntpq is now AES.
49   RFC 8573 deprecated MD5.
51 * There are now log files with hourly statistics for NTS and
52   NTS-KE traffic: filegen ntsstats and filegen ntskestats,
54 * Update ntpsnmpd to use python built-in to get uname information. NTPsec/ntpsec#791
56 * Update license file names for REUSE compliance.
58 * Fix ntploggps issue where count_used_satellites checked before it is initialized.
60 * Print out OpenSSL version at configure time.
62 * Enable debug symbols by default, with only an option to disable.
64 * Add support for ecdhcurves list.
66 * Fix build on platforms where `-fstack-protector` relies on libssp, like musl.
68 * Fix ntpdig crash when using 2.ntp.pool.org with a host without IPv6 support.
70 * Do not install libaes_siv test anymore.
72 * Add update option to buildprep.
74 * ntpdig shows packet delay in JSON output.
76 ## 2023-08-02: 1.2.2a
78 Fix a crash in ntpd if NTS is disabled and an NTS-enabled client request (mode
79 3) is received. (CVE-2023-4012)
81 ## 2022-12-28: 1.2.2
83 * Restore/cleanup NTPv1 support
85 ** ntpq sysstats now shows NTPv1 traffic.
87 ** NTPv1 counter added to sysstats log file.
89 * NTS supports partial wildcards, for example `*.example.com`
91 * Work on documentation, ntpdate, ntpheat, ntploggpg, ntpq's sysstats, ntpviz,
92 and seccomp.
94 * NTP auth no longer breaks on NULs.
96 * The NTS server now saves 10 days worth of cookie keys.  This will allow clients
97 that only poll once a day to use NTS without using NTS-KE to keep cookies up to
98 date.
100 * rawstats now logs dropped packets and their BOGON code
102 ** Only one per request to avoid DoSing the log file
104 ** This lets you see packets that take too long.
106 * Add 4 or 6 to DNS/NTS RefID tags to indicate that the
107 DNS or NTS-KE has succeeded but NTP has not worked yet.
109 * Build improvements
111 ** Respect `--notests` configure option for build
113 ** Add `--enable-attic` (default off)
115 ** Restore Python 2.6 support
117 ** Restore LibreSSL support
119 ** Add support for OpenSSL 3.0
121 * Fix hash validation in ntpleapfetch again.
123 * FreeBSD now gets nanosecond resolution on receive time stamps.
125 == 2021-06-06: 1.2.1 ==
127 Update ntpkeygen/keygone to properly filter `#` characters. (CVE-2021-22212)
129 Add dextral peers mode in ntpq and ntpmon.
131 Drop NTPv1 as the support was not RFC compliant, maybe v2 except mode 6 next.
133 Fix argument P for ntpd parsing fixed and ntpdate improvements.
135 Fix crash for raw ntpq readvar.
137 Add processor usage to NTS-KE logging except on NetBSD.
139 Remove --build-epoch and replace it with arbitrary --build-desc text.
140 Passing '--build-desc=$(date -u +%Y-%m-%dT%H:%M:%Sz)' restores the previous
141 default extended version.
143 The build epoch has been replaced with a hardcoded timestamp which will be
144 manually updated every nine years or so (approx 512w).  This makes the
145 binaries reproducible by default.
147 Compare versions of ntp.ntpc and libntpc printing a warning if
148 mismatched. Fix libntpc install path if using it.
150 Reduce maxclocks default to 5 to reduce the NTP pool load.
152 Print LIBDIR during ./waf configure.
154 Add documentation, new GPG key, and other cleanups.
156 == 2020-10-06: 1.2.0 ==
158 The minor version bump is to indicate official official support of
159 RFC8915 "Network Time Security for the Network Time Protocol" which
160 was released 2020-09-30.
162 On this day in 1783, Benjamin Hanks received a patent for a
163 self-winding clock he planned to install in the Old Dutch Church in
164 Kingston, New York, supposedly making it the first public clock in
165 what became the New York City metropolitan area.
167 NTS-KE client now defaults to port 4460.
169 NTS-KE server now listens on port 4460.
170 (Listening on port 123 has been removed.)
172 The shebang of installed Python scripts can now be customized with:
173   waf configure --pyshebang="..."
174 This has multiple uses, but one example is for distros (like CentOS 8 or
175 Ubuntu 20.04) with no `python` executable:
176   python3 waf configure --pyshebang="/usr/bin/env python3"
178 NTP clients now use a shared library with Python instead of an extension.
180 Add flakiness option to ntpq and fixed limit=1 in mrulist.
182 Fixed a minor formatting issue in rate page.
184 == 2020-05-23: 1.1.9 ==
186 Today is Blursday, Maprilay 84th, 2020, of the COVID-19 panic.
188 Correctly parse ntpq :config output on Python 3 and check return MACs.
190 Add AES and other algorithm support to ntpq and ntpdig, from OpenSSL.
192 Remove support for NetInfo. NetInfo was last supported in Mac OS X v10.4
194 The configure step now supports --disable-nts for running
195 on systems with older versions of OpenSSL.
197 The default restrictions now start with noquery and limited
198 to reduce the opportunities for being used for DDoS-ing.
200 The draft RFC for NTS has dropped support for TLSv1.2
201   We now need OpenSSL with TLSv1.3 support (version 1.1.1 or newer).
202   The config keyword +tlsciphers+ has been removed.
204 Additional filtering and sort options have been added to ntpq/mrulist
205   Details are in the man page.
207 Rate limiting has been cleaned up.
208   With "restrict limited", traffic is now limited to
209   an average of 1 packet per second with bursts of 20.
210   (needs doc and maybe config)
212 SIGHUP and hourly checks have been unified.  Both now
213   check for a new log file
214   check for a new certificate file
215   check for a new leap file
216 SIGHUP also restarts all pending DNS and NTS probes.
218 NTS client now requires ALPN on TLSv1.3.
220 asciidoctor (1.5.8 or newer) is now supported and is the preferred AsciiDoc
221 processor.  asciidoc is still supported, but the minimum supported version
222 has been raised from 8.6.0 to 8.6.8.  asciidoc3 (3.0.2 or newer) is also
223 supported.
225 HTML docs are now built by default if an AsciiDoc processor is installed.  If
226 you do not want HTML docs, configure with --disable-doc.  (Note:  Man pages
227 are controlled by a separate --disable-manpage.)
229 Analysis shows that CVE-2020-11868, affecting NTP Classic,
230 cannot affect us, as the peer mode involved has been removed.
232 == 2019-11-17: 1.1.8 ==
234 Fix bug in NTS-KE client so that NTP server names work.
236 Fix/tweak several NTS logging messages.
238 == 2019-09-02: 1.1.7 ==
240 The numeric literal argument of the 'time1' fudge option on a clock
241 can now have one or more letter suffixes that compensate for era
242 rollover in a GPS device.  Each "g" adds the number of seconds in a
243 1024-week (10-bit) GPS era. Each "G" adds the number of seconds in a
244 8192-week (13-bit) GPS era.
246 The neoclock4x driver has been removed, due to the hardware and the
247 vendor having utterly vanished from the face of the earth.
249 The NTS ALPN negotiation sequence has been modified for improved
250 interoperability with other NTS implementations.
252 NTS key rotation now happens every 24 hours.  It used to rotate
253 every hour to enable testing of recovery from stale cookies.
255 On this day in 1945, some important paperwork was signed by
256 General MacArthur aboard the USS Missouri.
258 == 2019-07-10: 1.1.6 ==
260 Fixes to code quality checks.
262 Fixes to NTS server list.
264 Fix to bug #600.
266 On this day in 1913, in Death Valley, the temperature was 56.7°C,
267 officially world's highest recorded temperature.
269 == 2019-06-30: 1.1.5 ==
271 Add ALPN for the NTS server, as required by the NTP draft.
273 Revert some ntpq behavior.
275 On this day in 1972 the first leap second is added to the UTC time system.
277 == 2019-06-21: 1.1.4 ==
279 NTS is now implemented.  See .../devel/nts.adoc
280 https://tools.ietf.org/html/draft-ietf-ntp-using-nts-for-ntp
282 We thank Cisco for sponsoring the NTS development.
284 Lots of fixes and cleanups to PPS, both implementation and documentation.
286 Pthread support is now required.  --disable-dns-lookup is gone.
288 NIST lockclock mode is now a runtime option set by the (previously unused)
289 flag1 mode bit of the local-clock driver.
291 As always, lots of minor fixups and cleanups everywhere.  See the git log.
293 Today marks the summer solstice in the Northern Hemisphere.
295 == 2019-01-13: 1.1.3 ==
297 Security fixes for bugs inherited from NTP Classic:
299 * CVE-2019-6443: OOB read in ctl_getitem() in ntp_control.c (GitLab #507)
300 * CVE-2019-6444: OOB read in process_control() in ntp_control.c (GitLab #508)
301 * CVE-2019-6445: Remotely triggerable crash in ntp_control.c (GitLab #509)
302 * CVE-2019-6442: Authenticated OOB write in ntp_parser.y (GitLab #510)
304 Lots of typo fixes, documentation cleanups, test targets.
306 In memory of Arland D. Williams Jr.
308 == 2018-08-28: 1.1.2 ==
310 Use data minimization on client requests
311   https://datatracker.ietf.org/doc/draft-ietf-ntp-data-minimization/
313 Support AES-128-CMAC for authentication
314   https://www.rfc-editor.org/info/rfc8573
316 == 2018-06-11: 1.1.1 ==
318 Log timestamps now include the year.  This is useful when
319 investigating bugs involving time-setting and -g.
321 Many internal cleanups to clear the way for upcoming major features.
322 They should generally not be user visible.  Refer to the git-log if
323 you are interested.
325 == 2018-03-14: 1.1.0 ==
327 RIP Stephen William Hawking, CH CBE FRS FRSA. 1942-01-08 - 2018-03-14
328 You gave us a Brief History of Time.  We will just count it.
330 Enough user visible changes have been made that this is the 1.1.0 release
331 instead of a 1.0.1.
333 The code size is now 55KLOC in C, 15KLOC in Python.
335 Digests longer then 20 bytes will be truncated.
337 We have merged NTP Classic's fix for CVE-2018-7182.
339 The following NTP Classic CVEs announced in February 2018 do not affect NTPsec:
341 * CVE-2016-1549: Sybil vulnerability: ephemeral association attack
342 * CVE-2018-7170: Multiple authenticated ephemeral associations
343 * CVE-2018-7184: Interleaved symmetric mode cannot recover from bad state
344 * CVE-2018-7185: Unauthenticated packet can reset authenticated interleaved association
345 * CVE-2018-7183: ntpq:decodearr() can write beyond its buffer limit
347 We have dropped support for Broadcast servers.  We had kept it for
348 older desktop operating systems listening on the local network
349 broadcast domain, a use case that is no longer employed in sane
350 environments, and no longer necessary for modern desktop OSs.
352 It is now possible to unpeer refclocks using a type/unit specification
353 rather than a magic IP address.  This was the last obligatory use of
354 magic IP addresses in the configuration grammar.
356 OpenBSD has been removed from the list of supported platforms for
357 ntpd. It will be restored if and when its clock API supports drift
358 adjustment via ntp_adjtime() or equivalent facility.
360 Mac OS X support has been dropped pending the implementation of
361 ntp_adjtime(2).
363 A bug that caused the rejection of 33% of packets from Amazon time
364 service has been fixed.
366 == 2017-10-10: 1.0.0 ==
368 This is the 1.0 release.
369 It has been a long road, getting from there to here.
371 The code size has been further reduced, to 55KLOC.
373 A bug inherited from Classic that could cause bad jitter from bad
374 peers to be incorrectly zeroed, producing erratic or slow startup, has
375 been fixed.
377 The dependency of local refclocks returning 4-digit years on
378 pre-synchronization to a network peer has been removed.  It is
379 thus possible to run in a fully-autonomous mode using multiple
380 refclocks and no network peers.
382 ntpmon now reports units on time figures.
384 ntpq now reports a count of Mode 6 messages received under sysstats.
386 You can now turn off restriction flags with an _unrestrict_ statement
387 that takes arguments exactly like a _restrict_, except that with no
388 argument flags it removes any filter rule associated with the
389 address/mask (as opposed to creating one with unrestricted
390 access). This is expected to be useful mainly with the "ntpq :config"
391 command.
393 Builds are fully reproducible; see SOURCE_DATE_EPOCH and BUILD_EPOCH.
395 == 2017-03-21: 0.9.7 ==
397 The code size has been further reduced, to 60KLOC.
399 A shell script, buildprep, has been added to the top level source directory.
400 It prepares your system for an NTPsec source build by installing all required
401 dependencies on the build host.
403 Extra digits of precision are now output in numerous places.  The
404 driftfile now stores 6 digits past the decimal point instead of 3.  The
405 stats files now stores 9 digits past the decimal point instead of 6 for
406 some fields. ntpq and ntpmon also report extra digits of precision in
407 multiple places.  These changes may break simple parsing scripts.
409 Four contrib programs: cpu-temp-log; smartctl-temp-log, temper-temp-log,
410 and zone-temp-log; have been combined into the new program ntplogtemp.
411 The new program allows for easy logging of system temperatures and is
412 installed by default.
414 The SHM refclock no longer limits the value of SHM time by default.
415 This allows SHM to work on systems with no RTC by default.
417 The following CVEs revealed by a Mozilla penetration test and reported in
418 CERT VU#325339 have been resolved:
420 CVE-2017-6464: Denial of Service via Malformed Config
421 CVE-2017-6463: Authenticated DoS via Malicious Config Option
422 CVE-2017-6458: Potential Overflows in ctl_put() functions
423 CVE-2017-6451: Improper use of snprintf() in mx4200_send()
425 A Pentest report by Cure53 noted that a previously fixed CVE had been
426 reintroduced into the code.  This was resolved, again.
428 CVE-2014-9295: Multiple stack-based buffer overflows in ntpd
430 The following CVEs, announced simultaneously, affected NTP Classic but
431 not NTPsec, because we had already removed the attack surface:
433 CVE-2017-6462: Buffer Overflow in DPTS Clock
434 CVE-2017-6455: Privileged execution of User Library code
435 CVE-2017-6452: Stack Buffer Overflow from Command Line
436 CVE-2017-6459: Data Structure terminated insufficiently
437 CVE-2017-6460: Buffer Overflow in ntpq when fetching reslist
439 We gratefully acknowledge the work of of Dr.-Ing. Mario Hederich
440 at cure53 in detecting these problems and his cooperation in resolving them.
442 == 2016-12-30: 0.9.6 ==
444 ntpkeygen has been moved from C to Python.  This is not a functional
445 change, just another move to improve maintainability and reduce attack
446 surface by decreasing line count.
448 ntpdig has also been moved from C to Python. Though this is also
449 mostly a move to reduce line count, the new version does have some
450 functional changes.  Obsolete options have been dropped, logging is
451 done a bit differently, and the synchronization-distance computation has
452 been brought up to date with ntpd's. Also, this version can be told to
453 collect multiple samples and use whichever has the lowest combination
454 of stratum and synchronization distance.
456 A new tool for time-service operators, ntpmon, supports real-time
457 monitoring of your NTP installation's status.
459 == 2016-11-23: 0.9.5 ==
461 This release includes a substantial refactoring of the core protocol
462 implementation. Due to unresolvable security issues, support for
463 broadcast/multicast clients has been dropped; broadcast servers are
464 still supported. Likewise, symmetric mode is now only partially
465 supported. The `peer` directive has become a synonym for `server`.
466 Servers which receive symmetric-active mode packets will immediately
467 give a symmetric-passive-mode response, but will not mobilize a new
468 association.
470 All remaining Perl code in the distribution has been moved to Python.
472 The trap feature, broken in NTP Classic at the time of the NTPSec fork,
473 has been removed. So has its only known client, the ntptrap script in the
474 distribution.
476 A new visualization tool, ntpviz, generates graphical summaries of
477 logfile data that can be helpful for identifying problems such as
478 misconfigured servers.  It replaces a messy and poorly documented pile
479 of ancient Perl, awk, and S scripts; those have been removed.
481 It is now possible (and sometimes useful) to say "minpoll 0" for a
482 1-second interval.
484 The ntpq tool for querying and configuring a running ntpd has been
485 moved from C to Python.  About the only visible effect this has is
486 that ntpq now resizes its peers display to accommodate wide
487 terminal-emulator windows.
489 This release includes fixes for four low and medium-severity
490 vulnerabilities:
492 CVE-2016-7434: Null pointer dereference on malformed mrulist request
493 CVE-2016-7429: Interface selection DoS
494 CVE-2016-9311: Trap crash
495 CVE-2016-9310: Mode 6 unauthenticated trap information disclosure and DDoS vector
497 Note that the "fixes" for CVE-2016-9310/9311 consist of complete
498 removal of the broken trap feature. This removal occurred post-0.9.4
499 but prior to the discovery of these issues.
501 Further, an additional low-severity issue impacting 0.9.0 through
502 0.9.3 has come to our attention:
504 CVE-2016-7433: Reboot sync calculation problem
506 This issue was already addressed in 0.9.4 but not treated as a
507 vulnerability.
509 The following NTP Classic CVEs do not impact NTPsec: CVE-2016-7427,
510 CVE-2016-7428, CVE-2016-9312, CVE-2016-7431. We reject CVE-2016-7426,
511 as it describes known and intended behavior which is a necessary
512 logical consequence of rate-limiting.
514 For more information on these security issues, see:
515 https://lists.ntpsec.org/pipermail/devel/2016-November/002589.html
516 http://support.ntp.org/bin/view/Main/SecurityNotice#November_2016_ntp_4_2_8p9_NTP_Se
518 == 2016-08-16: 0.9.4 ==
520 usestats has been added to the statistics collection to record
521 system resource usage statistics.
523 A new, simpler configuration syntax for refclocks has been
524 implemented.  Configuration examples in the new syntax have been added
525 to each driver page.
527 Refclocks are now designated by name, not number. A list is available
528 from "./waf configure --list".
530 The rarely-used saveconfig feature in ntpd, and various associated
531 configuration directives, have been removed for security reasons. The
532 ntpd --saveconfigquit option, undocumented in NTP Classic, has
533 also been removed.
535 The ARCRON MSF refclock has been removed on the advice of last maintainer.
537 The Spectracom TSYNC PCI refclock has been removed. It required a
538 proprietary driver.  As a matter of good security policy, NTPsec will
539 not trust nor attempt to support code it cannot audit.
541 The Conrad Parallel Port radio refclock has been removed.  It required
542 a third-party parallel-port driver for Linux that no longer exists.
544 Both Hopf refclocks have been removed.  The 6039 driver required a
545 kernel driver that no longer exists; the 6021 driver duplicated
546 support in the generic driver.
548 The Austron refclock has been removed, on the grounds that it was
549 EOLed more than 20 years ago and there's been no aftermarket activity
550 or web chatter around it for a decade.
552 The audio-path drivers (IRIG and CHU) have been removed. The class
553 of hardware required to support them has gone essentially extinct due
554 to cheap DSP. The complexity/maintenance overhead of this code
555 was high enough to motivate dropping them.
557 This release contains a fix for one vulnerability inherited from
558 NTP Classic:
560 [Bug 3044] (CVE-2016-4954) Processing spoofed server packets
562 https://lists.ntpsec.org/pipermail/devel/2016-June/001299.html provides
563 additional information on this issue.
565 It also includes the following fix cross-ported from Classic:
567 [Bug 3047] refclock_jjy does not work with C-DEX JST2000
569 == 2016-05-17: 0.9.3 ==
571 The long-deprecated Autokey feature has been removed.
573 This release contains fixes for three vulnerabilities inherited from
574 NTP Classic:
576 [Bug 3020] (CVE-2016-1551) Refclock impersonation vulnerability
577   (Credit: Matt Street et. al. of Cisco ASIG)
578 [Bug 3008] (CVE-2016-2519) ctl_getitem() return value not always checked
579   (Credit: Yihan Lian of the Qihoo 360 cloud security team)
580 [Bug 2978] (CVE-2016-1548) Interleave-pivot
581   (Credit: Miroslav Lichvar of RedHat and Jonathan Gardner of Cisco ASIG)
583 The following non-security fixes have been
584 forward-ported from Classic:
586 [Bug 2772] adj_systime overflows tv_usec
587 [Bug 2814] msyslog deadlock when signaled.
588 [Bug 2829] Look at pipe_fds in ntpd.c
589 [Bug 2887] fudge stratum only accepts values [0..16].
590 [Bug 2958] ntpq: fatal error messages need a final newline.
591 [Bug 2965] Local clock didn't work since 4.2.8p4.
592 [Bug 2969] Segfault from ntpq/mrulist when looking at server with lots of clients
594 We regard the following NTP Classic bug -
596 [Bug 3012] (CVE-2016-1549) Sybil vulnerability: ephemeral association attack
597 (Credit: Matthew van Gundy of Cisco ASIG)
599 as a duplicate of CVE-2015-7974 (see 0.9.1 release
600 notes) and it is WONTFIX for the time being: it is
601 correct-but-unfortunate behavior consequent to confusing and
602 inflexible semantics of ntp.conf's access control language, and we
603 will address it with a future redesign effort. NTP Classic has
604 partially addressed this pair of issues by extending the syntax of
605 ntp.keys to support IP ACLing. We are not currently aware of any
606 demand for this feature among NTPsec users and have no plans to
607 implement it; if you have a need for it, please file a bug at
608 https://gitlab.com/groups/NTPsec/issues to let us know you're out
609 there.
611 The remainder of the security issues patched in NTP Classic 4.2.8p7
612 either are not believed to impact NTPsec or were already fixed in a
613 previous release.
615 == 2016-03-15: 0.9.2 ==
617 Point release.
619 * can now cross-compile
620 * many documentation fixes
621 * Coverity is even more strict
622 * remove WWV, transmitter protocol changed, nobody builds receivers
623 * remove updwtmpx stuff, no longer useful
625 == 2016-01-25: 0.9.1 ==
627 Point release for security. Fixes:
629 * CVE-2015-7973: Replay attack on authenticated broadcast mode
630   (Aanchal Malhotra)
631 * CVE-2015-7975: nextvar() missing length check (Jonathan Gardner)
632 * CVE-2015-7979: Off-path Denial of Service (DoS) attack on
633   authenticated broadcast and other preemptable modes (Aanchal
634   Malhotra)
635 * CVE-2015-8138: Zero Origin Timestamp Bypass (Matthew van Gundy &
636   Jonathan Gardner)
637 * CVE-2015-8139: Origin Leak: ntpq and ntpdc Disclose Origin Timestamp
638   to Unauthenticated Clients (Matthew van Gundy)
639 * CVE-2015-8158: Potential Infinite Loop in ntpq (Jonathan Gardner)
640 * CVE-2016-1550: Timing attack on MAC verification (Daniel Franke)
641 * Missing length checks in decodearr() and outputarr() (Daniel Franke)
643 Two additional security issues have been reported to us for which we
644 are not implementing code changes, but the user should be aware of
645 their impact.
647 The first (CVE-2015-8140) pertains to NTP's dynamic reconfiguration
648 feature, which permits on-the-fly modification of NTP's configuration
649 via ntpq. This feature is rarely used, typically disabled, and can
650 only be enabled when authentication is configured. ntpd has no means
651 of detecting that a request to change its configuration is a replay of
652 an old packet. Therefore, if an administrator sets ntpd to
653 configuration A and then to configuration B, an attacker who captures
654 the packets commanding these changes can replay the first one and
655 restore ntpd's state to configuration A. This is only a concern when
656 the configuration commands are sent over an untrusted
657 network. Configuration changes made via localhost are not susceptible.
659 This is an inherent design flaw in NTP cryptography and in the remote
660 reconfiguration protocol, and can be fixed only with a considerable
661 reworking and by changing the protocol in a way that is neither
662 forward nor backward compatible. This cryptographic rework is on the
663 horizon in the form of Network Time Security (currently a draft in the
664 IETF network time working group). Given that this vulnerability
665 impacts few if any real users, we have chosen to defer fixing it until
666 we have tools more suitable to the task. For the mean time, if you
667 rely on NTP's reconfiguration support, we recommend either restricting
668 its use to localhost or trusted networks, or tunneling through SSH or
669 a VPN. The 'nomodify' option to the 'restrict' directive may be used
670 to enforce this policy.
672 The second (CVE-2015-7974) pertains to the fact that when multiple
673 trusted keys are configured, no mechanism exists to associate
674 particular keys with particular peers or assign particular privileges.
675 This is not a bug, per se, but rather a lack of expressiveness in
676 NTP's configuration language. We intend to address in a future release
677 as part of a larger redesign aimed at giving clearer semantics to the
678 configuration language and making it easier to write safe
679 configurations.
681 Note that NTPsec is not impacted by CVE-2015-7976, CVE-2015-7977, or
682 CVE-2015-7978. CVE-2015-7977 and CVE-2015-7978 both pertain to mode 7
683 packets, support for which was completely removed before NTPsec's
684 first beta. CVE-2015-7976 is a feature request to restrict the format
685 of filenames used in saveconfig commands. Saveconfig support is
686 disabled at compile time in NTPsec and will not be re-enabled without
687 much more extensive hardening.
689 Other fixes:
691 Coverity found a slow memory leak in the asynchronous-DNS code.
693 == 2015-11-16: 0.9.0 ==
695 Initial NTPsec beta release.
697 * Canonical forge for git clones and issue tracking is
698   https://gitlab.com/NTPsec/ntpsec
700 * The documentation has been extensively updated and revised.  One
701   important change is that manual pages are now generated from the
702   same masters as this web documentation, so the two will no longer
703   drift out of synchronization.
705 * Internally, there is more consistent use of nanosecond precision.
706   A visible effect of this is that time stepping with sufficiently
707   high-precision time sources could be accurate down to nanoseconds
708   rather than microseconds; this might actually matter for GPSDOs
709   and high-quality radio clocks.
711 * The deprecated 'ntpdc' utility, long since replaced by 'ntpq', has
712   been removed.
714 * The 'ntpsnmpd' daemon, incomplete and not conformant with RFC 5907,
715   has been removed.
717 * A number of obsolete refclocks have been removed.
719 * The 'sntp' program has been renamed 'ntpdig' in order to make
720   NTP installables have a uniform name prefix and take up less
721   namespace. Also, ntp-keygen is now 'ntpkeygen', ntp-wait
722   is 'ntpwait', and update-leap is now 'ntpleapfetch'.
724 * A new utility, 'ntpfrob', collects several small diagnostic functions
725   for reading and tweaking the local clock hardware, including reading
726   the clock tick rate, precision, and jitter. Part of it formerly
727   traveled as 'tickadj'.
729 * The deprecated 'ntpdate' program has been replaced with a shell
730   wrapper around 'ntpdig'.
732 * Log timestamps look a little different; they are now in ISO 8601 format.
734 * Autokey is not supported in this release.
736 == Bugfixes either ported from NTP Classic or fixed by NTPsec changes ==
738 These reflect fixes to NTP Classic between the 2015-06-06 fork point and
739 the 0.9.0 beta release.
741 * [Bug 2625] Deprecate flag1 in local refclock.  Hal Murray, Harlan Stenn.
742 * [Bug 2778] Implement "apeers"  ntpq command to include associd.
743 * [Bug 2823] ntpsweep with recursive peers option doesn't work.  H.Stenn.
744 * [Bug 2836] DCF77 patches from Frank Kardel to make decoding more
745   robust, and require 2 consecutive timestamps to be consistent.
746 * [Bug 2845] Harden memory allocation in ntpd; implement and
747   use 'eallocarray(...)' where appropriate.
748 * [Bug 2846] Report 'unsynchronized' status during the leap second.
749 * [Bug 2849] Systems with more than one default route may never
750   synchronize.  Brian Utterback.  Note that this patch might need to
751   be reverted once Bug 2043 has been fixed.
752 * [Bug 2855] Implement conditional leap smear feature; includes
753   later fixes for parser support and reporting leap smear in the REFID.
754 * [Bug 2859] Improve raw DCF77 robustness decoding.  Frank Kardel.
755 * [Bug 2860] ntpq ifstats sanity check is too stringent.  Frank Kardel.
756 * [Bug 2866] segmentation fault at initgroups().  Harlan Stenn.
757 * [Bug 2867] ntpd with autokey active crashed by 'ntpq -crv'
758 * [Bug 2883] ntpd crashes on exit with empty driftfile.  Miroslav Lichvar.
759 * [Bug 2886] Misspelling: "outlyer" should be "outlier"
760 * [Bug 2890] Ignore ENOBUFS on routing netlink socket.  Konstantin Khlebnikov.
761 * [Bug 2901] Clients that receive a KoD should validate the origin
762   timestamp field (CVE-2015-7704, CVE-2015-7705)
763 * [Bug 2902] configuration directives "pidfile" and "driftfile"
764   should be local-only. (patch by Miroslav Lichvar) (CVE-2015-7703)
765 * [Bug 2909] Slow memory leak in CRYPTO_ASSOC (CVE-2015-7701)
766 * [Bug 2916] trusted key use-after-free (CVE-2015-7849)
767 * [Bug 2918] saveconfig Directory Traversal Vulnerability. (OpenVMS)
768   (CVE-2015-7851)
769 * [Bug 2919] ntpq atoascii() potential memory corruption (CVE-2015-7852)
770 * [Bug 2920] Invalid length data provided by a custom refclock driver
771   could cause a buffer overflow (CVE-2015-7853)
772 * [Bug 2921] Password Length Memory Corruption Vulnerability (CVE-2015-7854)
773 * [Bug 2922] decodenetnum() will ASSERT botch instead of returning
774   FAIL on some bogus values (CVE-2015-7855)
775 * [Bug 2941] NAK to the Future: Symmetric association authentication
776   bypass via crypto-NAK (CVE-2015-7871)
778 Additionally the NTPsec team is aware of the following vulnerabilities
779 impacting autokey: CVE-2015-7691, CVE-2015-7692, CVE-2015-7702. NTPsec
780 does not support building with autokey support and therefore is not
781 exposed; the vulnerable code will not be fixed, but will be removed in
782 a future release.
784 NTPsec is not impacted by CVE-2015-7848 (mode 7 loop counter underrun)
785 because ntpdc and support for mode 7 packets have been removed.
787 == HISTORIC-NEWS ==
789 For older NEWS items, see the file devel/HISTORIC-NEWS.
791 // end