[Summary]
The libcupsfilters package currently uses qpdf, a PDF transformation and 
introspection library written in C++. The upstream project plans to replace 
qpdf with pdfio, a PDF reading  and writing library written in C. The primary 
goal is ABI compatibility and easier symbol tracking. In addition, PDFio is 
much more lightweight than QPDF, so libcupsfilters can more easily be used on 
low-resource devices, for example adapter boxes which make legacy printers 
driverless. The upstream pdfio project is being actively maintained. 

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: libpdfio1
Specific binary packages built, but NOT to be promoted to main: None

Notes:
#0 Needs a security review because of issues noted in the [Security] section - 
CVE history and cryptography implementation.

#1 The upstream pull-request that migrates libcupsfilter from using qpdf
to pdfio, is not yet merged ->
https://github.com/OpenPrinting/libcupsfilters/pull/71/

#2 The Ubuntu Printing Team is already subscribed to the package.

#3 After libcupsfilters moves away from qpdf, the latter will cease to
have any reverse dependencies in main. We should have a plan to demote
qpdf to universe.

Required TODOs:
#4 Resolving the differences between dpkg-gensymbols output and contents of  
debian/libpdfio1.symbols. See the warning noted in [Packaging red flags]. 
Though the difference is related to private symbols, it would be good to have 
this warning fixed because symbol tracking is one of the primary rationales for 
this MIR. 


Recommended TODOs: 
#5 Fix build warnings noted in [Upstream red flags].

[Rationale, Duplication and Ownership]
- There is no other package in main providing the same functionality.
 => As the bug report mentions, package qpdf in main does provide this 
functionality. But the      
libcupsfilters upstream project intends to replace qpdf (a C++ library) by 
pdfio written in C. There is no other package in main that offers a PDF reading 
& writing library written in C.

- A team is committed to own long term maintenance of this package.
=> Ubuntu Printing Team

- The rationale given in the report seems valid and useful for Ubuntu.
=> Minor problem: the upstream pull-request that migrates libcupsfilters from 
using qpdf to using pdfio hasn’t yet been merged - 
https://github.com/OpenPrinting/libcupsfilters/pull/71/



[Dependencies]

OK:
 - No other dependencies to MIR due to this 
SRCPKG checked with `check-mir` => reports libpdfio1 which is a binary package 
of pdfio itself (libpdfio1-dev depends on libpdfio1)
 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 linked
No Built-Using
not a go package, no extra constraints to consider in that regard
not a rust package, no extra constraints to consider in that regard

Problems: None


[Security]

OK:
 - does not run a daemon as root
 - does not use webkit1,2
 - does not use lib*v8 directly
 - 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 with security attestation (secure boot, tpm, signatures)

Problems:
 - pdfio is bound to parse content from untrusted sources
 - CVEs revealing denial-of-service vulnerabilities that have been fixed
   CVE-2023-24808 (CVSS 5.2) - https://www.cve.org/CVERecord?id=CVE-2023-24808
   CVE-2024-42358 (CVSS 6.2) - https://www.cve.org/CVERecord?id=CVE-2024-42358
   CVE-2023-28428 (CVSS 6.2) - https://www.cve.org/CVERecord?id=CVE-2023-28428  
 
 - pdfio implements its own cryptography. It supports AES and RC4 
encrypt/decrypt and MD5 and SHA256 hashes. See files:
    1. pdfio-aes.c
    2. pdfio-rc4.c
    3. pdfio-md5.c
    4. pdfio-sha256.c


[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
   => only tests that use internal APIs are disabled, which is reasonable.
 - this does not need special HW for build or test
 - not a Python package
 - not a Golang package
 
Problems: None


[Packaging red flags]

OK:
 - this package does not yet have a Debian counterpart
 => request for packaging - 
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1093735f4

 - symbols tracking is in place
 - debian/watch is present and looks ok (if needed, e.g. non-native) 
 - Upstream update history is good
 - Ubuntu update history is sporadic => the package less than a month old
 - 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
 => includes a lintian override, but that seems to be avoiding a false flag
 - debian/rules is rather clean
 - It is not on the lto-disabled list 

Problems:
 - dpkg-gensymbols does not match debian/libpdfio1.symbols in build
dpkg-gensymbols: warning: some new symbols appeared in the symbols file: see 
diff output below
dpkg-gensymbols: warning: debian/libpdfio1/DEBIAN/symbols doesn't match 
completely debian/libpdfio1.symbols
--- debian/libpdfio1.symbols (libpdfio1_1.5.1+dfsg-0ubuntu1_amd64)
+++ dpkg-gensymbols_N39_3       2025-03-28 23:06:39.760104851 +0000
@@ -1,4 +1,6 @@
 libpdfio.so.1 libpdfio1 #MINVER#
+ _pdfioTokenInit@Base 1.5.1+dfsg-0ubuntu1
+ _pdfioTokenRead@Base 1.5.1+dfsg-0ubuntu1
  pdfioArrayAppendArray@Base 1.5.0
  pdfioArrayAppendBinary@Base 1.5.0
  pdfioArrayAppendBoolean@Base 1.5.0


[Upstream red flags]

OK:
 - no incautious use of malloc/sprintf (as far as we can check it)
 - no use of sudo, gksu, pkexec, or LD_LIBRARY_PATH
 - no use of user nobody
 - no use of setuid/setgid
 - no important open bugs (crashers, etc) in 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:
- 2 warnings possibly resulting from CFLAGS passed by dpkg-buildflags (ignoring 
2 more warnings in tests)

=> warning: "_FORTIFY_SOURCE" redefined

=> pdfio-value.c:607:73: warning: ‘Z’ directive output may be truncated writing 
1 byte into a region of size between 0 and 16 [-Wformat-truncation=]
  607 |           snprintf(datestr, sizeof(datestr), 
"D:%04d%02d%02d%02d%02d%02dZ", date.tm_year + 1900, date.tm_mon + 1, 
date.tm_mday, date.tm_hour, date.tm_min, date.tm_sec);


** CVE added: https://cve.mitre.org/cgi-bin/cvename.cgi?name=2023-24808

** CVE added: https://cve.mitre.org/cgi-bin/cvename.cgi?name=2023-28428

** CVE added: https://cve.mitre.org/cgi-bin/cvename.cgi?name=2024-42358

** Changed in: pdfio (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/2103648

Title:
  [MIR] pdfio

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/pdfio/+bug/2103648/+subscriptions


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to