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
}