Google twierdzi, że Android działa lepiej, gdy jest objęty przez Rust • The Register

Google od 2019 roku integruje kod napisany w języku programowania Rust ze swoim systemem operacyjnym Android, a jego wysiłki opłaciły się w postaci mniejszej liczby luk w zabezpieczeniach.

Błędy bezpieczeństwa pamięci – jak poza zakresem czytać oraz pisać lub używać po zwolnieniu – ponad 65 procent wrażliwości błędy o dużym lub krytycznym znaczeniu w Chrome i Androidzie oraz liczby są podobne w oprogramowaniu firm trzecich. Wady te zmniejszają bezpieczeństwo i zwiększyć koszty tworzenia oprogramowania gdy nie zostaną wcześnie złapani.

Ale po czterech latach zbierania przez Androida skrawków Rusta liczba ta spadła.

„W latach 2019-2022 roczna liczba luk w zabezpieczeniach pamięci spadła z 223 do 85” — powiedział Jeffrey Vander Stoep, inżynier ds. post na blogu.

Vander Stoep mówi, że spadek zbiega się z wysiłkami zmierzającymi do odejścia od języków programowania niezabezpieczających pamięci, przez co rozumie C/C++ – język, który nie gwarantuje bezpieczeństwa pamięci, ale może go wspierać.

Począwszy od Androida 12 w zeszłym roku, Rust stał się językiem platformy Android. A teraz, w Androidzie 13, mówi Vander Stoep, większość nowego kodu dodanego do wydania jest napisana w języku bezpiecznym dla pamięci — Rust, Java lub Kotlin.

Wraz z wprowadzaniem mniej niezabezpieczonych pamięci kodów do Androida, luki w zabezpieczeniach pamięci wzrosły z 76 procent luk w zabezpieczeniach Androida w 2019 r. do 35 procent w 2022 r. – pierwszym roku, w którym luki w zabezpieczeniach pamięci nie stanowiły większości luk.

Inne luki w zabezpieczeniach pozostawały stabilne w czasie, pojawiając się w tempie około 20 na miesiąc w ciągu ostatnich czterech lat. Ponieważ luki w zabezpieczeniach pamięci stanowiły większość krytycznych problemów, luki, które się pojawiły, okazały się mniej poważne.

Google nie jest jedyną dużą firmą technologiczną, która dostrzega zalety bezpiecznego kodu w pamięci. Cel zabrał głos jego uznanie dla Rusta. Kilka miesięcy temu Microsoft CTO Mark Russinovich zdeklarowany że C/C++ nie powinien już być używany do rozpoczynania nowych projektów i że Rust powinien być wdrażany tam, gdzie potrzebny jest język bez wyrzucania śmieci.

W tamtym czasie Bjarne Stroustrup, twórca C++, rzucił wyzwanie przywództwu Russinovicha, wskazując, że można mieć bezpieczeństwo typu i pamięci w standardzie ISO C++, wymuszonym analizą statyczną. Stroustrup uważa, że ​​pomoc w ewolucji C++ ma większy sens niż porzucenie języka i pozostawienie niebezpiecznego kodu bez nadzoru.

Vander Stoep mówi, że Google nadal inwestuje w narzędzia do pisania bezpieczniejszego kodu C/C++, wskazując na utwardzony alokator Scudo, HWASAN, GWP-ASAN i KFENCE na urządzeniach z Androidem. I mówi, że Google zwiększyło wykorzystanie fuzzingu. Ale chociaż takie środki przyczyniły się do zmniejszenia luk w bezpieczeństwie pamięci, twierdzi on, że większość redukcji luk należy przypisać przejściu na języki bezpieczne dla pamięci.

W Androidzie 13 około 21 procent nowego kodu źródłowego zostało napisane w Rust. Obejmuje to około 1,5 miliona wierszy kodu Rust w projekcie Android Open Source Project (AOSP), który składa się z komponentów takich jak Magazyn kluczy2nowy stos ultraszerokopasmowy (UWB) i DNS-over-HTTP3, który w poprzednich latach byłby napisany w C++.

I jak dotąd Rust dostarczył. „Do tej pory nie wykryto żadnych luk w zabezpieczeniach pamięci w kodzie Rust Androida” – powiedział Vander Stoep, który mądrze przyznał, że prawdopodobnie nie będzie to trwało wiecznie.

„Połączenie szybkości i bezpieczeństwa pamięci sprawia, że ​​Rust jest doskonałym wyborem dla szerokiej gamy projektów” — powiedziała Rebecca Rumbul, CEO i dyrektor wykonawczy Rust Foundation, w e-mailu do Rejestr. „Nie jest niespodzianką, że Rust jest coraz bardziej integrowany z istniejącymi projektami i produktami Najnowszy blog Google dyskusja o Rust w Androidzie naprawdę podkreśla korzyści płynące z bezpieczeństwa”.

Rumbul dodał: „Te korzyści w zakresie bezpieczeństwa są dostrzegane przez decydentów na całym świecie, a rządy w Europie i Ameryce Północnej uznają Rust za rozwiązanie niektórych problemów bezpieczeństwa, z którymi borykały się w przeszłości”.

Amerykańska Agencja Bezpieczeństwa Narodowego zauważyła niedawno, że chociaż języki takie jak C++ mogą zapewniać dużą elastyczność, polegają one na programiście, który zapewnia niezbędne kontrole odwołań do pamięci.

„Narzędzia do analizy oprogramowania mogą wykryć wiele przypadków problemów z zarządzaniem pamięcią, a opcje środowiska operacyjnego mogą również zapewnić pewną ochronę, ale nieodłączne zabezpieczenia oferowane przez bezpieczne dla pamięci języki oprogramowania mogą zapobiegać większości problemów z zarządzaniem pamięcią lub je łagodzić” – powiedziała agencja w oświadczenie. przewodnictwo [PDF] wydany w zeszłym miesiącu. „NSA zaleca używanie języka bezpiecznego dla pamięci, jeśli to możliwe”. ®