Aktualności
Niepokojący raport o błędach przeglądarki Chrome
27 maja 2020, 15:00
Niepokojący raport o błędach przeglądarki Chrome

Według badań Google'a aż 70% wszystkich błędów w Chromie to problemy związane z bezpieczeństwem pamięci.

Luki w pamięci

Przeprowadzone ostatnio przez Google'a badania wskazują na wiele błędów zabezpieczeń w wyszukiwarce Chrome. Inżynierowie oprogramowania firmy szukają sposobów na wyeliminowanie podatności związanych z zarządzaniem pamięcią. Około 70% wszystkich poważnych błędów bezpieczeństwa w bazie kodów Chrome to właśnie te dotyczące zarządzania pamięcią i bezpieczeństwa. Połowa z nich wynika z luk w zabezpieczeniach związanych z nieprawidłowym zarządzaniem wskaźnikami. To otwiera hakerom drzwi do swobodnego przeczesywania zasobów urządzenia.

Raport opracowany został na bazie analizy 912 błędów bezpieczeństwa naprawianych w Chromie od 2015 r. Opracowaniem objęto tylko zgłoszenia z wysokim i krytycznym wskaźnikiem ważności.

Podobne opracowanie przygotował Microsoft. Aż 70% wszystkich aktualizacji dotyczyło zabezpieczeń luk w produktach koncernu. Niemal wszystkie obejmowały kwestie zarządzania pamięcią.

 

Problem z zarządzaniem

Obie firmy mają zasadniczo do czynienia z tym samym problemem: C i C++, czyli dwa dominujące języki programowania w ich bazach kodów, to języki „niebezpieczne". Są one bowiem starymi narzędziami programistycznymi, stworzonymi kilkadziesiąt lat temu, gdy wykorzystywanie zabezpieczeń i cyberataki nie były istotnym zagrożeniem. Dlatego zarówno C, jak i C++ pozwalają programiście mieć pełną kontrolę nad zarządzaniem wskaźnikami danych aplikacji i nie mają ograniczeń i ostrzeżeń, które sygnalizowałyby programistom, że popełnili podstawowe błędy zarządzania pamięcią.

Właśnie te wczesne błędy kodowania powodują, że w aplikacjach pojawiają się luki w zarządzaniu pamięcią (w zabezpieczeniach, przepełnienie bufora itd.). Są one najbardziej poszukiwanymi przez hakerów błędami. Umożliwiają umieszczenie kodu w pamięci urządzenia i wykorzystanie przez przeglądarkę, serwer, system operacyjny itp.

W opublikowanym na początku roku rankingu MITER Corporation organizacja zarządzająca bazą danych podatności rządu USA uznała przepełnienie bufora za najbardziej niebezpieczną podatność; w pierwszej dziesiątce znalazły się też dwa inne problemy związane z zarządzaniem pamięcią.

 

Google chce rozwiązać problemy

Grupa badaczy z Google'a twierdzi, że od marca 2019 r. aż 125 ze 130 słabych punktów Chrome'a, o krytycznym znaczeniu, to były kwestie związane z uszkodzeniem pamięci. Problem błędów w zarządzaniu pamięcią był tak duży w firmie, że inżynierowie Chrome'a muszą teraz przestrzegać „Reguły 2". Zgodnie z tą zasadą, ilekroć inżynierowie piszą nową funkcję Chrome'a, ich kod nie może złamać więcej niż dwóch z następujących warunków:

  1. Kod obsługuje niewiarygodne dane wejściowe.
  2. Kod działa bez piaskownicy.
  3. Kod jest napisany w niebezpiecznym języku programowania (C/C++).

 

Reguła

 

Alternatywne języki programowania

Microsoft intensywnie inwestuje w badanie alternatyw dla C i C++. Od wczesnego projektu Checked C obecnie firma eksperymentuje z Rustem, buduje też swój własny „bezpieczny" język programowania podobny do Rusta (część tajnego projektu Verona).

Także pracownicy Google'a planują opracować niestandardowe biblioteki C++ do użytku z bazą kodów Chrome'a i bibliotekami, które mają lepszą ochronę przed błędami związanymi z pamięcią. Powstał także projekt MiraclePtr, którego celem jest przekształcenie „nadających się do wykorzystania błędów w awarie niezwiązane z bezpieczeństwem przy akceptowalnej wydajności, pamięci, rozmiarze binarnym i minimalnym wpływie na stabilność".

Poza tym zespół inżynierów Google'a zapowiedział, że planuje eksplorację w miarę możliwości przy użyciu „bezpiecznych" języków. Kandydaci to wspomniany już Rust, a także Swift, JavaScript, Kotlin i Java.

fot. Google


Paula Jeziorska