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:
- Kod obsługuje niewiarygodne dane wejściowe.
- Kod działa bez piaskownicy.
- Kod jest napisany w niebezpiecznym języku programowania (C/C++).
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.