[Bug 2072621] Re: [MIR] rpds-py
Lukas Märdian
2072621 at bugs.launchpad.net
Mon Aug 26 15:44:26 UTC 2024
Review for Source Package: rpds-py
[Summary]
I mostly agree with James' verdict from comment #4. But would like to ask for
some packaging improvements and for security review. See my full rational below.
MIR team ACK under the constraint to resolve the below listed
required TODOs and as much as possible having a look at the
recommended TODOs.
This does need a security review, so I'll assign ubuntu-security
List of specific binary packages to be promoted to main: python3-rpds-py
Specific binary packages built, but NOT to be promoted to main: n/a
Notes:
#0 - rpds-py will replace pyrsistent, which is going to be demoted from "main"
#1 - I'm requesting security review, due to parsing untrusted (user) source code
in vendor/proc-macro2 and for tracking the vendored crates
Required TODOs:
#2 - The package should make use of "XS-Vendored-Sources-Rust", either via
dh-cargo or manually, see:
https://wiki.ubuntu.com/RustCodeInMain#Rust_vendored_sources_tracking
=> compare to "mdevctl" or "gnome-snapshot"
Recommended TODOs:
#3 - The package should get a team bug subscriber before being promoted
#4 - Consider if dropping non-linux stuff from vendor/libc is feasible (probably not..)
#5 - Diverging from Debian, using a -0ubuntuX version is not ideal, but there's
not a lot we can do about it other than slowly tring to get the rust-*-dev
packages into main, one by one.
[Rationale, Duplication and Ownership]
- There is no other package in main providing the same functionality. (it will replace pyrsistent)
- A team is committed to own long term maintenance of this package. (~ubuntu-openstack)
- The rationale given in the report seems valid and useful for Ubuntu
[Dependencies]
OK:
- no other Dependencies to MIR due to this
- SRCPKG checked with `check-mir`
- all dependencies can be found in `seeded-in-ubuntu` (already in main)
- none of the (potentially auto-generated) dependencies (Depends
and Recommends) that are present after build are not in main
- 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.
- Includes vendored code, the package has documented how to refresh this
code at debian/README.source
Problems:
- Rust static linking
- embedded/vendored source present
- rust package using dh_cargo (dh ... --buildsystem cargo) – It uses pybuild
=> You should make use of "XS-Vendored-Sources-Rust", either via dh-cargo
or manually, see:
https://wiki.ubuntu.com/RustCodeInMain#Rust_vendored_sources_tracking
[Security]
OK:
- history of CVEs does not look concerning
- does not run a daemon as root
- does not use webkit1,2
- does not use lib*v8 directly
- 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, ...)
- 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, ...)
Problems:
- vendored proc-macro2 does parse data formats (code) from an untrusted source.
- some socket handling in vendor/libc/src/windows (and other OS specific implementations)
[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
- no new python2 dependency
- Python package, but using dh_python
Problems: None
[Packaging red flags]
OK:
- 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
- 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
Problems:
- Consider upstreaming some of the delta (not possible for crates vendoring),
but maybe the enablement of autopkgtests
- Debian/Ubuntu update history is sporadic
[Upstream red flags]
OK:
- no Errors/warnings during the build
- no incautious use of malloc/sprintf (as far as we can check it)
- no use of sudo, gksu, pkexec, or LD_LIBRARY_PATH (usage is OK inside
tests)
- no use of user nobody
- no use of setuid / setgid (outside of vendor/libc)
- no important open bugs (crashers, etc) in Debian or Ubuntu
- 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:
- Debian FTBFS (does not affect the Ubuntu build), https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1078392
** Bug watch added: Debian Bug tracker #1078392
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1078392
** Changed in: rpds-py (Ubuntu)
Assignee: Lukas Märdian (slyon) => Ubuntu Security Team (ubuntu-security)
--
You received this bug notification because you are a member of Ubuntu
OpenStack, which is subscribed to rpds-py in Ubuntu.
https://bugs.launchpad.net/bugs/2072621
Title:
[MIR] rpds-py
Status in rpds-py package in Ubuntu:
New
Bug description:
[Availability]
The package rpds-py is already in Ubuntu universe.
Link to package https://launchpad.net/ubuntu/+source/rpds-py
[Rationale]
This is a new dependency used by python-jsonschema, and python-jsonschema is already part of main ( https://launchpad.net/ubuntu/+source/python-jsonschema )
[Security]
- No CVEs/security issues in this software in the past.
+ https://ubuntu.com/security/cves?package=rpds-py
+ https://security-tracker.debian.org/tracker/source-package/rpds-py
- No executables in /sbin and usr/bin.
- Package does not install services, timers, or recurring jobs.
- Package does not open privileged ports or expose any external endpoints.
- Package does not contain extensions to security-sensitive software.
- Package does not contain any cryptography functionality.
[Quality assurance - function/usage]
The package works well right after install
[Quality assurance - maintenance]
- The package is maintained well in Debian/Ubuntu/Upstream and does
not have too many, long-term & critical, open bugs
- Ubuntu https://bugs.launchpad.net/ubuntu/+source/rpds-py/+bug
- Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=rpds-py
- https://github.com/crate-py/rpds/issues
[Quality assurance - testing]
- The package contains unit tests. It it confirmed to have run and pass the build tests and built successfully on amd64: https://launchpadlibrarian.net/738777197/buildlog_ubuntu-oracular-amd64.python-jsonschema-specifications_2023.12.1-1ubuntu1_BUILDING.txt.gz
- The debian/control file specifies the package can build for all architectures.
- The autopkgtest is disabled, because it doesn't define any - https://git.launchpad.net/ubuntu/+source/rpds-py/tree/debian/control?h=ubuntu/oracular-devel#n21
[Quality assurance - packaging]
- A debian/watch is not present.
- debian/control defines a correct Maintainer field. The maintainer is set to "Debian Python Modules Team <python-modules-team at alioth-lists.debian.net>", because there is no Ubuntu delta applied.
- This package does not yield massive lintian Warnings, Errors
- Recent build log: https://launchpadlibrarian.net/738777197/buildlog_ubuntu-oracular-amd64.python-jsonschema-specifications_2023.12.1-1ubuntu1_BUILDING.txt.gz
- Lintian overrides are not present
- This package does not rely on obsolete or about to be demoted packages.
- The package does not prompt the user during installation.
- Packaging and build is easy, link to debian/rules: https://git.launchpad.net/ubuntu/+source/rpds-py/tree/debian/rules?h=ubuntu/oracular
[UI standards]
- Application is not end-user facing (does not need translation)
[Dependencies]
- No further depends or recommends dependencies that are not yet in main
[Standards compliance]
- This package correctly follows FHS and Debian Policy
[Maintenance/Owner]
- The owning team will be Ubuntu OpenStack and I have their acknowledgement for that commitment
- The future owning team is not yet subscribed, but will subscribe to the package before promotion
- The team Ubuntu OpenStack is aware of the implications by a static build and commits to test no-change-rebuilds and to fix any issues found for the lifetime of the release (including ESM)
- This package does not use vendored code
- The package has been built within the last 3 months in PPA - https://launchpad.net/~freyes/+archive/ubuntu/lp2072621
- Build link on launchpad: https://launchpad.net/ubuntu/+source/rpds-py/0.12.0-3build1
[Background information]
- rpds-py is a Python bindings to the Rust rpds crate for persistent data structures. This library is a new dependency of python-jsonschema.
- Upstream Name is rdps-py
- Link to upstream project https://github.com/crate-py/rpds
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/rpds-py/+bug/2072621/+subscriptions
More information about the Ubuntu-openstack-bugs
mailing list