Hi Daniel,
On Fri, Sep 29, 2017 at 04:09:02PM -0400, Daniel Richard G. wrote:
> On Fri, 2017 Sep 29 00:18+0200, Guido Günther wrote:
> >
> > Attaching to this the report is fine. I can handle it from there.
> 
> Okay, greatly appreciated. My current profile is attached. Please Cc: me
> on the new bug report.
> 
> As it happens, this file is identical to the current version of the
> profile in the apparmor-profiles Git repository, with the exception of
> the Debian alias lines.
> 
> It seems that the AppArmor folks accepted my changes in the merge
> request, not by approving the merge, but by applying the changes to a
> new version-specific copy in the repo. They added a few more things of
> their own, which I have in turn merged into my/this copy.
> 
> I never heard anything from them about this, however; I learned about
> this only now that I diffed my profile with their latest. Their process
> could certainly stand to be more transparent.

> # Author: Jamie Strandboge <ja...@canonical.com>
> #include <tunables/global>
> 
> # Debian compatibility aliases
> # https://bugs.debian.org/742829
> #
> alias /etc/chromium-browser/ -> /etc/chromium/,
> alias /usr/bin/chromium-browser -> /usr/bin/chromium,
> alias /usr/lib/chromium-browser/chromium-browser-sandbox -> 
> /usr/lib/chromium/chrome-sandbox,
> alias /usr/lib/chromium-browser/chromium-browser -> 
> /usr/lib/chromium/chromium,
> alias /usr/lib/chromium-browser/ -> /usr/lib/chromium/,
> 
> # We need 'flags=(attach_disconnected)' in newer chromium versions
> /usr/lib/chromium-browser/chromium-browser flags=(attach_disconnected) {
>   #include <abstractions/audio>
>   #include <abstractions/cups-client>
>   #include <abstractions/dbus-session>
>   #include <abstractions/dbus-strict>
>   #include <abstractions/gnome>
>   #include <abstractions/ibus>
>   #include <abstractions/nameservice>
>   #include <abstractions/user-tmp>
> 
>   # This include specifies which ubuntu-browsers.d abstractions to use. Eg, if
>   # you want access to productivity applications, adjust the following file
>   # accordingly.
>   #include <abstractions/ubuntu-browsers.d/chromium-browser>

This file is currently not included in Debian's apparmor
package. @intrigeri, can this be added? I assume we don't want other
packages to mess around in abstractions? If not I can pull the code from
that file into the profile.

I'm attaching a patch against chromium here for reference.
Cheers,
 -- Guido

> 
>   # Networking
>   network inet stream,
>   network inet6 stream,
>   @{PROC}/[0-9]*/net/if_inet6 r,
>   @{PROC}/[0-9]*/net/ipv6_route r,
> 
>   # Should maybe be in abstractions
>   /etc/mime.types r,
>   /etc/mailcap r,
>   /etc/mtab r,
>   /etc/xdg/xubuntu/applications/defaults.list r,
>   owner @{HOME}/.local/share/applications/defaults.list r,
>   owner @{HOME}/.local/share/applications/mimeinfo.cache r,
> 
>   @{PROC}/[0-9]*/fd/ r,
>   @{PROC}/filesystems r,
>   @{PROC}/ r,
>   @{PROC}/[0-9]*/task/[0-9]*/stat r,
>   owner @{PROC}/[0-9]*/cmdline r,
>   owner @{PROC}/[0-9]*/io r,
>   owner @{PROC}/[0-9]*/setgroups w,
>   owner @{PROC}/[0-9]*/{uid,gid}_map w,
>   @{PROC}/[0-9]*/smaps r,
>   owner @{PROC}/[0-9]*/stat r,
>   @{PROC}/[0-9]*/statm r,
>   owner @{PROC}/[0-9]*/status r,
>   owner @{PROC}/[0-9]*/task/[0-9]*/status r,
>   deny @{PROC}/[0-9]*/oom_{,score_}adj w,
>   @{PROC}/sys/kernel/yama/ptrace_scope r,
>   @{PROC}/sys/net/ipv4/tcp_fastopen r,
> 
>   # Newer chromium needs these now
>   /etc/udev/udev.conf r,
>   /sys/devices/**/uevent r,
>   /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_max_freq r,
>   /sys/devices/system/node/node*/meminfo r,
>   /sys/devices/pci[0-9]*/**/class r,
>   /sys/devices/pci[0-9]*/**/device r,
>   /sys/devices/pci[0-9]*/**/irq r,
>   /sys/devices/pci[0-9]*/**/resource r,
>   /sys/devices/pci[0-9]*/**/vendor r,
>   /sys/devices/pci[0-9]*/**/removable r,
>   /sys/devices/pci[0-9]*/**/block/**/size r,
>   /sys/devices/virtual/block/**/removable r,
>   /sys/devices/virtual/block/**/size r,
>   /sys/devices/virtual/tty/tty*/active r,
>   # This is requested, but doesn't seem to actually be needed so deny for now
>   deny /run/udev/data/** r,
> 
>   # Needed for the crash reporter
>   owner @{PROC}/[0-9]*/auxv r,
> 
>   # chromium mmaps all kinds of things for speed.
>   /etc/passwd m,
>   /usr/share/fonts/truetype/**/*.tt[cf] m,
>   /usr/share/fonts/**/*.pfb m,
>   /usr/share/mime/mime.cache m,
>   /usr/share/icons/**/*.cache m,
>   owner /{dev,run}/shm/pulse-shm* m,
>   owner @{HOME}/.local/share/mime/mime.cache m,
>   owner /tmp/** m,
> 
>   @{PROC}/sys/kernel/shmmax r,
>   owner /{dev,run}/shm/{,.}org.chromium.* mrw,
>   owner /{,var/}run/shm/shmfd-* mrw,
> 
>   /usr/lib/chromium-browser/*.pak mr,
>   /usr/lib/chromium-browser/locales/* mr,
> 
>   # Noisy
>   deny /usr/lib/chromium-browser/** w,
> 
>   capability sys_admin,
>   capability sys_chroot,
>   capability sys_ptrace,
> 
>   # Allow ptracing ourselves
>   ptrace (trace) peer=@{profile_name},
> 
>   # Make browsing directories work
>   / r,
>   /**/ r,
> 
>   # Allow access to documentation and other files the user may want to look
>   # at in /usr
>   /usr/{include,share,src}** r,
> 
>   # Default profile allows downloads to ~/Downloads and uploads from ~/Public
>   owner @{HOME}/ r,
>   owner @{HOME}/Public/ r,
>   owner @{HOME}/Public/* r,
>   owner @{HOME}/Downloads/ r,
>   owner @{HOME}/Downloads/* rw,
> 
>   # For migration
>   owner @{HOME}/.mozilla/firefox/profiles.ini r,
>   owner @{HOME}/.mozilla/firefox/*/prefs.js r,
> 
>   # Helpers
>   /usr/bin/xdg-open ixr,
>   /usr/bin/gnome-open ixr,
>   /usr/bin/gvfs-open ixr,
>   /usr/bin/kdialog ixr,
>   # TODO: xfce
> 
>   # Importing firefox settings (requires 'r' access to @{HOME}/.mozilla/**
>   # which is provided by abstractions/ubuntu-browsers.d/user-files).
>   /etc/firefox/profile/bookmarks.html r,
>   owner @{HOME}/.mozilla/** k,
> 
>   # Chromium Policies
>   /etc/chromium-browser/policies/** r,
> 
>   # Chromium configuration
>   owner @{HOME}/.pki/nssdb/* rwk,
>   owner @{HOME}/.cache/chromium/ rw,
>   owner @{HOME}/.cache/chromium/** rw,
>   owner @{HOME}/.cache/chromium/Cache/* mr,
>   owner @{HOME}/.config/chromium/ rw,
>   owner @{HOME}/.config/chromium/** rwk,
>   owner @{HOME}/.config/chromium/**/Cache/* mr,
>   owner @{HOME}/.config/chromium/Dictionaries/*.bdic mr,
>   owner @{HOME}/.config/chromium/**/Dictionaries/*.bdic mr,
> 
>   # Allow transitions to ourself and our sandbox
>   /usr/lib/chromium-browser/chromium-browser ix,
>   /usr/lib/chromium-browser/chromium-browser-sandbox cx -> 
> chromium_browser_sandbox,
>   /usr/lib/chromium-browser/chrome-sandbox cx -> chromium_browser_sandbox,
> 
>   # Allow communicating with sandbox
>   unix (receive, send) 
> peer=(label=/usr/lib/chromium-browser/chromium-browser//chromium_browser_sandbox),
> 
>   /{usr/,}bin/ps Uxr,
>   /usr/lib/chromium-browser/xdg-settings Cxr -> xdgsettings,
>   /usr/bin/xdg-settings Cxr -> xdgsettings,
>   /usr/bin/lsb_release Cxr -> lsb_release,
> 
>   # GSettings
>   owner /{,var/}run/user/*/dconf/     rw,
>   owner /{,var/}run/user/*/dconf/user rw,
>   owner @{HOME}/.config/dconf/user r,
> 
>   profile xdgsettings {
>     #include <abstractions/bash>
>     #include <abstractions/gnome>
> 
>     /{usr/,}bin/dash ixr,
> 
>     /etc/ld.so.cache r,
>     /etc/xdg/** r,
>     /usr/bin/xdg-settings r,
>     /usr/lib/chromium-browser/xdg-settings r,
>     /usr/share/applications/*.desktop r,
> 
>     # Checking default browser
>     /{usr/,}bin/grep ixr,
>     /{usr/,}bin/readlink ixr,
>     /{usr/,}bin/sed ixr,
>     /{usr/,}bin/which ixr,
>     /usr/bin/basename ixr,
>     /usr/bin/cut ixr,
> 
>     # Setting the default browser
>     /{usr/,}bin/mkdir ixr,
>     /{usr/,}bin/mv ixr,
>     /{usr/,}bin/touch ixr,
>     /usr/bin/dirname ixr,
>     /usr/bin/gconftool-2 ix,
>     /usr/bin/[gm]awk ixr,
>     /usr/bin/xdg-mime ixr,
>     owner @{HOME}/.local/share/applications/ w,
>     owner @{HOME}/.local/share/applications/mimeapps.list* rw,
>   }
> 
>   profile lsb_release {
>     #include <abstractions/base>
>     #include <abstractions/python>
>     /usr/bin/lsb_release r,
>     /{usr/,}bin/dash ixr,
>     /usr/bin/dpkg-query ixr,
>     /usr/include/python2.[4567]/pyconfig.h r,
>     /etc/lsb-release r,
>     /etc/debian_version r,
>     /etc/dpkg/origins/** r,
>     /usr/share/distro-info/** r,
>     /var/lib/dpkg/** r,
> 
>     /usr/local/lib/python3.[0-9]/dist-packages/ r,
>     /usr/bin/ r,
>     /usr/bin/python3.[0-9] mr,
>   }
> 
> 
>   # Site-specific additions and overrides. See local/README for details.
>   #include <local/usr.bin.chromium-browser>
> 
> profile chromium_browser_sandbox {
>     # Be fanatical since it is setuid root and don't use an abstraction
>     /{usr/,}lib/libgcc_s.so* mr,
>     /{usr/,}lib/@{multiarch}/libgcc_s.so* mr,
>     /{usr/,}lib{,32,64}/libm-*.so* mr,
>     /{usr/,}lib/@{multiarch}/libm-*.so* mr,
>     /{usr/,}lib{,32,64}/libpthread-*.so* mr,
>     /{usr/,}lib/@{multiarch}/libpthread-*.so* mr,
>     /{usr/,}lib{,32,64}/libc-*.so* mr,
>     /{usr/,}lib/@{multiarch}/libc-*.so* mr,
>     /{usr/,}lib{,32,64}/libld-*.so* mr,
>     /{usr/,}lib/@{multiarch}/libld-*.so* mr,
>     /{usr/,}lib{,32,64}/ld-*.so* mr,
>     /{usr/,}lib/@{multiarch}/ld-*.so* mr,
>     /{usr/,}lib/tls/*/{cmov,nosegneg}/libm-*.so* mr,
>     /{usr/,}lib/tls/*/{cmov,nosegneg}/libpthread-*.so* mr,
>     /{usr/,}lib/tls/*/{cmov,nosegneg}/libc-*.so* mr,
>     /usr/lib/libstdc++.so* mr,
>     /usr/lib/@{multiarch}/libstdc++.so* mr,
>     /etc/ld.so.cache r,
> 
>     # Required for dropping into PID namespace. Keep in mind that until the
>     # process drops this capability it can escape confinement, but once it
>     # drops CAP_SYS_ADMIN we are ok.
>     capability sys_admin,
> 
>     # All of these are for sanely dropping from root and chrooting
>     capability chown,
>     capability fsetid,
>     capability setgid,
>     capability setuid,
>     capability dac_override,
>     capability sys_chroot,
> 
>     capability sys_ptrace,
>     ptrace (read, readby),
> 
>     signal (receive) peer=unconfined,
>     signal peer=@{profile_name},
>     signal (receive, send) set=("exists"),
>     signal (receive) peer=/usr/lib/chromium-browser/chromium-browser,
> 
>     unix (receive, send) 
> peer=(label=/usr/lib/chromium-browser/chromium-browser),
>     unix (create),
>     unix peer=(label=@{profile_name}),
>     unix (getattr, getopt, setopt, shutdown) addr=none,
> 
>     @{PROC}/ r,
>     @{PROC}/[0-9]*/ r,
>     @{PROC}/[0-9]*/fd/ r,
>     deny @{PROC}/[0-9]*/oom_adj w,
>     deny @{PROC}/[0-9]*/oom_score_adj w,
>     @{PROC}/[0-9]*/status r,
>     @{PROC}/[0-9]*/task/[0-9]*/stat r,
> 
>     /usr/bin/chromium-browser r,
>     /usr/lib/chromium-browser/chromium-browser Px,
>     /usr/lib/chromium-browser/chromium-browser-sandbox r,
>     /usr/lib/chromium-browser/chrome-sandbox mr,
> 
>     /dev/null rw,
> 
>     owner /tmp/** rw,
>   }
> }

>From 63a384fd9ca7f127df5b37c13ccafe22c01e90cc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Guido=20G=C3=BCnther?= <a...@sigxcpu.org>
Date: Sat, 30 Sep 2017 11:26:15 +0200
Subject: [PATCH] Add apparmor profile

The profile is based on the Ubuntu one and was provided by Daniel
Richard G.
---
 debian/apparmor/usr.bin.chromium | 289 +++++++++++++++++++++++++++++++++++++++
 debian/chromium.install          |   2 +
 debian/control                   |   1 +
 debian/rules                     |   1 +
 4 files changed, 293 insertions(+)
 create mode 100644 debian/apparmor/usr.bin.chromium

diff --git a/debian/apparmor/usr.bin.chromium b/debian/apparmor/usr.bin.chromium
new file mode 100644
index 0000000..ca924d0
--- /dev/null
+++ b/debian/apparmor/usr.bin.chromium
@@ -0,0 +1,289 @@
+# Author: Jamie Strandboge <ja...@canonical.com>
+#include <tunables/global>
+
+# Debian compatibility aliases
+# https://bugs.debian.org/742829
+#
+alias /etc/chromium-browser/ -> /etc/chromium/,
+alias /usr/bin/chromium-browser -> /usr/bin/chromium,
+alias /usr/lib/chromium-browser/chromium-browser-sandbox -> /usr/lib/chromium/chrome-sandbox,
+alias /usr/lib/chromium-browser/chromium-browser -> /usr/lib/chromium/chromium,
+alias /usr/lib/chromium-browser/ -> /usr/lib/chromium/,
+
+# We need 'flags=(attach_disconnected)' in newer chromium versions
+/usr/lib/chromium-browser/chromium-browser flags=(attach_disconnected) {
+  #include <abstractions/audio>
+  #include <abstractions/cups-client>
+  #include <abstractions/dbus-session>
+  #include <abstractions/dbus-strict>
+  #include <abstractions/gnome>
+  #include <abstractions/ibus>
+  #include <abstractions/nameservice>
+  #include <abstractions/user-tmp>
+
+  # This include specifies which ubuntu-browsers.d abstractions to use. Eg, if
+  # you want access to productivity applications, adjust the following file
+  # accordingly.
+  #include <abstractions/ubuntu-browsers.d/chromium-browser>
+
+  # Networking
+  network inet stream,
+  network inet6 stream,
+  @{PROC}/[0-9]*/net/if_inet6 r,
+  @{PROC}/[0-9]*/net/ipv6_route r,
+
+  # Should maybe be in abstractions
+  /etc/mime.types r,
+  /etc/mailcap r,
+  /etc/mtab r,
+  /etc/xdg/xubuntu/applications/defaults.list r,
+  owner @{HOME}/.local/share/applications/defaults.list r,
+  owner @{HOME}/.local/share/applications/mimeinfo.cache r,
+
+  @{PROC}/[0-9]*/fd/ r,
+  @{PROC}/filesystems r,
+  @{PROC}/ r,
+  @{PROC}/[0-9]*/task/[0-9]*/stat r,
+  owner @{PROC}/[0-9]*/cmdline r,
+  owner @{PROC}/[0-9]*/io r,
+  owner @{PROC}/[0-9]*/setgroups w,
+  owner @{PROC}/[0-9]*/{uid,gid}_map w,
+  @{PROC}/[0-9]*/smaps r,
+  owner @{PROC}/[0-9]*/stat r,
+  @{PROC}/[0-9]*/statm r,
+  owner @{PROC}/[0-9]*/status r,
+  owner @{PROC}/[0-9]*/task/[0-9]*/status r,
+  deny @{PROC}/[0-9]*/oom_{,score_}adj w,
+  @{PROC}/sys/kernel/yama/ptrace_scope r,
+  @{PROC}/sys/net/ipv4/tcp_fastopen r,
+
+  # Newer chromium needs these now
+  /etc/udev/udev.conf r,
+  /sys/devices/**/uevent r,
+  /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_max_freq r,
+  /sys/devices/system/node/node*/meminfo r,
+  /sys/devices/pci[0-9]*/**/class r,
+  /sys/devices/pci[0-9]*/**/device r,
+  /sys/devices/pci[0-9]*/**/irq r,
+  /sys/devices/pci[0-9]*/**/resource r,
+  /sys/devices/pci[0-9]*/**/vendor r,
+  /sys/devices/pci[0-9]*/**/removable r,
+  /sys/devices/pci[0-9]*/**/block/**/size r,
+  /sys/devices/virtual/block/**/removable r,
+  /sys/devices/virtual/block/**/size r,
+  /sys/devices/virtual/tty/tty*/active r,
+  # This is requested, but doesn't seem to actually be needed so deny for now
+  deny /run/udev/data/** r,
+
+  # Needed for the crash reporter
+  owner @{PROC}/[0-9]*/auxv r,
+
+  # chromium mmaps all kinds of things for speed.
+  /etc/passwd m,
+  /usr/share/fonts/truetype/**/*.tt[cf] m,
+  /usr/share/fonts/**/*.pfb m,
+  /usr/share/mime/mime.cache m,
+  /usr/share/icons/**/*.cache m,
+  owner /{dev,run}/shm/pulse-shm* m,
+  owner @{HOME}/.local/share/mime/mime.cache m,
+  owner /tmp/** m,
+
+  @{PROC}/sys/kernel/shmmax r,
+  owner /{dev,run}/shm/{,.}org.chromium.* mrw,
+  owner /{,var/}run/shm/shmfd-* mrw,
+
+  /usr/lib/chromium-browser/*.pak mr,
+  /usr/lib/chromium-browser/locales/* mr,
+
+  # Noisy
+  deny /usr/lib/chromium-browser/** w,
+
+  capability sys_admin,
+  capability sys_chroot,
+  capability sys_ptrace,
+
+  # Allow ptracing ourselves
+  ptrace (trace) peer=@{profile_name},
+
+  # Make browsing directories work
+  / r,
+  /**/ r,
+
+  # Allow access to documentation and other files the user may want to look
+  # at in /usr
+  /usr/{include,share,src}** r,
+
+  # Default profile allows downloads to ~/Downloads and uploads from ~/Public
+  owner @{HOME}/ r,
+  owner @{HOME}/Public/ r,
+  owner @{HOME}/Public/* r,
+  owner @{HOME}/Downloads/ r,
+  owner @{HOME}/Downloads/* rw,
+
+  # For migration
+  owner @{HOME}/.mozilla/firefox/profiles.ini r,
+  owner @{HOME}/.mozilla/firefox/*/prefs.js r,
+
+  # Helpers
+  /usr/bin/xdg-open ixr,
+  /usr/bin/gnome-open ixr,
+  /usr/bin/gvfs-open ixr,
+  /usr/bin/kdialog ixr,
+  # TODO: xfce
+
+  # Importing firefox settings (requires 'r' access to @{HOME}/.mozilla/**
+  # which is provided by abstractions/ubuntu-browsers.d/user-files).
+  /etc/firefox/profile/bookmarks.html r,
+  owner @{HOME}/.mozilla/** k,
+
+  # Chromium Policies
+  /etc/chromium-browser/policies/** r,
+
+  # Chromium configuration
+  owner @{HOME}/.pki/nssdb/* rwk,
+  owner @{HOME}/.cache/chromium/ rw,
+  owner @{HOME}/.cache/chromium/** rw,
+  owner @{HOME}/.cache/chromium/Cache/* mr,
+  owner @{HOME}/.config/chromium/ rw,
+  owner @{HOME}/.config/chromium/** rwk,
+  owner @{HOME}/.config/chromium/**/Cache/* mr,
+  owner @{HOME}/.config/chromium/Dictionaries/*.bdic mr,
+  owner @{HOME}/.config/chromium/**/Dictionaries/*.bdic mr,
+
+  # Allow transitions to ourself and our sandbox
+  /usr/lib/chromium-browser/chromium-browser ix,
+  /usr/lib/chromium-browser/chromium-browser-sandbox cx -> chromium_browser_sandbox,
+  /usr/lib/chromium-browser/chrome-sandbox cx -> chromium_browser_sandbox,
+
+  # Allow communicating with sandbox
+  unix (receive, send) peer=(label=/usr/lib/chromium-browser/chromium-browser//chromium_browser_sandbox),
+
+  /{usr/,}bin/ps Uxr,
+  /usr/lib/chromium-browser/xdg-settings Cxr -> xdgsettings,
+  /usr/bin/xdg-settings Cxr -> xdgsettings,
+  /usr/bin/lsb_release Cxr -> lsb_release,
+
+  # GSettings
+  owner /{,var/}run/user/*/dconf/     rw,
+  owner /{,var/}run/user/*/dconf/user rw,
+  owner @{HOME}/.config/dconf/user r,
+
+  profile xdgsettings {
+    #include <abstractions/bash>
+    #include <abstractions/gnome>
+
+    /{usr/,}bin/dash ixr,
+
+    /etc/ld.so.cache r,
+    /etc/xdg/** r,
+    /usr/bin/xdg-settings r,
+    /usr/lib/chromium-browser/xdg-settings r,
+    /usr/share/applications/*.desktop r,
+
+    # Checking default browser
+    /{usr/,}bin/grep ixr,
+    /{usr/,}bin/readlink ixr,
+    /{usr/,}bin/sed ixr,
+    /{usr/,}bin/which ixr,
+    /usr/bin/basename ixr,
+    /usr/bin/cut ixr,
+
+    # Setting the default browser
+    /{usr/,}bin/mkdir ixr,
+    /{usr/,}bin/mv ixr,
+    /{usr/,}bin/touch ixr,
+    /usr/bin/dirname ixr,
+    /usr/bin/gconftool-2 ix,
+    /usr/bin/[gm]awk ixr,
+    /usr/bin/xdg-mime ixr,
+    owner @{HOME}/.local/share/applications/ w,
+    owner @{HOME}/.local/share/applications/mimeapps.list* rw,
+  }
+
+  profile lsb_release {
+    #include <abstractions/base>
+    #include <abstractions/python>
+    /usr/bin/lsb_release r,
+    /{usr/,}bin/dash ixr,
+    /usr/bin/dpkg-query ixr,
+    /usr/include/python2.[4567]/pyconfig.h r,
+    /etc/lsb-release r,
+    /etc/debian_version r,
+    /etc/dpkg/origins/** r,
+    /usr/share/distro-info/** r,
+    /var/lib/dpkg/** r,
+
+    /usr/local/lib/python3.[0-9]/dist-packages/ r,
+    /usr/bin/ r,
+    /usr/bin/python3.[0-9] mr,
+  }
+
+
+  # Site-specific additions and overrides. See local/README for details.
+  #include <local/usr.bin.chromium-browser>
+
+profile chromium_browser_sandbox {
+    # Be fanatical since it is setuid root and don't use an abstraction
+    /{usr/,}lib/libgcc_s.so* mr,
+    /{usr/,}lib/@{multiarch}/libgcc_s.so* mr,
+    /{usr/,}lib{,32,64}/libm-*.so* mr,
+    /{usr/,}lib/@{multiarch}/libm-*.so* mr,
+    /{usr/,}lib{,32,64}/libpthread-*.so* mr,
+    /{usr/,}lib/@{multiarch}/libpthread-*.so* mr,
+    /{usr/,}lib{,32,64}/libc-*.so* mr,
+    /{usr/,}lib/@{multiarch}/libc-*.so* mr,
+    /{usr/,}lib{,32,64}/libld-*.so* mr,
+    /{usr/,}lib/@{multiarch}/libld-*.so* mr,
+    /{usr/,}lib{,32,64}/ld-*.so* mr,
+    /{usr/,}lib/@{multiarch}/ld-*.so* mr,
+    /{usr/,}lib/tls/*/{cmov,nosegneg}/libm-*.so* mr,
+    /{usr/,}lib/tls/*/{cmov,nosegneg}/libpthread-*.so* mr,
+    /{usr/,}lib/tls/*/{cmov,nosegneg}/libc-*.so* mr,
+    /usr/lib/libstdc++.so* mr,
+    /usr/lib/@{multiarch}/libstdc++.so* mr,
+    /etc/ld.so.cache r,
+
+    # Required for dropping into PID namespace. Keep in mind that until the
+    # process drops this capability it can escape confinement, but once it
+    # drops CAP_SYS_ADMIN we are ok.
+    capability sys_admin,
+
+    # All of these are for sanely dropping from root and chrooting
+    capability chown,
+    capability fsetid,
+    capability setgid,
+    capability setuid,
+    capability dac_override,
+    capability sys_chroot,
+
+    capability sys_ptrace,
+    ptrace (read, readby),
+
+    signal (receive) peer=unconfined,
+    signal peer=@{profile_name},
+    signal (receive, send) set=("exists"),
+    signal (receive) peer=/usr/lib/chromium-browser/chromium-browser,
+
+    unix (receive, send) peer=(label=/usr/lib/chromium-browser/chromium-browser),
+    unix (create),
+    unix peer=(label=@{profile_name}),
+    unix (getattr, getopt, setopt, shutdown) addr=none,
+
+    @{PROC}/ r,
+    @{PROC}/[0-9]*/ r,
+    @{PROC}/[0-9]*/fd/ r,
+    deny @{PROC}/[0-9]*/oom_adj w,
+    deny @{PROC}/[0-9]*/oom_score_adj w,
+    @{PROC}/[0-9]*/status r,
+    @{PROC}/[0-9]*/task/[0-9]*/stat r,
+
+    /usr/bin/chromium-browser r,
+    /usr/lib/chromium-browser/chromium-browser Px,
+    /usr/lib/chromium-browser/chromium-browser-sandbox r,
+    /usr/lib/chromium-browser/chrome-sandbox mr,
+
+    /dev/null rw,
+
+    owner /tmp/** rw,
+  }
+}
diff --git a/debian/chromium.install b/debian/chromium.install
index 6b20df4..039b43c 100644
--- a/debian/chromium.install
+++ b/debian/chromium.install
@@ -19,3 +19,5 @@ debian/chromium.desktop usr/share/applications
 debian/apikeys etc/chromium.d
 debian/extensions etc/chromium.d
 debian/default-flags etc/chromium.d
+
+debian/apparmor/usr.bin.chromium etc/apparmor.d
diff --git a/debian/control b/debian/control
index 695d483..6e75760 100644
--- a/debian/control
+++ b/debian/control
@@ -9,6 +9,7 @@ Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-chromium/pkg-chromium.git
 Homepage: http://www.chromium.org/Home
 Build-Depends:
  debhelper (>= 10),
+ dh-apparmor,
  python3,
  pkg-config,
  ninja-build,
diff --git a/debian/rules b/debian/rules
index 8da3679..fe0f6e2 100755
--- a/debian/rules
+++ b/debian/rules
@@ -130,6 +130,7 @@ override_dh_auto_install-arch:
 	    mkdir -p $$dst; \
 	    cp $$file $$dst/chromium.$$ext; \
 	    done
+	dh_apparmor --profile-name=usr.bin.chromium -p chromium
 
 override_dh_fixperms:
 	dh_fixperms --exclude chrome-sandbox
-- 
2.14.2

Reply via email to