Mozilla beginnt mit der Einführung der Bibliotheksisolierungstechnologie RLBox

Forscher der Stanford University, der University of California, San Diego und der University of Texas in Austin haben Toolkit RLBox, die als zusätzliche Isolationsschicht zum Blockieren von Schwachstellen in Funktionsbibliotheken verwendet werden kann. RLBox zielt darauf ab, das Sicherheitsproblem von nicht vertrauenswürdigen Drittanbieterbibliotheken zu lösen, die nicht unter der Kontrolle der Entwickler stehen, jedoch Schwachstellen enthalten, die das Hauptprojekt gefährden können.

Das Unternehmen Mozilla plant RLBox in Linux-Versionen von Firefox 74 und macOS-Versionen von Firefox 75 zu implementieren, um die Ausführung der Bibliothek zu isolieren Graphite, die für das Rendering von Schriftarten verantwortlich ist. Dabei ist RLBox nicht spezifisch für Firefox und kann zur Isolierung beliebiger Bibliotheken in beliebigen Projekten verwendet werden. Entwicklungen RLBox unter der freien Lizenz Apache 2.0 verbreitet. unter der MIT-Lizenz. Derzeit unterstützt RLBox die Verwendung auf den Plattformen Linux und macOS, während die Unterstützung für Windows später erwartet wird.

Mechanismus RLBox besteht darin, C/C++-Code der isolierten Bibliothek in niedrigleveligen Zwischencode in WebAssembly zu kompilieren, der dann als WebAssembly-Modul verpackt wird, dessen Berechtigungen nur an dieses Modul gebunden sind (zum Beispiel kann eine Bibliothek zur Verarbeitung von Strings keinen Netzwerk-Socket oder eine Datei öffnen). Die Umwandlung von C/C++-Code in WebAssembly erfolgt mit Hilfe von wasi-sdk.

Für die direkte Ausführung wird das WebAssembly-Modul mit Hilfe des Compilers Lucet in Maschinencode kompiliert und in einem separaten "Nano-Prozess" ausgeführt, der vom restlichen Speicher der Anwendung isoliert ist. Der Lucet-Compiler basiert auf demselben Code wie die JIT-Engine Cranelift, die in Firefox zur Ausführung von WebAssembly verwendet wird.

Das compilierte Modul arbeitet in einem separaten Speicherbereich und hat keinen Zugriff auf den restlichen Adressraum. Im Falle einer Ausnutzung einer Schwachstelle in der Bibliothek wäre der Angreifer eingeschränkt und könnte nicht auf die Speicherbereiche des Hauptprozesses zugreifen oder die Kontrolle außerhalb der isolierten Umgebung übertragen.

Mozilla beginnt mit der Einführung der Bibliotheksisolierungstechnologie RLBox

Für Entwickler wird eine hochgradige API, der es ermöglicht, Funktionen der Bibliothek im isolierten Modus aufzurufen. WebAssembly-Handler benötigen nahezu keine zusätzlichen Ressourcen, und die Interaktion mit ihnen ist nicht viel langsamer als der Aufruf normaler Funktionen (Bibliotheksfunktionen werden in Form von nativem Code ausgeführt, und die Überheadkosten entstehen lediglich beim Kopieren und Überprüfen der Daten während der Interaktion mit der isolierten Umgebung). Funktionen der isolierten Bibliothek können nicht direkt aufgerufen werden, und um auf sie zuzugreifen, ist es notwendig,
den Zwischenschritt invoke_sandbox_function() zu verwenden.

Wenn von der Bibliothek aus externe Funktionen aufgerufen werden müssen, müssen diese Funktionen explizit mit der Methode register_callback definiert werden (standardmäßig bietet RLBox Zugriff auf Funktionen der Standardbibliothek). Um eine sichere Handhabung des Speichers (memory safety) zu gewährleisten, reicht die Isolation der Codeausführung nicht aus; es muss auch eine Überprüfung der zurückgegebenen Datenströme erfolgen.

Die in der isolierten Umgebung gebildeten Werte werden als nicht vertrauenswürdig markiert, eingeschränkt durch tainted-Labels und erfordern zur 'Bereinigung' eine Verifizierung und das Kopieren in den Anwendungs-Speicher.
Ohne Bereinigung führt der Versuch, tainted-Daten in einem Kontext zu verwenden, der normale Daten erfordert (und umgekehrt), zu Kompilierungsfehlern. Kleine Funktionsargumente, Rückgabewerte und Strukturen werden durch Kopieren zwischen dem Speicher des Prozesses und dem Speicher der isolierten Umgebung übergeben. Für große Datensätze wird der Speicher in der isolierten Umgebung zugewiesen, während dem Hauptprozess ein direkter Zeiger 'sandbox-reference' zurückgegeben wird.

Quelle: opennet.ru

60GB SSD 8Gb DDR4