Z Android Oreo nie martw się o bezpieczeństwo smartfona i jego danych

mm Adam Lulek Artykuły 2017-12-22

Android Oreo zawiera szereg usprawnień związanych z bezpieczeństwem smartfona. Przez kilka miesięcy poprawiło się bezpieczeństwo związane z pobieraniem aplikacji, otwieraniem niepewnych protokołów, zapewnieniem większej kontroli użytkowników nad identyfikatorami, wzmocnieniem kernela, ułatwieniem aktualizacji Androida, a skończywszy na podwojeniu wypłat w systemie Android Security Rewards. Teraz, gdy wersja Oreo powoli wchodzi na smartfony, sprawdźmy w jaki sposób zabezpiecza ona nasze urządzenia mobilne.

Rozwinięcie wsparcia dla bezpieczeństwa hardware’u

Android wspiera Verified Boot, który został stworzony, aby zapobiegać uruchamianiu urządzeń przez zmodyfikowane oprogramowanie. W wersji Oreo została dodana implementacja referencyjna dla Verified Boot, działająca z Project Treble, nazwana Verified Boot 2.0 (AVB). Ma ona kilka ciekawych funkcji, dzięki którym aktualizacje są łatwiejsze i bezpieczniejsze np. „ochrona przed cofaniem”. Jej zadaniem jest zapobieganie rozruchowi urządzenia w przypadku obniżenia wersji Android do starszej, która może być podatna na exploity. W tym celu, urządzenia zapisują daną wersję systemu przy użyciu specjalnego hardware’u lub poprzez podpisywanie danych przez Trusted Execution Environment (TEE). Najnowsze Pixele są wyposażone w taką ochronę, a Google zaleca wszystkim producentom, aby dodać ją do nowych urządzeń.

Android Oreo zawiera także nowe OEM Lock Hardware Abstraction Layer (HAL), które daje producentom urządzeń mobilnych większą elastyczność w zakresie tego, w jaki sposób chronią urządzenie przed zablokowaniem lub odblokowaniem. Na przykład nowe Pixele używają HAL do przekazywania poleceń do bootloadera. Ten analizuje je przy następnym uruchomieniu urządzenia i określa, czy powinny nastąpić zmiany w blokadach, które są bezpiecznie przechowywane w Replay Protected Memory Block (RPMB). Jeżeli urządzenie zostanie skradzione, zabezpieczenia te mają na celu uniemożliwienie jego zresetowania i zapewnienie bezpieczeństwa danych.

Wzmacnianie platformy i izolacja procesu

W ramach Project Treble, platforma Android została przeprojektowana tak, aby aktualizacje były łatwiejsze i mniej kosztowne dla producentów urządzeń. Oddzielenie platformy i kodu dostawcy zostało również zaprojektowane w celu zwiększenia bezpieczeństwa. Zgodnie z zasadą najmniejszych uprawnień, warstwy HAL działają w swojej własnym „sandboxie” i mają dostęp tylko do sterowników i uprawnień, które są absolutnie niezbędne.

Kontynuując proces wzmacniania platformy, większość bezpośredniego dostępu do hardware’u została usunięta ze „struktur medialnych” w Oreo, co spowodowało lepszą izolację. Co więcej, udostępniono Control Flow Integrity (CFI) we wszystkich komponentach multimedialnych. Obecnie większość luk w zabezpieczeniach wykorzystuje się „obalając” normalne działanie aplikacji i zmieniając je w celu wykonywania dowolnych złośliwych działań ze wszystkimi uprawnieniami wykorzystywanej aplikacji. CFI to solidny mechanizm bezpieczeństwa, który uniemożliwia dowolne zmiany działania w pliku binarnym, co znacznie utrudnia wykonywanie takich ataków.

Oprócz tych zmian architektury i interfejsu CFI, Android Oreo jest wyposażony w inne udoskonalenia zwiększające bezpieczeństwo platformy:

  • Seccomp filtering – sprawia, że ​​niektóre nieużywane sesje są niedostępne dla aplikacji, więc nie mogą być wykorzystane przez potencjalnie szkodliwe aplikacje.
  • Hardened usercopy – niedawna ankieta dotycząca błędów bezpieczeństwa w systemie Android ujawniła, że ​​nieprawidłowe lub brakujące sprawdzanie ograniczeń było widoczne w około 45% luk w kernelu. Zablokowano więc funkcję sprawdzania ograniczeń w kernelu Androida 3.18 i nowszej wersji, co utrudnia eksploatację, a jednocześnie pomaga programistom wykryć problemy i naprawić błędy w ich kodzie.
  • Privileged Access Never (PAN) emulation – również przeniesiona do wersji 3.18 kernela i nowszych, ta funkcja uniemożliwia kernelowi bezpośredni dostęp do przestrzeni użytkownika.
  • Kernel Address Space Layout Randomization (KASLR) – synchronizowaliśmy KASLR, aby pomóc zmniejszyć luki w kernelach Androida 4.4 i nowszych wersji.

Bezpieczeństwo aplikacji i zmiany identyfikatora urządzenia

Android Instant Apps działają w ograniczonym obszarze izolowanym, który ogranicza uprawnienia i możliwości, takie jak czytanie listy aplikacji na urządzeniu lub przesyłanie informacji o trafficu. Mimo że wprowadzono je w wersji Android Oreo, Instant Apps obsługują urządzenia z Androidem Lollipop i nowszymi wersjami.

Aby bardziej bezpiecznie obsługiwać zawartość niezaufaną, wyizolowano WebView, dzieląc silnik renderujący na oddzielny proces i uruchamiając go w izolowanym obszarze ograniczającym jego zasoby. WebView obsługuje również bezpieczne przeglądanie w celu ochrony przed potencjalnie niebezpiecznymi witrynami.

Na koniec wprowadzono znaczące zmiany w identyfikatorach urządzeń, aby zapewnić użytkownikom większą kontrolę, w tym:

  • Przenoszenie statycznego Android ID i wartości Widevine do wartości specyficznej dla aplikacji, co pomaga ograniczyć użycie nienadających się do resetowania identyfikatorów na poziomie urządzenia.
  • Zgodnie z profilem anonimowości IETF RFC 7844, nazwa net.hostname jest teraz pusta, a klient DHCP nie wysyła już nazwy hosta.
  • W przypadku aplikacji wymagających identyfikatora urządzenia zbudowano interfejs API Build.getSerial() i ochroniliśmy go „za zgodą”.
  • Oprócz „security researchers1” opracowano solidną randomizację adresów MAC dla ruchu sieciowego Wi-Fi w różnych oprogramowaniach chipsetów.

Źródło: android-developers.googleblog.com






Przewiń stronę, by przeczytać kolejny wpis
x