Für FreeBSD wird ein Isolationsmechanismus entwickelt, der ähnlich wie pledge und unveil funktioniert.

Für FreeBSD wurde eine Implementierung eines Anwendungsisolationsmechanismus vorgeschlagen, der den durch das OpenBSD-Projekt entwickelten Systemaufrufen pledge und unveil ähnelt. Die Isolierung erfolgt bei pledge durch das Verbot, auf nicht verwendete Systemaufrufe zuzugreifen, während unveil den selektiven Zugriff ausschließlich auf bestimmte Dateipfade ermöglicht, mit denen die Anwendung arbeiten kann. Für die Anwendung wird eine Art Whitelist von Systemaufrufen und Dateipfaden erstellt, wobei alle anderen Aufrufe und Pfade verboten sind.

Der Unterschied zwischen dem für FreeBSD entwickelten Pendant zu pledge und unveil besteht darin, dass eine zusätzliche Schicht bereitgestellt wird, die es ermöglicht, Anwendungen zu isolieren, ohne Änderungen am Code vorzunehmen oder nur minimale Änderungen vorzunehmen. Zur Erinnerung: In OpenBSD zielen pledge und unveil darauf ab, eng mit der zugrunde liegenden Umgebung integriert zu werden und werden durch das Hinzufügen spezieller Anmerkungen im Code jeder Anwendung eingesetzt. Um die Organisation des Schutzes zu erleichtern, ermöglichen die Filter, auf eine detaillierte Betrachtung einzelner Systemaufrufe zu verzichten und Klassen von Systemaufrufen zu manipulieren (z. B. Ein-/Ausgabe, Dateizugriff, Schreiben von Dateien, Sockets, ioctl, sysctl, Prozessstart usw.). Die Funktionen zur Zugriffssteuerung können im Code der Anwendung während der Ausführung bestimmter Aktionen aufgerufen werden; beispielsweise kann der Zugriff auf Sockets und Dateien geschlossen werden, nachdem die benötigten Dateien geöffnet und eine Netzwerkverbindung hergestellt wurde.

Der Autor des Pledge- und Unveil-Ports für FreeBSD plant, die Isolation beliebiger Anwendungen zu ermöglichen. Dazu wird das Tool Curtain angeboten, welches es erlaubt, Regeln, die in einer separaten Datei definiert sind, auf Anwendungen anzuwenden. Die vorgeschlagene Konfiguration umfasst eine Datei mit grundlegenden Einstellungen, die Klassen von Systemaufrufen und typische Dateipfade definieren, die für bestimmte Anwendungen spezifisch sind (z. B. Soundverarbeitung, Netzwerkinteraktion, Protokollierung usw.), sowie eine Datei mit Zugriffregeln für bestimmte Anwendungen.

Das Tool curtain kann zur Isolierung der meisten unmodifizierten Tools, Serverprozesse, grafischen Anwendungen und sogar ganzer Desktopsitzungen verwendet werden. Die gemeinsame Nutzung von curtain mit Isolationstechniken, die von den Jail- und Capsicum-Subsystemen bereitgestellt werden, wird unterstützt. Es ist auch möglich, geschachtelte Isolierung zu organisieren, bei der die gestarteten Anwendungen die festgelegten Regeln des übergeordneten Prozesses erben und durch separate Einschränkungen ergänzt werden. Einige Kerneloperationen (Debugging-Tools, POSIX/SysV IPC, PTYs) werden zusätzlich durch Barriermethoden geschützt, die den Zugriff auf Kernelobjekte verbieten, die nicht vom aktuellen oder übergeordneten Prozess erstellt wurden.

Der Prozess kann seine eigene Isolierung automatisch einrichten, indem er curtainctl aufruft oder die von der libcurtain-Bibliothek bereitgestellten Funktionen pledge() und unveil() verwendet, ähnlich wie die entsprechenden Funktionen in OpenBSD. Um Blockierungen während der Ausführung der Anwendung zu überwachen, gibt es den sysctl ‘security.curtain.log_level’. Der Zugriff auf die Protokolle von X11 und Wayland wird separat aktiviert, indem beim Start von curtain die Optionen „-X“/„-Y“ und „-W“ angegeben werden, jedoch ist die Unterstützung für grafische Anwendungen noch nicht ausreichend stabil und weist eine Reihe ungelöster Probleme auf (diese Probleme treten hauptsächlich mit X11 auf, während die Unterstützung für Wayland erheblich besser umgesetzt ist). Benutzer können zusätzliche Einschränkungen hinzufügen, indem sie lokale Regeldateien erstellen (~/.curtain.conf). Beispielsweise kann für die Erlaubnis von Schreibzugriffen durch Firefox nur in das Verzeichnis ~/Downloads/ ein Abschnitt „[firefox]“ mit der Regel „~/Downloads/: rw +“ hinzugefügt werden.

Die Umsetzung umfasst das mac_curtain-Kernelmodul für die mandatorische Zugriffskontrolle (MAC, Mandatory Access Control), eine Reihe von Patches für den FreeBSD-Kernel zur Implementierung notwendiger Handler und Filter, die libcurtain-Bibliothek zur Nutzung der Funktionen plegde und unveil in Anwendungen, das Werkzeug curtain, Beispielkonfigurationsdateien, eine Testreihe sowie Patches für einige Programme im Benutzerspace (zum Beispiel zur Verwendung von $TMPDIR zur Vereinheitlichung der Handhabung temporärer Dateien). Der Autor beabsichtigt, wenn möglich die Anzahl der Änderungen zu minimieren, die Patches für den Kernel und die Anwendungen erfordern.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster