Mozilla beginnt mit der Implementierung der RLBox-Bibliotheksisolationstechnologie

Forscher der Stanford University, der University of California in San Diego und der University of Texas in Austin entwickelt haben Werkzeuge RLBox, die als zusätzliche Isolationsschicht verwendet werden kann, um Schwachstellen in Funktionsbibliotheken zu blockieren. RLBox zielt darauf ab, das Sicherheitsproblem nicht vertrauenswürdiger Bibliotheken von Drittanbietern zu lösen, die nicht unter der Kontrolle von Entwicklern stehen, deren Schwachstellen jedoch das Hauptprojekt gefährden können.

Mozilla-Unternehmen Pläne Verwenden Sie RLBox in Linux-Builds von Firefox 74 und macOS-Builds von Firefox 75, um die Bibliotheksausführung zu isolieren Graphite, verantwortlich für die Darstellung von Schriftarten. Allerdings ist RLBox nicht spezifisch für Firefox und kann zum Isolieren beliebiger Bibliotheken in beliebigen Projekten verwendet werden. Betriebszeit RLBox Ausbreitung unter MIT-Lizenz. RLBox unterstützt derzeit Linux- und macOS-Plattformen, die Windows-Unterstützung wird später erwartet.

Mechanismus Die Arbeit von RLBox besteht darin, den C/C++-Code einer isolierten Bibliothek in Low-Level-Zwischen-WebAssembly-Code zu kompilieren, der dann als WebAssembly-Modul entworfen wird, dessen Berechtigungen nur in Bezug auf dieses Modul (z. B. eine Bibliothek) festgelegt werden zum Verarbeiten von Zeichenfolgen kann kein Netzwerk-Socket oder eine Netzwerkdatei geöffnet werden). Die Konvertierung von C/C++-Code in WebAssembly erfolgt mit wasi-sdk.

Zur direkten Ausführung wird das WebAssembly-Modul mithilfe eines Compilers in Maschinencode kompiliert Lucet und läuft in einem separaten „Nanoprozess“, der vom restlichen Speicher der Anwendung isoliert ist. Der Lucet-Compiler basiert auf demselben Code wie die JIT-Engine Kranlift, wird in Firefox zum Ausführen von WebAssembly verwendet.

Das zusammengebaute Modul arbeitet in einem separaten Speicherbereich und hat keinen Zugriff auf den Rest des Adressraums. Wenn eine Schwachstelle in der Bibliothek ausgenutzt wird, ist der Angreifer eingeschränkt und kann nicht auf Speicherbereiche des Hauptprozesses zugreifen oder die Kontrolle außerhalb der isolierten Umgebung übertragen.

Mozilla beginnt mit der Implementierung der RLBox-Bibliotheksisolationstechnologie

Für Entwickler werden umfassende Informationen bereitgestellt API, wodurch Sie Bibliotheksfunktionen im Isolationsmodus aufrufen können. WebAssembly-Handler erfordern fast keine zusätzlichen Ressourcen und die Interaktion mit ihnen ist nicht viel langsamer als der Aufruf gewöhnlicher Funktionen (die Bibliotheksfunktionen werden in Form von nativem Code ausgeführt und Overhead-Kosten entstehen nur beim Kopieren und Überprüfen von Daten während der Interaktion mit der isolierten Umgebung). Isolierte Bibliotheksfunktionen können nicht direkt aufgerufen werden und müssen über aufgerufen werden
Ebene invoke_sandbox_function().

Wenn wiederum externe Funktionen aus der Bibliothek aufgerufen werden müssen, müssen diese Funktionen explizit mit der Methode register_callback definiert werden (standardmäßig bietet RLBox Zugriff auf Funktionen). Standardbibliothek). Um die Speichersicherheit zu gewährleisten, reicht die Isolierung der Codeausführung nicht aus und erfordert auch die Überprüfung der zurückgegebenen Datenströme.

Werte, die in einer isolierten Umgebung generiert werden, werden als nicht vertrauenswürdig und eingeschränkt nutzbar markiert verunreinigte Markierungen und zum „Reinigen“ benötigen sie Überprüfung und Kopieren in den Anwendungsspeicher.
Ohne Bereinigung führt der Versuch, beschädigte Daten in einem Kontext zu verwenden, der reguläre Daten erfordert (und umgekehrt), dazu, dass beim Kompilieren Fehler generiert werden. Kleine Funktionsargumente, Rückgabewerte und Strukturen werden durch Kopieren zwischen Prozessspeicher und Sandbox-Speicher übergeben. Bei großen Datensätzen wird Speicher in einer isolierten Umgebung zugewiesen und ein direkter Sandbox-Referenzzeiger an den Hauptprozess zurückgegeben.

Source: opennet.ru

Kommentar hinzufügen