TODO: Review for Source Package: src:rust-ntpd

[Summary]
`rust-ntpd` is a memory-safe Rust implementation of the Network Time Protocol. 
The
package offers both client and server modes but enables only client-mode by 
default.
Ubuntu will adopt ntpd-rs as the default time synchronization client and 
server, eventually
replacing chrony, linuxptp and gpsd.  See 
https://discourse.ubuntu.com/t/ntpd-rs-its-about-time/79154

MIR team ACK.

This does need a security review, so I'll assign ubuntu-security

List of specific binary packages to be promoted to main: bin:ntpd-rs, 
bin:ntpd-rs-metrics
Specific binary packages built, but NOT to be promoted to main: none

Notes:
None.

Required TODOs:
None.

Recommended TODOs:
#0 The package should get a team bug subscriber before being promoted
#1 The build-log shows quite many build warnings. Consider investigating/fixing 
them.

[Rationale, Duplication and Ownership]
OK:
- There is no other package in main providing the same functionality.
- A team is committed to own long term maintenance of this package.
- The rationale given in the report seems valid and useful for Ubuntu

[Dependencies]
OK:
- no other runtime Dependencies to MIR due to this
- no other build-time Dependencies with active code in the final binaries to 
MIR due to this
- no -dev/-debug/-doc packages that need exclusion
- No dependencies in main that are only superficially tested requiring more 
tests now.

Problems: None

[Embedded sources and static linking]
OK:
- does not have unexpected Built-Using entries
- not a go package, no extra constraints to consider in that regard
- Rust package that has all dependencies vendored. It does neither
  have *Built-Using (after build). Nor does the build log indicate
  built-in sources that are missed to be reported as Built-Using.
  => Only the rust toolchain is listed in Static-Built-Using:
     cargo:Built-Using=
     cargo:Static-Built-Using=rust-defaults (= 1.97.1ubuntu1)
     cargo:X-Cargo-Built-Using?=rust-defaults (= 1.97.1ubuntu1)
- rust package using dh_cargo (dh ... --buildsystem cargo)
- Includes vendored code, the package has documented how to refresh this code 
at debian/README.source

Problems: None

[Security]
OK:
- does not run a daemon as root
  => debian/ntpd-rs.service runs as User=ntpd-rs/Group=ntpd-rs 
- does not use webkit1,2
- does not use lib*v8 directly
- does not parse data formats (files [images, video, audio,
  xml, json, asn.1], network packets, structures, ...) from
  an untrusted source.
  => parses NTP v4 and v5 packets from the network
- does not expose any external endpoint (port/socket/... or similar)
  => works in client-only mode by default, can serve NTP is explicitly 
configured in ntp.toml
- does not process arbitrary web content
- does not use centralized online accounts
- does not integrate arbitrary javascript into the desktop
- does not deal with system authentication (eg, pam), etc)
- does not deal with security attestation (secure boot, tpm, signatures)
- does not deal with cryptography (en-/decryption, certificates, signing, ...)
  => The Network Time Security (NTS) extension uses openssl (see 
debian/patches/openssl-crypto.patch)
- this makes appropriate (for its exposure) use of established risk
  mitigation features (dropping permissions, using temporary environments,
  restricted users/groups, seccomp, systemd isolation features,
  apparmor, ...)
  => AppArmor profile present in debian/usr.bin.ntp-daemon

Problems:
- history of CVEs does look concerning
  => The CVE history is significant 
(https://github.com/pendulum-project/ntpd-rs/security)


[Common blockers]
OK:
- does not FTBFS currently
- does have a test suite that runs at build time
  - test suite fails will fail the build upon error.
- does have a non-trivial test suite that runs as autopkgtest
- This does not need special HW for build or test
- if a non-trivial test on this level does not make sense (the lib alone
  is only doing rather simple things), is the overall solution (app+libs)
  extensively covered i.e. via end to end autopkgtest ?
- no new python2 dependency
- not a Python package
- not a Go package

Problems: None

[Packaging red flags]
OK:
- Ubuntu does carry a delta, but it is reasonable and maintenance under control
- symbols tracking not applicable for this kind of code.
- debian/watch is present and looks ok (if needed, e.g. non-native)
- Upstream update history is good
- Debian/Ubuntu update history is good
- the current release is packaged
- promoting this does not seem to cause issues for MOTUs that so far maintained 
the package
- no massive Lintian warnings
- debian/rules is rather clean
- It is not on the lto-disabled list
- debian/control defines a correct Maintainer field

Problems: None

[Upstream red flags]
OK:
- no Errors/warnings during the build
=> A lot of warnings seen in the build logs
- no incautious use of malloc/sprintf (the language has no direct MM)
- no use of sudo, gksu, pkexec, or LD_LIBRARY_PATH (usage is OK inside tests)
- no use of user 'nobody' outside of tests
- no use of setuid / setgid
- no important open bugs (crashers, etc) in Debian or Ubuntu
  => server-mode bug: 
https://bugs.launchpad.net/ubuntu/+source/rust-ntpd/+bug/2162124
- no dependency on webkit, qtwebkit or libseed
- not part of the UI for extra checks
- no translation present, but none needed for this case (user visible)?

Problems:
- Errors/warnings during the build
=> A lot of warnings seen in the build logs

** Changed in: rust-ntpd (Ubuntu)
     Assignee: Pushkar Kulkarni (pushkarnk) => Ubuntu Security Team 
(ubuntu-security)

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2166406

Title:
  [MIR] rust-ntpd

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/rust-ntpd/+bug/2166406/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to