Your message dated Thu, 1 Feb 2024 16:46:44 +0000
with message-id <[email protected]>
and subject line Re: Bug#948238: man-db: man produces apparmor kernel warnings
has caused the Debian Bug report #948238,
regarding man-db: man produces apparmor kernel warnings
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
948238: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=948238
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: man-db
Version: 2.8.5-2
Severity: minor
Tags: patch

Dear Maintainer,

When doing 'man libreoffice' the following kernel messages are generated:

  [Sun Jan  5 10:28:57 2020] audit: type=1400 audit(1578238128.275:29): 
apparmor="DENIED" operation="file_inherit" profile="man_groff" 
name="/var/cache/man/cat1/cattld6Dp" pid=6359 comm="preconv" 
requested_mask="wr" denied_mask="wr" fsuid=0 ouid=0
  [Sun Jan  5 10:28:57 2020] audit: type=1400 audit(1578238128.275:30): 
apparmor="DENIED" operation="file_inherit" profile="man_filter" 
name="/var/cache/man/cat1/cattld6Dp" pid=6364 comm="gzip" requested_mask="w" 
denied_mask="w" fsuid=0 ouid=0
  [Sun Jan  5 10:28:57 2020] audit: type=1400 audit(1578238128.279:31): 
apparmor="DENIED" operation="file_inherit" profile="man_groff" 
name="/var/cache/man/cat1/cattld6Dp" pid=6360 comm="tbl" requested_mask="wr" 
denied_mask="wr" fsuid=0 ouid=0
  [Sun Jan  5 10:28:57 2020] audit: type=1400 audit(1578238128.283:32): 
apparmor="DENIED" operation="file_inherit" profile="man_groff" 
name="/var/cache/man/cat1/cattld6Dp" pid=6370 comm="troff" requested_mask="wr" 
denied_mask="wr" fsuid=0 ouid=0

It appears apparmor doesn't allow writes by these external tools called by 
'man'.  The following patch fixes this.

--- ./usr.bin.man.orig  2020-01-05 12:04:13.059106386 -0500
+++ ./usr.bin.man       2020-01-05 12:06:20.037415963 -0500
@@ -59,10 +59,10 @@
   /usr/bin/eqn rm,
   /usr/bin/grap rm,
   /usr/bin/pic rm,
-  /usr/bin/preconv rm,
+  /usr/bin/preconv rmw,
   /usr/bin/refer rm,
