Die Mozilla Corporation hat den Start umfangreicher Tests im Nightly- und Beta-Bereich für den Modus der strengen Seitenisolierung angekündigt, der im Rahmen des Fission-Projekts entwickelt wurde. Dieser Modus erweitert die Nutzung der Multithread-Architektur – anstatt eines festen Pools von Prozessen wird für jede Seite ein eigener Prozess erstellt. Das Aktivieren des Fission-Modus erfolgt über die Variable „fission.autostart=true“ in about:config oder auf der Seite about:preferences#experimental.
Es sei daran erinnert, dass das bisher in Firefox verwendete Multiprozessmodell den Betrieb eines Pools von Handler-Prozessen vorsah: standardmäßig 8 Hauptprozesse zur Verarbeitung von Inhalten, 2 zusätzliche nicht privilegierte Prozesse für Webinhalte und 4 Hilfsprozesse für Add-ons, Interaktionen mit der GPU, Netzwerkoperationen und das Dekodieren von Multimedia-Daten. Die Verteilung der Tabs auf die Prozesse wurde zufällig vorgenommen; beispielsweise konnte eine Bankwebsite und eine potenziell unsichere Ressource im gleichen Prozess bearbeitet werden.
Der neue Modus führt die Verarbeitung jeder Webseite in einen separaten Prozess durch, indem nicht nach Tabs, sondern nach Domains getrennt wird. Dies ermöglicht eine zusätzliche Isolierung des Inhalts externer Skripte und iframe-Blöcke. Für die getrennte Verarbeitung von Subdomains standardmäßiger Dienste, die mit verschiedenen Webseiten verbunden sind, wird eine Trennung nicht nach formalen, sondern nach tatsächlichen (eTLD) angewendet. Top-Level-Domains, die in der Public Suffix-Liste aufgeführt sind (d.h. die Websites „a.github.io“ und „b.github.io“ werden in unterschiedliche Prozesse ausgelagert).
Der Modus der strengen Isolierung schützt vor Angriffen über externe Kanäle, z.B. die mit Schwachstellen der Klasse Spectre verbunden sind, die zu Datenlecks innerhalb eines Prozesses führen. Ein Leck vertraulicher Daten, die im selben Prozess verarbeitet werden, kann auftreten, wenn nicht vertrauenswürdiger externer Code in Engines mit JIT ausgeführt wird. virtuellen Maschinen wurde vereinfacht.. Im Kontext von Webbrowsern kann bösartiger JavaScript-Code von einer Website Informationen über Passwörter, Zugriffsschlüssel und Kreditkartennummern abrufen, die auf einer anderen Website eingegeben werden, die im selben Prozess verarbeitet wird. Ursprünglich schränkten Browserentwickler die Timer-Genauigkeit ein und blockierten den Zugriff auf die API SharedArrayBuffer, um sich gegen Angriffe über Drittanbieter-Kanäle zu schützen. Allerdings erschwerten und verlangsamten diese Maßnahmen nur die Durchführung solcher Angriffe (zum Beispiel wurde kürzlich eine Methode vorgeschlagen, um Daten aus dem CPU-Cache zu extrahieren, die überhaupt kein JavaScript benötigt).
Zu den weiteren Vorteilen des Modus der strengen Isolation gehören die Verringerung der Speichersplitterung, eine effizientere Rückgabe des Speichers an das Betriebssystem, die Minimierung der Auswirkungen von Garbage Collection und intensiven Berechnungen auf die Seiten in anderen Prozessen, eine bessere Lastverteilung auf verschiedene CPU-Kerne und eine erhöhte Stabilität (ein Absturz des Prozesses, der das iframe verarbeitet, zieht nicht die Hauptseite und andere Tabs mit sich).
Unter den bekannten Problemen, die bei der Verwendung von Fission auftreten, ist ein deutlich erhöhter Speicherverbrauch, eine Zunahme der X11-Verbindungen und der Dateideskriptoren beim Öffnen einer großen Anzahl von Tabs zu vermerken. Zudem treten Störungen bei einigen Erweiterungen auf, Inhalte von iframes können beim Drucken und bei der Nutzung der Screenshot-Funktion verloren gehen, die Effizienz des Dokumentencachings mit iframes verringert sich und Inhalte aus ausgefüllten, aber nicht gesendeten Formularen gehen beim Wiederherstellen der Sitzung nach einem Absturz verloren.
Quelle: opennet.ru
