Aktualisiertes AppArmor-Profil für Sublime Text
Das AppArmor-Profil für Sublime Text hat sich im Praxiseinsatz bewährt, allerdings sind im Laufe der Zeit ein paar Nebenwirkungen aufgetreten: trotz expliziter Genehmigung des Lese- und Schreibzugriffs auf alle im Besitz des Benutzers befindlichen Dateien unterhalb von “/home”
owner /home/** rw,
war es nicht möglich, z.B. die Datei “.bashrc” zu bearbeiten. Dies wurde auch entsprechend im Log protokolliert:
apparmor="DENIED" operation="open" profile="/opt/sublime_text/sublime_text" name="/home/buster/.bashrc" pid=5507 comm="file_read_threa" requested_mask="r" denied_mask="r" fsuid=1000 ouid=1000
Ursache hierfür war das Einbinden der Datei “abstractions/evince”
#include <abstractions/evince>
welche wiederum den Regelsatz um den Inhalt der Datei “abstractions/private-files” erweiterte
#include <abstractions/private-files>
wodurch letztendlich die Regel
deny @{HOME}/.bash* mrk,
im Profil aktiv war. Diese unterbindet den Lesezugriff auf alle Dateien im “Home”-Verzeichnis des Benutzers welche mit “.bash” beginnen, weshalb die spätere Genehmigung ins Leere läuft.
Das aktualisierte Profil sieht wie folgt aus:
# 2020-05-11 athul/initial
# 2020-09-29 athul/replaced abstractions/evince
#include <tunables/global>
/opt/sublime_text/sublime_text {
#include <abstractions/X>
#include <abstractions/base>
#include <abstractions/dbus-session-strict>
#include <abstractions/fonts>
deny network,
/opt/sublime_text/ r,
/opt/sublime_text/** r,
/opt/sublime_text/plugin_host mrix,
/opt/sublime_text/sublime_text mr,
/proc/filesystems r,
/usr/share/** r,
/usr/bin/perl mrix,
/usr/bin/sassc mrix,
owner /dev/shm/* rwl,
owner /run/user/** rw,
@{HOME}/** rwk,
@{HOME} rw,
}
Neben dem Ersetzen von “abstractions/evince” wurde das Profil noch um eine Zugriffsregel für den Perl-Interpreter sowie den Sass CSS-Precompiler erweitert und auf die Variable “@{HOME}” aus “tunables/global” statt der statischen Pfadangabe “/home/…” zurückgegriffen.
Als Best Practice sollte man zur Minimierung von Nebenwirkungen mit Hilfe von “aa-genprof” die Zugriffsrechte lieber dediziert vergeben statt die vorgeschlagenen Includes einzubinden.