Google Chrome einsperren

Mit apparmor lässt sich Google Chrome einsperren. Dann kann auch durch große Sicherheitslücken im Browser oder einem Plugin keine Datei durch einen Drive-By-Download an ungewöhnlichen Orten gespeichert werden. Das hier präsentierte Apparmor-Profil ist ansonsten jedoch ziemlich nutzlos, denn es verhindert nicht das Ausführen von entferntem Code, welcher nur im Arbeitsspeicher liegt.

/etc/apparmor.d/opt.google.chrome.google-chrome:

#include <tunables/global>

/opt/google/chrome/google-chrome {
  # include basics
  #include <abstractions/base>

  # depending on graphical environment used
  #include <abstractions/gnome> # for .config/gtk-2.0/gtkfilechooser.ini
  #include <abstractions/lightdm>

  #include <abstractions/audio> # obvious
  #include <abstractions/X> # for .Xauthority
  #include <abstractions/freedesktop.org> # for recently-used.xbel, mime

  # for my keys
  # note: writing denied in <abstractions/private-files>
  @{HOME}/.pki/nssdb/* rwk,

  # allow reading everywhere
  # I am concerned about security, not privacy
  @{HOME} r,
  @{HOME}/** r,
  # allow downloads in well-known directory
  @{HOME}/Downloads/** rw,
  # I have a nvidia Graphics card, it uses these
  @{HOME}/.nv/GLCache/** w,

  # allow access to user-related chrome files
  @{HOME}/.cache/google-chrome/** rwk,
  @{HOME}/.config/google-chrome/** rwk,

  # for chrome's sandbox
  capability sys_admin,
  capability setgid,
  capability setuid,
  capability sys_chroot,
  # stolen from lightdm_chromium-browser
  capability sys_ptrace,
  @{PROC}/sys/kernel/yama/ptrace_scope r,

  # this could be narrowed down, but I am too lazy
  @{PROC}/** r,
  @{PROC}/@{pid}/** r,
  @{PROC}/@{pid}/oom_score_adj w,
  @{PROC}/*/setgroups w,
  @{PROC}/*/uid_map w,
  @{PROC}/*/gid_map w,

  # needs own files, obviously
  /opt/google/chrome/** rixw, # writing not actually possible, but keep the logs clean
}