Google również stawia na Rusta i zapowiada jego włączenie do Chromium

chrom

Rdza pojawiła się również na Chromium

Google zaprezentował ostatnio poprzez publikację lWłączenie języka programowania Rust wśród języków dozwolonych w kodzie projektu Chromium.

Wspomniano, że w celu włączenia istnieje szereg wymagań na przykład w przypadku bibliotek Rust innych firm, które żądają integracji z bazą kodu Chromium, biblioteka musi przewyższać swoich rówieśników pod względem szybkości, zużycia pamięci i stabilności lub być jedyną implementacją danej technologii.

Biblioteki Rust są również akceptowalne, gdy funkcjonalność może być wykonywana w uprzywilejowanym procesie lub gdy użycie biblioteki zmniejsza ryzyko błędów w porównaniu z innymi bibliotekami lub kodem C++. Nie zdecydowano jeszcze, które biblioteki mogą zostać uwzględnione w Chromium.

Decyzja została podjęta w ramach inicjatywy mającej na celu zapobieganie pojawianiu się błędów pamięci w bazie kodu Chrome. Według statystyk przedstawionych dwa lata temu, 70% krytycznych i niebezpiecznych problemów bezpieczeństwa w Chromium wynika z błędów pamięci.

Wykorzystanie języka Rust, który koncentruje się na bezpiecznym zarządzaniu pamięcią i zapewnia automatyczne zarządzanie pamięcią, zmniejszy ryzyko podatności spowodowane problemami takimi jak dostęp do obszaru pamięci po jego zwolnieniu i przepełnienie bufora.

Bezpieczna obsługa pamięci w Rust jest zapewniona w czasie kompilacji poprzez sprawdzanie referencji, śledzenie własności obiektu i czasu życia obiektu (zakres), a także ocenę dostępu do pamięci pod kątem poprawności podczas wykonywania kodu. Rust zapewnia również ochronę przed przepełnieniem liczb całkowitych, wymaga obowiązkowej inicjalizacji wartości zmiennych przed użyciem, lepiej radzi sobie z błędami w standardowej bibliotece, domyślnie wymusza koncepcję niezmiennych odniesień i zmiennych, oferuje silne typowanie statyczne w celu zminimalizowania błędów logicznych.

Korzystanie z Rusta ułatwi i zwiększy bezpieczeństwo stosowania „zasady działania”, której Google używa do zapewnienia bezpieczeństwa swojej bazy kodu.

Zgodnie z tą zasadą każdy dodany kod nie może spełniać więcej niż dwóch z trzech warunków: pracować z niezweryfikowanymi danymi wejściowymi, używać niebezpiecznego języka programowania (C/C++) i uruchamiać z podwyższonymi uprawnieniami. Z zasady tej wynika, że ​​kod obsługujący dane zewnętrzne musi być sprowadzony do najmniejszych uprawnień (wyizolowany) lub napisany w bezpiecznym języku programowania.

W przypadku Rusta, który został pierwotnie opracowany z myślą o przeglądarce, integracja z istniejącym kodem może być przeprowadzona bez użycia IPC i przy mniejszej złożoności w celu zorganizowania ochrony przed błędami pamięci, co przyspieszy proces programowania (wymaga pisania mniejszej ilości kodu i łatwiejsza weryfikacja) oraz zmniejszenie liczby błędów związanych z bezpieczeństwem.

Aby uprościć integrację Zaktualizuj kod za pomocą istniejącego kodu C++ i unikaj obecnie ryzyka i ograniczeń związanych z integracją postanowiono ograniczyć jednokierunkową interakcję: wywoływanie Rusta z C++ (tj. kod Rusta można wywołać tylko z kodu C++) za pośrednictwem funkcji API, ale nie mieszać z kodem C++), co również utrzyma drzewo zależności pod kontrolą.

Drugim ograniczeniem jest obsługa tylko bibliotek innych firm, które są dostarczane w postaci oddzielnych komponentów, które nie są powiązane z Chromium i mają interfejs API zorientowany na zadania.

Oprócz używania Rusta do blokowania exploitów wykorzystujących luki w zabezpieczeniach pamięci typu use-after-free, począwszy od wydania Chrome 102, kod C++ zaczął zamiast tego używać typu MiraclePtr (raw_ptr). obszary pamięci i bloki, jeśli takie dostępy zostaną znalezione.

Szacuje się, że wpływ nowej metody ochrony na wydajność i zużycie pamięci jest znikomy.

Na koniec należy o tym wspomnieć nie ma jeszcze planów przepisania istniejącego kodu w Rust, ale od teraz zewnętrzne biblioteki napisane w Rust będą mogły być integrowane z bazą kodu.

System kompilacji dodał już narzędzia do kompilacji kodu Rust, uruchamiania testów i integracji komponentów Rust z kodem C++. Oczekuje się, że kod Rust pojawi się jako część wydań Chrome w przyszłym roku.

źródło: https://security.googleblog.com


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.