Firefox pozwala otworzyć pojedyncze strony w sandboksie.
Izolacja witryn żeby zwalczać nieznane
Kiedy na początku 2018 roku specjaliści zajmujący się bezpieczeństwem ujawnili dwie luki znane jako Meltdown i Spectre, Firefox zareagował wydając wersję 57. Ale już wtedy stało się jasne, że wraz z ciągle ewoluującymi technikami ataków konieczne będzie takie przeprojektowanie przeglądarki internetowej aby złagodzić skutki wykorzystywania przez cyberprzestępców także przyszłych, nieznanych jeszcze luk. Prace w Mozilli ruszyły a Firefox zaprezentował właśnie nową architekturę izolacji witryn w Firefoksie.
Jest to fundamentalne przeprojektowanie architektury zabezpieczeń Firefoksa, które rozszerza obecne mechanizmy bezpieczeństwa. Chodzi tu o stworzenie granic na poziomie procesu systemu operacyjnego dla wszystkich witryn załadowanych w Firefoksie. Wyodrębnienie każdej otwartej strony internetowej w oddzielny proces systemu operacyjnego sprawia, że złośliwy kod będzie miał jeszcze trudniej odczytać – na przykład - prywatne dane innej witryny.
Czyżby Mozilla wreszcie łapała oddech?
Chciałbym to przetestować
Obecnie Mozilla finalizuje prace nad izolacją witryn w Firefoksie, umożliwiając podgrupie użytkowników (głównie zaawansowanych deweloperów) korzystanie z sandboksa w kanałach Nightly i Beta. W planach jest udostępnienie jej większej liczbie użytkowników jeszcze w tym roku. Jeśli chciałbyś wypróbować działanie piaskownicy już teraz, wykonaj następujące kroki:
Aby włączyć Site isolation w Firefox Nightly:
- Otwórz stronę
about:preferences#experimental
. - Zaznacz checkbox
Fission (Site Isolation)
. - Zrestartuj Firefoksa.
Aby włączyć Site isolation w Firefox Beta lub Release:
- Otwórz stronę
about:config
. - Ustaw opcję
fission.autostart
natrue
. - Zrestartuj Firefoksa.
Dlaczego oddzielenie przestrzeni pamięci jest tak ważne
Wspomniane Meltdown i Spectre pokazały w jaki sposób niezaufany kod może uzyskiwać dostęp do pamięci i odczytywać ją w dowolnym miejscu przestrzeni adresowej procesu, nawet w języku tak wysokiego poziomu jak JavaScript (a który przecież jest wykorzystywany przez niemal każdą stronę internetową). Chociaż środki zaradcze stosowane przez systemy operacyjne, procesory i głównych producentów przeglądarek internetowych szybko zneutralizowały ataki, wiązały się z kosztami wydajności i już z samego założenia miały być tylko tymczasowe.
Dzięki izolacji witryn Firefox ładuje każdą witrynę we własnym procesie, izolując w ten sposób ich pamięć od siebie i polegając na gwarancjach bezpieczeństwa oferowanych przez sam system operacyjny.
Aktualna architektura przeglądarki
Do tej pory było (i jest nadal w wersjach stabilnych), że po uruchomieniu Firefox wewnętrznie tworzy jeden uprzywilejowany proces (znany również jako proces nadrzędny), który następnie uruchamia i koordynuje działania wielu procesów - proces nadrzędny jest najbardziej uprzywilejowany, ponieważ może wykonywać każde działanie, które może wykonać użytkownik końcowy.
Ta architektura wieloprocesowa umożliwia Lisowi rozdzielanie bardziej skomplikowanego lub mniej godnego zaufania kodu na procesy, z których większość ma ograniczony dostęp do zasobów systemu operacyjnego lub plików użytkownika. W konsekwencji mniej uprzywilejowany kod musi prosić kod bardziej uprzywilejowany o wykonanie operacji, których sam nie może wykonać.
Proces nadrzędny Firefoksa uruchamia tak naprawdę stałą liczbę procesów: osiem procesów treści internetowych, maksymalnie dwa dodatkowe częściowo uprzywilejowane procesy treści internetowych i cztery procesy narzędziowe dla rozszerzeń internetowych, operacji GPU, sieci i dekodowania mediów. Chociaż rozdzielenie treści na - obecnie - osiem procesów treści internetowych już jest postępem w kwestii izolowania kodu, nadal pozwala dwóm zupełnie różnym witrynom znaleźć się w tym samym procesie systemu operacyjnego, a zatem współdzielić pamięć procesu. I właśnie aby temu przeciwdziałać, Mozilla dąży do wprowadzenia architektury izolacji witryn, która ładuje każdą witrynę do własnego procesu.