Mozilla commence la mise en œuvre de la technologie d'isolation de la bibliothèque RLBox

Chercheurs de l’Université de Stanford, de l’Université de Californie à San Diego et de l’Université du Texas à Austin ont développé outils RLBox, qui peut être utilisé comme couche d'isolation supplémentaire pour bloquer les vulnérabilités dans les bibliothèques de fonctions. RLBox vise à résoudre le problème de sécurité des bibliothèques tierces non fiables qui ne sont pas sous le contrôle des développeurs, mais dont les vulnérabilités peuvent compromettre le projet principal.

Société Mozilla prévoit de utilisez RLBox dans les versions Linux de Firefox 74 et les versions macOS de Firefox 75 pour isoler l'exécution de la bibliothèque Graphite, responsable du rendu des polices. Cependant, RLBox n'est pas spécifique à Firefox et peut être utilisé pour isoler n'importe quelle bibliothèque dans des projets arbitraires. Temps de fonctionnement RLBox propagé sous licence MIT. RLBox prend actuellement en charge les plates-formes Linux et macOS, la prise en charge de Windows étant attendue ultérieurement.

Mécanisme Le travail de RLBox se résume à compiler le code C/C++ d'une bibliothèque isolée en code WebAssembly intermédiaire de bas niveau, qui est ensuite conçu comme un module WebAssembly dont les permissions sont définies uniquement par rapport à ce module (par exemple, une bibliothèque pour le traitement des chaînes, vous ne pourrez pas ouvrir une socket réseau ou un fichier). La conversion du code C/C++ en WebAssembly se fait à l'aide wasi-sdk.

Pour une exécution directe, le module WebAssembly est compilé en code machine à l'aide d'un compilateur Il brille et s'exécute dans un "nanoprocessus" distinct, isolé du reste de la mémoire de l'application. Le compilateur Lucet est basé sur le même code que le moteur JIT Grue, utilisé dans Firefox pour exécuter WebAssembly.

Le module assemblé fonctionne dans une zone mémoire séparée et n'a pas accès au reste de l'espace d'adressage. Si une vulnérabilité de la bibliothèque est exploitée, l'attaquant sera limité et ne pourra pas accéder aux zones mémoire du processus principal ni transférer le contrôle en dehors de l'environnement isolé.

Mozilla commence la mise en œuvre de la technologie d'isolation de la bibliothèque RLBox

Des informations de haut niveau sont fournies aux développeurs API, qui vous permet d'appeler des fonctions de bibliothèque en mode isolation. Les gestionnaires WebAssembly ne nécessitent presque aucune ressource supplémentaire et l'interaction avec eux n'est pas beaucoup plus lente que l'appel de fonctions ordinaires (les fonctions de la bibliothèque sont exécutées sous forme de code natif et les frais généraux ne surviennent que lors de la copie et de la vérification des données lors de l'interaction avec l'environnement isolé). Les fonctions de bibliothèque isolées ne peuvent pas être appelées directement et doivent être accessibles à l'aide de
couche invoque_sandbox_function().

A son tour, s'il est nécessaire d'appeler des fonctions externes depuis la bibliothèque, ces fonctions doivent être explicitement définies à l'aide de la méthode register_callback (par défaut, RLBox donne accès aux fonctions bibliothèque standard). Pour garantir la sécurité de la mémoire, l’isolation de l’exécution du code n’est pas suffisante et nécessite également de vérifier les flux de données renvoyés.

Les valeurs générées dans un environnement isolé sont marquées comme non fiables et limitées à l'utilisation marques entachées et pour le « nettoyage », ils ont besoin vérification et copie dans la mémoire de l'application.
Sans nettoyage, tenter d'utiliser des données corrompues dans un contexte qui nécessite des données régulières (et vice versa) entraîne la génération d'erreurs au moment de la compilation. Les petits arguments de fonction, les valeurs de retour et les structures sont transmis via une copie entre la mémoire de processus et la mémoire sandbox. Pour les ensembles de données volumineux, la mémoire est allouée dans un environnement isolé et un pointeur de référence direct de bac à sable est renvoyé au processus principal.

Source: opennet.ru

Ajouter un commentaire