La société Mozilla a annoncé le lancement des tests à grande échelle de la fonctionnalité d'isolement strict des sites dans les builds nocturnes et les versions bêta de Firefox, développée dans le cadre du projet Fission. Ce mode étend l'utilisation de l'architecture multiprocessus : au lieu d'un pool fixe de processus, un processus distinct est créé pour chaque site. La gestion de l'activation du mode Fission se fait via la variable « fission.autostart=true » dans about:config ou sur la page about:preferences#experimental.
Pour rappel, le modèle multiprocessus utilisé dans Firefox jusqu'à présent impliquait le lancement d'un pool de processus gestionnaires : par défaut, 8 processus principaux pour le traitement du contenu, 2 processus supplémentaires non privilégiés pour le contenu web et 4 processus auxiliaires pour les extensions, l'interaction avec le GPU, les opérations réseau et le décodage des données multimédias. La répartition des onglets entre les processus se faisait de manière aléatoire, par exemple, un processus pouvait gérer à la fois le traitement d'un site bancaire et d'une ressource douteuse peu fiable.
Le nouveau mode déplace dans un processus distinct le traitement de chaque site, en séparant non pas par onglets, mais par domaines, ce qui permet d'isoler davantage le contenu des scripts externes et des blocs iframe. Pour un traitement distinct des sous-domaines des services types, liés à différents sites, une séparation est appliquée non pas sur des bases formelles, mais sur des bases factuelles (eTLD) domaines de premier niveau, identifiés dans la liste Public Suffix (c'est-à-dire que les sites « a.github.io » et « b.github.io » seront gérés dans des processus différents).
Le mode d'isolement strict permet de se protéger contre les attaques par canaux latéraux, par exemple, liées aux vulnérabilités de type Spectre, qui entraînent des fuites d'informations au sein d'un même processus. La fuite de données confidentielles traitées dans le même processus est possible lors de l'exécution de code externe peu fiable dans des moteurs avec JIT et dans des machines virtuelles. Dans le contexte des navigateurs web, un code JavaScript malveillant provenant d'un site peut obtenir des informations sur les mots de passe, les clés d'accès et les numéros de cartes de crédit saisis sur un autre site traité dans le même processus. Pour se protéger contre les attaques inter-sites, les développeurs de navigateurs ont initialement limité la précision du minuteur et bloqué l'accès à l'API SharedArrayBuffer, mais ces mesures n'ont que compliqué et ralenti la réalisation de l'attaque (par exemple, une méthode d'extraction de données du cache CPU a récemment été proposée, fonctionnant sans JavaScript).
Parmi les autres avantages du mode d'isolement strict, on mentionne la réduction de la fragmentation de la mémoire, un retour plus efficace de la mémoire au système d'exploitation, une minimisation de l'impact de la collecte des ordures et des calculs intensifs sur les pages dans d'autres processus, une amélioration de la répartition de la charge entre les différents cœurs du CPU, ainsi qu'une stabilité accrue (un plantage du processus traitant un iframe ne fera pas tomber le site principal ni les autres onglets).
Parmi les problèmes connus liés à l'utilisation de Fission, on note une augmentation significative de la consommation de mémoire, des connexions X11 et des descripteurs de fichiers lors de l'ouverture d'un grand nombre d'onglets, ainsi qu'une rupture du fonctionnement de certaines extensions, la perte de contenu des iframes lors de l'impression et de l'appel de la fonction de capture d'écran, une diminution de l'efficacité du cache des documents avec iframes, et la perte du contenu des formulaires remplis mais non soumis lors de la restauration de la session après un plantage.
Source : opennet.ru
