Firma Mozilla ogłosiła rozpoczęcie masowych testów w nocnych wersjach i wydaniach beta przeglądarki Firefox trybu ścisłej izolacji stron, rozwijanego w ramach projektu Fission. Tryb ten rozszerza zastosowanie architektury wieloprocesowej - zamiast stałej puli procesów, dla każdej strony tworzony jest osobny proces. Włączenie trybu Fission można zarządzać za pomocą zmiennej „fission.autostart=true” w about:config lub na stronie about:preferences#experimental.
Przypomnijmy, że dotychczas stosowany w Firefox model wieloprocesowy zakładał uruchomienie puli procesów obsługujących: domyślnie 8 głównych procesów do obsługi treści, 2 dodatkowe procesy bez uprawnień dla treści webowych oraz 4 pomocnicze procesy do dodatków, interakcji z GPU, operacji sieciowych i dekodowania danych multimedialnych. Przydzielanie kart do procesów odbywało się losowo, na przykład w jednym procesie mogło się znaleźć przetwarzanie strony banku i niegodnego zaufania, podejrzanego zasobu.
Nowy tryb przenosi do osobnego procesu przetwarzanie każdej strony, dzieląc nie według kart, lecz według domen, co dodatkowo pozwala na izolację zawartości zewnętrznych skryptów i bloków iframe. Do oddzielnego przetwarzania subdomen typowych usług związanych z różnymi stronami stosuje się podział nie według formalnych, lecz według rzeczywistych (eTLD) domen najwyższego poziomu, oznaczonych na liście Public Suffix (tzn. strony „a.github.io” i „b.github.io” będą obsługiwane w różnych procesach).
Tryb ścisłej izolacji pozwala chronić przed atakami poprzez kanały pomocnicze, na przykład związanymi z podatnościami z klasy Spectre, prowadzącymi do wycieku informacji wewnątrz jednego procesu. Możliwość wycieku przetwarzanych w tym samym procesie danych poufnych jest możliwa podczas wykonywania niegodnego zaufania zewnętrznego kodu w silnikach z JIT i w maszynach wirtualnych. W kontekście przeglądarek internetowych złośliwy kod JavaScript z jednej strony może uzyskać informacje o hasłach, kluczach dostępu i numerach kart kredytowych wprowadzonych na innej stronie, przetwarzanej w tym samym procesie. Początkowo, aby chronić przed atakami na zewnętrznych kanałach, twórcy przeglądarek ograniczyli dokładność timera i zablokowali dostęp do API SharedArrayBuffer, jednak te środki jedynie skomplikowały i spowolniły przeprowadzenie ataku (na przykład niedawno zaproponowano metodę wydobywania danych z pamięci podręcznej CPU, działającą w ogóle bez JavaScript).
Inne zalety trybu ścisłej izolacji to zmniejszenie fragmentacji pamięci, bardziej efektywne oddawanie pamięci systemowi operacyjnemu, minimalizacja wpływu zbierania śmieci oraz intensywnych obliczeń na strony w innych procesach, zwiększenie efektywności rozkładu obciążenia na różne rdzenie CPU, a także wzrost stabilności (awaria procesu obsługującego iframe nie pociągnie za sobą głównej strony i innych kart).
Wśród znanych problemów związanych z używaniem Fission zauważono znaczący wzrost zużycia pamięci, połączeń X11 i deskryptorów plików przy otwieraniu dużej liczby kart, a także zakłócenia w działaniu niektórych dodatków, znikanie zawartości iframe podczas drukowania i wywoływania funkcji zrzutu ekranu, zmniejszenie efektywności buforowania dokumentów z iframe, utratę zawartości wypełnionych, ale nie wysłanych formularzy podczas przywracania sesji po awarii.
Źródło: opennet.ru
