[MIR] libnet-ip-perl (as libmail-dmarc-perl dependency)

Bug #2039456 reported by Miriam España Acebal
12
This bug affects 1 person
Affects Status Importance Assigned to Milestone
libnet-ip-perl (Ubuntu)
Fix Released
Undecided
Unassigned

Bug Description

[MIR] libnet-ip-perl (as libmail-dmarc-perl dependency)

Package: libnet-ip-perl

[Availability]
The package libnet-ip-perl is already in Ubuntu universe.
The package libnet-ip-perl build for the architectures it is designed to work on.
It currently builds and works for architectures: amd64, arm64, armhf, ppc64el, riscv64, s390x
Link to package https://launchpad.net/ubuntu/+source/libnet-ip-perl

[Rationale]
The package libnet-ip-perl is required in Ubuntu main for libmail-dmarc-perl.
The package libnet-ip-perl will not generally be useful for a large part of
our user base, but is important/helpful still because is required as runtime dependency by libmail-dmarc-perl
( libmail-dmarc-perl is in the MIR process here: https://bugs.launchpad.net/ubuntu/+source/libmail-dmarc-perl/+bug/2023971 )

The package libnet-ip-perl is required in Ubuntu main no later than through the same scheduled requested for the libmail-dmarc-perl promotion, since libmail-dmarc-perll depends on it.

[Security]
No CVEs/security issues in this software in the past:
  - (0) https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=libnet-ip-perl
  - (0) https://ubuntu.com/security/cves?q=&package=libnet-ip-perl
  - (0) https://security-tracker.debian.org/tracker/source-package/libnet-ip-perl
No `suid` or `sgid` binaries.
No executables in `/sbin` and `/usr/sbin`.
Package does not install services, timers or recurring jobs.
Package does not open privileged ports (ports < 1024).
Package does not expose any external endpoints.
Package does not contain extensions to security-sensitive software (filters, scanners, plugins, UI skins, ...).

[Quality assurance - function/usage]
The package works well right after install

[Quality assurance - maintenance]
The package is maintained well in Debian/Ubuntu and does
not have too many, long-term & critical, open bugs:
   - Ubuntu (0) https://bugs.launchpad.net/ubuntu/+source/libnet-ip-perl/+bug
   - Debian (0) https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=libnet-ip-perl

However, in upstream there are not activity from any maintainer since 8 years ago and I haven't found a repository:
- Upstream's bug tracker (27) https://rt.cpan.org/Public/Dist/Display.html?Name=Net-IP

The package has important/old open bugs on upstream, some of them are (for a complete list, see the upstream's bug tracker link above):
 - Bad documentation:
   - Documented arguments for ip_prefix_to_range are incorrect: https://rt.cpan.org/Public/Bug/Display.html?id=129391
   - ip_check_mask is documented but not implemented: https://rt.cpan.org/Public/Bug/Display.html?id=123834
 - Undef related:
    - intip returns 0 ofor 0.0.0.0: https://rt.cpan.org/Public/Bug/Display.html?id=117834
    - Net::IP->new("0.0.0.0")->size crashes: https://rt.cpan.org/Public/Bug/Display.html?id=124420
    - ip++ return NULL on some funcions: https://rt.cpan.org/Public/Bug/Display.html?id=101428
 - License ambiguity (not clear to me if this has been tackled): https://rt.cpan.org/Ticket/Display.html?id=28689
 - Standards related:
   - short() does not follow rfc5952 for ipv6 addresses starting with 0: https://rt.cpan.org/Public/Bug/Display.html?id=119998
   - IPv4 - 6 Missing Special Ranges: https://rt.cpan.org/Public/Bug/Display.html?id=106122

The package does not deal with exotic hardware we cannot support

[Quality assurance - testing]
The package runs a test suite on build time, if it fails
it makes the build fail: https://launchpadlibrarian.net/639235440/buildlog_ubuntu-lunar-amd64.libnet-ip-perl_1.26-3_BUILDING.txt.gz :

dh_auto_test
 make -j4 test TEST_VERBOSE=1
make[2]: Entering directory '/<<PKGBUILDDIR>>'
PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(1, 'blib/lib', 'blib/arch')" t/*.t

The package runs an autopkgtest (via autodep8 using 'Testsuite: autopkgtest-pkg-perl' in d/control file - https://git.launchpad.net/ubuntu/+source/libnet-ip-perl/tree/debian/control#n5 -),
that runs essentialy the above build-time test suite. It is currently passing on
all of the architectures, excep i386: https://autopkgtest.ubuntu.com/packages/l/libnet-ip-perl

The package does have failing autopkgtests tests right now, but since
they always failed they are handled as "ignored failure", this is
because the test depends on pkg-perl-autopkgtest package that is not
build for i386 since focal.

[Quality assurance - packaging]
debian/watch is present and works.

debian/control defines a correct Maintainer field : Debian Perl Group <email address hidden> ( https://git.launchpad.net/ubuntu/+source/libnet-ip-perl/tree/debian/control#n2)

This package does not yield massive lintian Warnings, Errors
  - recent build log of the package https://launchpadlibrarian.net/685399375/buildlog_ubuntu-mantic-amd64.libnet-ip-perl_3.009-2_BUILDING.txt.gz
  - full output from `lintian --pedantic` :
    #source
    ❯ lintian -EvIL +pedantic --show-overrides
      E: libnet-ip-perl changes: bad-distribution-in-changes-file unstable
      I: libnet-ip-perl source: out-of-date-standards-version 4.2.1 (released 2018-08-25) (current is 4.6.0.1)
      X: libnet-ip-perl source: debian-watch-does-not-check-gpg-signature [debian/watch]
      P: libnet-ip-perl source: silent-on-rules-requiring-root [debian/control]
      P: libnet-ip-perl source: update-debian-copyright 2012 vs 2022 [debian/copyright:19]
      X: libnet-ip-perl source: upstream-metadata-file-is-missing

    #binary
    ❯ lintian -EvIL +pedantic --show-overrides ../libnet-ip-perl_1.26-3.dsc
      I: libnet-ip-perl source: out-of-date-standards-version 4.2.1 (released 2018-08-25) (current is 4.6.0.1)
      X: libnet-ip-perl source: debian-watch-does-not-check-gpg-signature [debian/watch]
      P: libnet-ip-perl source: silent-on-rules-requiring-root [debian/control]
      P: libnet-ip-perl source: update-debian-copyright 2012 vs 20
      W: libnet-ip-perl: changelog-distribution-does-not-match-changes-file unstable != mantic [usr/share/doc/libnet-ip-perl/changelog.Debian.gz:1]
      W: libnet-ip-perl changes: distribution-and-changes-mismatch mantic unstable

This package does not rely on obsolete or about to be demoted packages.
This package has no python2 or GTK2 dependencies.

The package will not be installed by default.

Packaging and build is easy, link to debian/rules: https://git.launchpad.net/ubuntu/+source/libnet-ip-perl/tree/debian/rules.

[UI standards]
Application is not end-user facing (does not need translation).

[Dependencies]
No further dependencies that are not yet in main.

[Standards compliance]
This package correctly follows FHS and Debian Policy (4.2.1)

[Maintenance/Owner]
Owning Team will be Ubuntu Server Team.
Team is not yet, but will subscribe to the package before promotion.
This does not use static builds.
This does not use vendored code.
This package is not rust based.

The package successfully built during the most recent test rebuild: https://launchpad.net/ubuntu/+archive/test-rebuild-20230830-mantic/+build/26601185/+files/buildlog_ubuntu-mantic-amd64.libnet-ip-perl_1.26-3_BUILDING.txt.gz

[Background information]
The Package description explains the package well.
Upstream Name is Net-IP .
Link to upstream project https://metacpan.org/dist/Net-IP

This has been promoted and demoted from main more than once, with the most recent demotion in Lunar (2022). The original MIR appears to be LP: #243276. Other than that it's only had a single bug opened against it, which was an upgrade bug that expired over a decade ago.

Current version (1.26) is very old, being released by upstream in 2012.

Tha package has had a couple of bugs on Debian in the past: https://bugs.debian.org/cgi-bin/pkgreport.cgi?archive=both;src=libnet-ip-perl .

The project was available for adoption in Debian in 2011 (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=623681#22).

Other options for this package that could be checked to see if they can be used instead are:

libnet-ip-minimal-perl - module to check if an IP address is version 4 or 6
libnet-ip-xs-perl - Perl extension for manipulating IPv4/IPv6 addresses (XS)
libnet-ipaddress-perl - Functions used to manipulate IP addresses, masks and FQDN's
libnet-iptrie-perl - Perl module for building IPv4 and IPv6 address space hierarchies

but all of them are in universe, apart from the fact that functionality towards libemail-dmarc-perl has not been studied deeply.

This has been in the archive since at least 2008 (Warty, 1.20-1).

Lukas Märdian (slyon)
Changed in libnet-ip-perl (Ubuntu):
assignee: nobody → Ioanna Alifieraki (joalif)
Revision history for this message
Ioanna Alifieraki (joalif) wrote (last edit ):
Download full text (4.5 KiB)

Review for Source Package: libnet-ip-perl

[Summary]

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 not need a security review
List of specific binary packages to be promoted to main: libnet-ip-perl
Specific binary packages built, but NOT to be promoted to main: <None>

Notes:

This package has one big red flag. It is unmaintained upstream the last 10 years.
Debian has made very few releases since then regarding packaging.

Although there are some alternatives also in universe, I am not sure switching to
an alternative is a good idea.
I looked very quickly at libmail-dmarc-perl and how it uses libnet-ip-perl,
and it's using it to represent the IP object. Therefore, I don't think it is
trivial to move to another package. Again, I didn't study it in dept only superficially.

That said, I believe we could move forward with this MIR as long as the requesting team
commits to maintain the package.
The package does not seem to require a security review at the moment, however requesting team
should reach an agreement with security team on how this package will be dealt in terms of security.

Required TODOs:
1. Requesting team commits to own and maintain the package
2. Agree with security team on how this package will be maintained from a security point of view.
3. The package should get a team bug subscriber before being promoted

Recommended TODOs:
4. Address as many as possible of the upstream important bugs as identified in the bug description.

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

[Dependencies]
OK:
- no other Dependencies to MIR due to this
  - libnet-ip-perl 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:
- no embedded source present
- no static linking
- does not have unexpected Built-Using entries
- not a go package, no extra constraints to consider in that regard
- not a rust package, no extra constraints to consider in that regard
- Does not include vendored code

Problems: None

[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 parse data formats (files [images, video, audio,
  xml, json, asn.1], network packets, structures, ...) from
  an untrusted source.
- does not expose any external endpoint (port/socket/... or similar)
- 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 wit...

Read more...

Changed in libnet-ip-perl (Ubuntu):
status: New → Incomplete
assignee: Ioanna Alifieraki (joalif) → nobody
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Thanks, we as the requesting team, would be ok to maintain it. Not big evolution, but keep it working and ok just like the Debian maintainers do.

@Seth/@Mark - about that agreement, I think it does not need to be super special, but lets talk on next MIR meeting and then have you state here that you are ok as well.

Revision history for this message
Miriam España Acebal (mirespace) wrote :

Server Team's subscription to the bug requested on the MP attached to the bug.

Revision history for this message
Seth Arnold (seth-arnold) wrote (last edit ):

This is roughly 2000 lines of very mature perl code. A very quick skim of the code looks like it is well put together and there's some tests.

There's a bunch of trailing spaces around an ipv6 entry for 2001:0002::/48 -- this is a shockingly useful indicator for bugs, as it can indicate a change of maintainer or similar late addition to a codebase, so I'd appreciate if someone could double-check the details of this entry, and perhaps see if other classes need to be added for more recent reserved ranges or something similar. (Probably not. IPv6 is also pretty mature at this point.)

This seems a fine package for us to self-maintain. Security team ACK.

Thanks

[edit: 'a fine package for *canonical* to self-maintain']

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Thank you, marking it as ready. Will be promoted when all the related tree of packages is ready.

Changed in libnet-ip-perl (Ubuntu):
status: Incomplete → In Progress
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

The rest is ready as well and this shows up in component mismatches, updating state

Changed in libnet-ip-perl (Ubuntu):
status: In Progress → Fix Committed
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Full stack ready, all dependencies seen in component mismatches, FFE approved, MIR approved, only the top level change pulling this in is in -proposed and ready there other than this mismatch -> promoting.

Override component to main
libnet-ip-perl 1.26-3 in noble: universe/perl -> main
libnet-ip-perl 1.26-3 in noble amd64: universe/perl/optional/100% -> main
libnet-ip-perl 1.26-3 in noble arm64: universe/perl/optional/100% -> main
libnet-ip-perl 1.26-3 in noble armhf: universe/perl/optional/100% -> main
libnet-ip-perl 1.26-3 in noble i386: universe/perl/optional/100% -> main
libnet-ip-perl 1.26-3 in noble ppc64el: universe/perl/optional/100% -> main
libnet-ip-perl 1.26-3 in noble riscv64: universe/perl/optional/100% -> main
libnet-ip-perl 1.26-3 in noble s390x: universe/perl/optional/100% -> main
Override [y|N]? y
8 publications overridden.

Changed in libnet-ip-perl (Ubuntu):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.