Kronika Chromium nr 5: kodowanie poza piaskownicą

Odcinek 5: Ade w Mountain View, Kalifornia (sierpień 2019 r.)
Poprzednie odcinki

Chrome jest podzielony na procesy. Niektóre z nich działają w trybie piaskownicy, co oznacza, że mają ograniczony dostęp do systemu i kont użytkowników. W procesie piaskownicy błędy umożliwiające uruchomienie złośliwego kodu są znacznie mniej poważne.

Proces przeglądarki nie ma piaskownicy, więc błąd może dać złośliwemu kodowi pełny dostęp do całego urządzenia. Co należy zrobić inaczej? Jak to wygląda z innymi procesami?

Schemat piaskownicy

W każdym kodzie są błędy. Te błędy w przeglądarce pozwalają zainstalować program, wykraść dane użytkownika, dostosować ustawienia komputera, uzyskać dostęp do zawartości wszystkich kart przeglądarki, dane logowania itd.

W przypadku innych procesów dostęp do systemu operacyjnego jest ograniczony ze względu na ograniczenia związane z platformą. Więcej informacji znajdziesz w przewodniku po implementacji piaskownicy w Chrome.

Unikaj tych często popełnianych błędów:

zasada dwóch

  • Nie analizuj ani nie interpretuj nierzetelnych danych za pomocą C++ w procesie przeglądarki.
  • Nie ufaj źródłom, które reprezentuje mechanizm renderowania. Aby bezpiecznie pobrać bieżące źródło, można użyć obiektu RenderFrameHost przeglądarki.


Tak

Zamiast tego możesz stosować te sprawdzone metody:

  • Wywołuj się paranoję, gdy kod jest w trakcie działania przeglądarki.
  • Zweryfikuj wszystkie IPC z innych procesów. Przyjmijmy, że wszystkie pozostałe procesy są już przejęte i skłaniają do oszukiwania.
  • Przetwarzanie za pomocą mechanizmu renderowania, procesu narzędziowego lub innego procesu w piaskownicy. Najlepiej jest też używać języka bezpiecznego dla pamięci, np. JavaScriptu (rozwiązuje ponad 50% błędów związanych z bezpieczeństwem).

Przez lata w procesie przeglądarki stosowaliśmy stosy sieciowe (np. HTTP, DNS czy QUIC), co prowadziło do krytycznych luk w zabezpieczeniach. Na niektórych platformach sieć ma teraz własny proces, a w przyszłości pojawi się piaskownica.

Dodatkowe materiały

  • Zasada 2 w Chromium: maksymalnie 2 niebezpieczne dane, niebezpieczny kod i niebezpieczny proces.
  • Weryfikowanie danych IPC: przewodnik po tym, jak sprawdzić, czy adresy IPC z procesu renderowania nie zawierają błonnika i nieprawdziwych informacji.