It seems obvious to me that ntpd should log an error and terminateI agree, that seems like The Right Thing to do.
when it is unable to adjust the system clock. To my surprise, https://bugs.ntp.org/1433 pointed out that when a Linux ntpd binary
built to use capabilities is run on a kernel build without capability capability, ntpd blithely runs without complaint while effectively
doing nothing. For this specific problem, you could blame the user
and say they need to use ntpd built --without-linux-caps, but there's
a more general issue of ntpd not reporting let alone aborting on a
failure to control the clock.
To explain the context a bit, I came across bug 1433 somehow and saw
that in 2019 the decade-old bug was fixed by having ntpd test for
whether capabilities work before dropping root (they're needed to
crank the clock when not running as root on Linux). When capabilities
do not work, ntpd was then ignoring the request to drop root and run
as a user, typically "ntp". This meant it was silently opening up an opportunity for more useful privilege elevation or remote code
execution despite the user's explicit configuration, and that's
unacceptable to me. My intention is to change the behavior to error
out when controlling the clock fails (via step or slew). If you think that's a bad idea, please speak up and explain your reasoning.
Cheers,
Dave Hart
It seems obvious to me that ntpd should log an error and terminate when it
is unable to adjust the system clock. To my surprise, https://bugs.ntp.org/1433 pointed out that when a Linux ntpd binary built
to use capabilities is run on a kernel build without capability capability, ntpd blithely runs without complaint while effectively doing nothing. For this specific problem, you could blame the user and say they need to use
ntpd built --without-linux-caps, but there's a more general issue of ntpd
not reporting let alone aborting on a failure to control the clock.
On Thu, Nov 14, 2024 at 2:31 AM Majdi S. Abbas <msa@latt.net <mailto:msa@latt.net>> wrote:
On Tue, Nov 12, 2024 at 07:10:12PM +0000, Dave Hart wrote:
> It seems obvious to me that ntpd should log an error and
terminate when it
> is unable to adjust the system clock. To my surprise,
> https://bugs.ntp.org/1433 <https://bugs.ntp.org/1433> pointed out
that when a Linux ntpd binary built
> to use capabilities is run on a kernel build without capability
capability,
> ntpd blithely runs without complaint while effectively doing
nothing. For
> this specific problem, you could blame the user and say they need
to use
> ntpd built --without-linux-caps, but there's a more general issue
of ntpd
> not reporting let alone aborting on a failure to control the clock.
Note that widely used operating systems, like Apple's OS X, run
ntpd as a monitoring service that explicitly does not/cannot discipline
the clock.
I've also heard of people explicitly running ntpd to
monitor and
log statistics, without wanting it to discipline the clock.
Perhaps the cleanest way to do this is add a flag to run the
daemon without attempting to discipline the clock?
I believe that flag is already there, "disable ntp". I haven't used it though.
Cheers,
Dave Hart
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 546 |
Nodes: | 16 (2 / 14) |
Uptime: | 02:59:48 |
Calls: | 10,387 |
Calls today: | 2 |
Files: | 14,061 |
Messages: | 6,416,770 |