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:

# 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.