Für FreeBSD wird ein Isolationsmechanismus ähnlich wie Plegde und Reveal entwickelt

Für FreeBSD wird eine Implementierung eines Anwendungsisolationsmechanismus vorgeschlagen, der an die vom OpenBSD-Projekt entwickelten Plegde- und Reveal-Systemaufrufe erinnert. Die Isolierung wird bei plegde dadurch erreicht, dass der Zugriff auf Systemaufrufe verboten wird, die nicht in der Anwendung verwendet werden, und bei uneveal dadurch, dass der Zugriff selektiv nur auf einzelne Dateipfade geöffnet wird, mit denen die Anwendung arbeiten kann. Für die Anwendung wird eine Art Whitelist von Systemaufrufen und Dateipfaden erstellt, alle anderen Aufrufe und Pfade sind verboten.

Der Unterschied zwischen dem für FreeBSD entwickelten Analogon von „plegde“ und „unvealve“ besteht in der Bereitstellung einer zusätzlichen Ebene, die es Ihnen ermöglicht, Anwendungen zu isolieren, ohne Änderungen an ihrem Code vorzunehmen oder mit minimalen Änderungen. Denken Sie daran, dass Plegde und Reveal in OpenBSD auf eine enge Integration mit der zugrunde liegenden Umgebung abzielen und durch das Hinzufügen spezieller Anmerkungen zum Code jeder Anwendung verwendet werden. Um die Organisation des Schutzes zu vereinfachen, ermöglichen Filter den Verzicht auf Details auf der Ebene einzelner Systemaufrufe und die Manipulation von Klassen von Systemaufrufen (Eingabe/Ausgabe, Dateien lesen, Dateien schreiben, Sockets, ioctl, sysctl, Prozessstart usw.). . Zugriffsbeschränkungsfunktionen können im Anwendungscode aufgerufen werden, wenn bestimmte Aktionen ausgeführt werden. Beispielsweise kann der Zugriff auf Sockets und Dateien verweigert werden, nachdem die erforderlichen Dateien geöffnet und eine Netzwerkverbindung hergestellt wurden.

Der Autor der Portierung von Plegde und Reveal für FreeBSD beabsichtigt, die Möglichkeit bereitzustellen, beliebige Anwendungen zu isolieren, wofür das Dienstprogramm Curtain vorgeschlagen wird, mit dem Sie in einer separaten Datei definierte Regeln auf Anwendungen anwenden können. Die vorgeschlagene Konfiguration umfasst eine Datei mit Grundeinstellungen, die Klassen von Systemaufrufen und typische Dateipfade für bestimmte Anwendungen definieren (Arbeiten mit Sound, Netzwerkinteraktion, Protokollierung usw.), sowie eine Datei mit Zugriffsregeln für bestimmte Anwendungen.

Mit dem Curtain-Dienstprogramm können die meisten unveränderten Dienstprogramme, Serverprozesse, grafische Anwendungen und sogar ganze Desktop-Sitzungen isoliert werden. Curtain kann in Verbindung mit den Isolationsmechanismen der Jail- und Capsicum-Subsysteme verwendet werden. Es ist auch möglich, eine verschachtelte Isolation zu organisieren, bei der gestartete Anwendungen die für die übergeordnete Anwendung festgelegten Regeln erben und diese durch individuelle Einschränkungen ergänzen. Einige Kernel-Operationen (Debugging-Funktionen, POSIX/SysV IPC, PTYs) sind zusätzlich durch einen Barrieremechanismus geschützt, der den Zugriff auf Kernel-Objekte verhindert, die nicht vom aktuellen oder übergeordneten Prozess erstellt wurden.

Ein Prozess kann seine eigene Isolation konfigurieren, indem er Curtainctl aufruft oder die Funktionen Plegde() und Reveal() von libcurtain verwendet, ähnlich denen in OpenBSD. Um Sperren zu verfolgen, während die Anwendung ausgeführt wird, wird das Sysctl „security.curtain.log_level“ bereitgestellt. Der Zugriff auf die Protokolle Probleme treten hauptsächlich bei der Verwendung von X11 auf und die Wayland-Unterstützung ist viel besser implementiert. Benutzer können zusätzliche Einschränkungen hinzufügen, indem sie lokale Regeldateien (~/.curtain.conf) erstellen. Um beispielsweise das Schreiben von Firfox nur in das Verzeichnis ~/Downloads/ zuzulassen, können Sie einen Abschnitt „[firefox]“ mit der Regel „~/Downloads/ : rw +“ hinzufügen.

Die Implementierung umfasst das Kernelmodul mac_curtain für die obligatorische Zugriffskontrolle (MAC, Mandatory Access Control), eine Reihe von Patches für den FreeBSD-Kernel mit der Implementierung der erforderlichen Handler und Filter, die Bibliothek libcurtain für die Verwendung der Plegde- und Reveal-Funktionen in Anwendungen, das Curtain-Dienstprogramm, Beispielkonfigurationsdateien, eine Reihe von Tests und Patches für einige Programme im Benutzerbereich (z. B. für die Verwendung von $TMPDIR zur Vereinheitlichung der Arbeit mit temporären Dateien). Der Autor beabsichtigt, die Anzahl der Änderungen, die Patches für den Kernel und die Anwendungen erfordern, soweit wie möglich zu minimieren.

Source: opennet.ru

Kommentar hinzufügen