Aktualisiertes AppArmor-Profil für Sublime Text

30. September 2020 · Betriebssysteme · andreas · Kein Kommentar

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:

/etc/apparmor.d/opt.sublime_text.sublime_text
# 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.