-  /usr/bin/tbl rm,
-  /usr/bin/troff rm,
+  /usr/bin/tbl rmw,
+  /usr/bin/troff rmw,
   /usr/bin/vgrind rm,
 
   /etc/groff/** r,
@@ -82,8 +82,8 @@
   # open FDs before execve.
   #include <abstractions/consoles>
 
-  /{,usr/}bin/bzip2 rm,
-  /{,usr/}bin/gzip rm,
+  /{,usr/}bin/bzip2 rmw,
+  /{,usr/}bin/gzip rmw,
   /usr/bin/col rm,
   /usr/bin/compress rm,
   /usr/bin/iconv rm,

-- System Information:
Debian Release: 10.2
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 4.19.0-6-amd64 (SMP w/16 CPU cores)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE, 
TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages man-db depends on:
ii  bsdmainutils           11.1.2+b1
ii  debconf [debconf-2.0]  1.5.71
ii  dpkg                   1.19.7
ii  groff-base             1.22.4-3
ii  libc6                  2.28-10
ii  libgdbm6               1.18.1-4
ii  libpipeline1           1.5.1-2
ii  libseccomp2            2.3.3-4
ii  zlib1g                 1:1.2.11.dfsg-1

man-db recommends no packages.

Versions of packages man-db suggests:
ii  apparmor                   2.13.2-10
ii  firefox-esr [www-browser]  68.2.0esr-1~deb10u1
ii  groff                      1.22.4-3
ii  less                       487-0.1+b1
ii  lynx [www-browser]         2.8.9rel.1-3
ii  w3m [www-browser]          0.5.3-37

-- Configuration Files:
/etc/apparmor.d/usr.bin.man changed:
/usr/bin/man {
  #include <abstractions/base>
  # Use a special profile when man calls anything groff-related.  We only
  # include the programs that actually parse input data in a non-trivial
  # way, not wrappers such as groff and nroff, since the latter would need a
  # broader profile.
  /usr/bin/eqn rmCx -> &man_groff,
  /usr/bin/grap rmCx -> &man_groff,
  /usr/bin/pic rmCx -> &man_groff,
  /usr/bin/preconv rmCx -> &man_groff,
  /usr/bin/refer rmCx -> &man_groff,
  /usr/bin/tbl rmCx -> &man_groff,
  /usr/bin/troff rmCx -> &man_groff,
  /usr/bin/vgrind rmCx -> &man_groff,
  # Similarly, use a special profile when man calls decompressors and other
  # simple filters.
  /{,usr/}bin/bzip2 rmCx -> &man_filter,
  /{,usr/}bin/gzip rmCx -> &man_filter,
  /usr/bin/col rmCx -> &man_filter,
  /usr/bin/compress rmCx -> &man_filter,
  /usr/bin/iconv rmCx -> &man_filter,
  /usr/bin/lzip.lzip rmCx -> &man_filter,
  /usr/bin/tr rmCx -> &man_filter,
  /usr/bin/xz rmCx -> &man_filter,
  # Allow basically anything in terms of file system access, subject to DAC.
  # The purpose of this profile isn't to confine man itself (that might be
  # nice in the future, but is tricky since it's quite configurable), but to
  # confine the processes it calls that parse untrusted data.
  /** mrixwlk,
  unix,
  capability setuid,
  capability setgid,
  signal peer=@{profile_name},
  signal peer=/usr/bin/man//&man_groff,
  signal peer=/usr/bin/man//&man_filter,
  # Site-specific additions and overrides.  See local/README for details.
  #include <local/usr.bin.man>
}
profile man_groff {
  #include <abstractions/base>
  # Recent kernels revalidate open FDs, and there are often some still
  # open on TTYs.  This is temporary until man learns to close irrelevant
  # open FDs before execve.
  #include <abstractions/consoles>
  # man always runs its groff pipeline with the input file open on stdin,
  # so we can skip <abstractions/user-manpages>.
  /usr/bin/eqn rm,
  /usr/bin/grap rm,
  /usr/bin/pic rm,
  /usr/bin/preconv rmw,
  /usr/bin/refer rm,
  /usr/bin/tbl rmw,
  /usr/bin/troff rmw,
  /usr/bin/vgrind rm,
  /etc/groff/** r,
  /usr/lib/groff/site-tmac/** r,
  /usr/share/groff/** r,
  signal peer=/usr/bin/man,
  # @{profile_name} doesn't seem to work here.
  signal peer=/usr/bin/man//&man_groff,
  #include <local/usr.bin.man_groff>
}
profile man_filter {
  #include <abstractions/base>
  # Recent kernels revalidate open FDs, and there are often some still
  # open on TTYs.  This is temporary until man learns to close irrelevant
  # open FDs before execve.
  #include <abstractions/consoles>
  /{,usr/}bin/bzip2 rmw,
  /{,usr/}bin/gzip rmw,
  /usr/bin/col rm,
  /usr/bin/compress rm,
  /usr/bin/iconv rm,
  /usr/bin/lzip.lzip rm,
  /usr/bin/tr rm,
  /usr/bin/xz rm,
  # Manual pages can be more or less anywhere, especially with "man -l", and
  # there's no harm in allowing wide read access here since the worst it can
  # do is feed data to the invoking man process.
  /** r,
  signal peer=/usr/bin/man,
  # @{profile_name} doesn't seem to work here.
  signal peer=/usr/bin/man//&man_filter,
  #include <local/usr.bin.man_filter>
}

/etc/manpath.config changed:
MANDATORY_MANPATH                       /usr/man
MANDATORY_MANPATH                       /usr/share/man
MANDATORY_MANPATH                       /usr/local/share/man
MANPATH_MAP     /bin                    /usr/share/man
MANPATH_MAP     /usr/bin                /usr/share/man
MANPATH_MAP     /sbin                   /usr/share/man
MANPATH_MAP     /usr/sbin               /usr/share/man
MANPATH_MAP     /usr/local/bin          /usr/local/man
MANPATH_MAP     /usr/local/bin          /usr/local/share/man
MANPATH_MAP     /usr/local/sbin         /usr/local/man
MANPATH_MAP     /usr/local/sbin         /usr/local/share/man
MANPATH_MAP     /usr/X11R6/bin          /usr/X11R6/man
MANPATH_MAP     /usr/bin/X11            /usr/X11R6/man
MANPATH_MAP     /usr/games              /usr/share/man
MANPATH_MAP     /opt/bin                /opt/man
MANPATH_MAP     /opt/sbin               /opt/man
MANPATH_MAP     /usr/local/pgsql/bin    /u/postgres/man
MANDB_MAP       /usr/man                /var/cache/man/fsstnd
MANDB_MAP       /usr/share/man          /var/cache/man
MANDB_MAP       /usr/local/man          /var/cache/man/oldlocal
MANDB_MAP       /usr/local/share/man    /var/cache/man/local
MANDB_MAP       /usr/X11R6/man          /var/cache/man/X11R6
MANDB_MAP       /opt/man                /var/cache/man/opt
SECTION         1 n l 8 3 2 3posix 3pm 3perl 3am 5 4 9 6 7


-- debconf information:
  man-db/install-setuid: false
  man-db/auto-update: true
--- ./usr.bin.man.orig  2020-01-05 12:04:13.059106386 -0500
+++ ./usr.bin.man       2020-01-05 12:06:20.037415963 -0500
@@ -59,10 +59,10 @@
   /usr/bin/eqn rm,
   /usr/bin/grap rm,
   /usr/bin/pic rm,
-  /usr/bin/preconv rm,
+  /usr/bin/preconv rmw,
   /usr/bin/refer rm,
-  /usr/bin/tbl rm,
-  /usr/bin/troff rm,
+  /usr/bin/tbl rmw,
+  /usr/bin/troff rmw,
   /usr/bin/vgrind rm,
 
   /etc/groff/** r,
@@ -82,8 +82,8 @@
   # open FDs before execve.
   #include <abstractions/consoles>
 
-  /{,usr/}bin/bzip2 rm,
-  /{,usr/}bin/gzip rm,
+  /{,usr/}bin/bzip2 rmw,
+  /{,usr/}bin/gzip rmw,
   /usr/bin/col rm,
   /usr/bin/compress rm,
   /usr/bin/iconv rm,

--- End Message ---
--- Begin Message ---
Source: man-db
Source-Version: 2.8.5-2+deb10u1

Sorry for the long delay!  This should now be fixed in buster LTS, as
well as in later releases as previously mentioned:

  https://lists.debian.org/debian-lts-announce/2024/02/msg00001.html

man-db (2.8.5-2+deb10u1) buster-security; urgency=medium

  * AppArmor: Allow man_filter to write to cat pages (closes: #926450,
    #948238).
  * sandbox: Allow getrandom (closes: #1061870).

 -- Colin Watson <[email protected]>  Thu, 01 Feb 2024 13:35:20 +0000

(If not, then later releases are probably the right place to figure out
any further fixes needed.)

Thanks,

-- 
Colin Watson (he/him)                              [[email protected]]

--- End Message ---

Reply via email to