RLBox, la nouvelle technologie d'isolation de bibliothèques utilisée par Mozilla

Logo Firefox

Chercheurs de l'Université de Stanford, la Université de Californie à san diego y la Université du Texas à Austin Ils ont développé un ensemble d'outils dont ils ont donné le nom « RLBox », Quoi peut être utilisé comme niveau supplémentaire d'isolation 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 contrôlés par les développeurs, mais des vulnérabilités dans lesquelles le projet principal pourrait compromettre.

Mozilla prévoit d'utiliser RLBox dans les versions de Firefox 74 pour Linux et les compilations de macOS dans Firefox 75 pour isoler l'exécution de la bibliothèque Graphite, qui est chargé de représenter les sources.

Dans le même temps, RLBox n'est pas spécifique à Firefox et peut être utilisé pour isoler n'importe quelle bibliothèque dans des projets arbitraires.

À propos de RLBox

Le mécanisme de fonctionnement RLBox se résume à la compilation de code C / C ++ à partir d'une bibliothèque isolée en code WebAssembly intermédiaire bas niveau, qui est ensuite émis en tant que module WebAssembly, dont l'autorité est définie pour se lier uniquement à ce module (par exemple, une bibliothèque pour le traitement des chaînes ne peut pas ouvrir un socket ou un fichier réseau) Conversion de code C / C ++ un WebAssembly est réalisé en utilisant wasi-sdk.

Pour une exécution directe, le module WebAssembly est compilé en code machine à l'aide du compilateur Lucet et il s'exécute dans un «nanoprocessus» séparé du reste de la mémoire de l'application. Le compilateur Lucet est basé sur le même code que le moteur Cranelift JIT utilisé dans Firefox pour exécuter WebAssembly.

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

Une API de haut niveau est fournie aux développeurs, ce qui vous permet d'appeler des fonctions de bibliothèque en mode isolement.

Les Les contrôleurs WebAssembly ne nécessitent pratiquement aucune ressource supplémentaire et interagir avec eux n'est pas beaucoup plus lent que d'appeler des fonctions ordinaires (les fonctions de bibliothèque sont exécutées sous la forme de code natif, et la surcharge ne se produit que lors de la copie et de la vérification des données en cours d'interaction avec le sandbox) .

Les fonctions d'une bibliothèque isolée ne peuvent pas être appelées directement, et pour y accéder, vous devez utiliser la couche invoquer_sandbox_function().

À leur tour, s'ils doivent appeler des fonctions externes à partir de la bibliothèque, ces fonctions doivent être explicitement définies à l'aide de la méthode register_callback (par défaut, RLBox permet d'accéder aux fonctions de bibliothèque standard).

Pour garantir un fonctionnement sûr de la mémoire, isoler l'exécution du code ne suffit pas et aussi vous devez fournir une vérification des flux de données renvoyés.

Les valeurs générées dans un environnement isolé sont marquées comme non fiables, limitées par des balises corrompues et nécessitent une vérification et une copie dans la mémoire de l'application pour le «nettoyage».

Sans nettoyage, une tentative d'utiliser des données polluées dans un contexte qui nécessite des données régulières (et vice versa) conduit à la génération d'erreurs au stade de la compilation.

Les petits arguments de fonction, les valeurs de retour et les structures sont transmis par copie entre la mémoire de processus et la mémoire sandbox. Pour les grands ensembles de données, la mémoire est allouée dans un environnement isolé et un pointeur direct de «référence de bac à sable» est renvoyé au processus principal.

Les développements RLBox sont distribués sous la licence MIT. RLBox prend actuellement en charge Linux et macOS et devrait être compatible avec Windows plus tard.

Si vous souhaitez en savoir plus sur cette nouvelle technologie que Mozilla prévoit d'implémenter dans Firefox, vous pouvez consulter son développement ainsi que tester l'API dans le lien suivant.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.