Aktualizacje i materiały dotyczące zabezpieczeń

Zespół ds. bezpieczeństwa Androida odpowiada za zarządzanie lukami w zabezpieczeniach odkrytymi w ramach platformy Android i wielu podstawowych aplikacji na Androida dołączonych do urządzeń z Androidem.

Zespół ds. bezpieczeństwa Androida wykrywa luki w zabezpieczeniach w ramach wewnętrznych badań, a także reaguje na błędy zgłoszone przez osoby trzecie. Źródła błędów zewnętrznych to m.in. problemy zgłoszone za pomocą formularza dotyczącego podatności, opublikowane i wcześniej opublikowane badania naukowe, powiadomienia od naszych partnerów będących producentami urządzeń oraz publicznie znane problemy publikowane na blogach lub w mediach społecznościowych.

Zgłaszanie problemów z bezpieczeństwem

Każdy deweloper, użytkownik Androida lub badacz bezpieczeństwa może powiadomić zespół ds. bezpieczeństwa Androida o potencjalnych problemach z bezpieczeństwem za pomocą formularza dotyczącego podatności na zagrożenia.

Błędy oznaczone jako problemy związane z zabezpieczeniami nie są widoczne z zewnątrz, ale mogą zostać udostępnione po ich ocenie lub rozwiązaniu. Jeśli planujesz przesłać poprawkę lub test Compatibility Test Suite (CTS), aby rozwiązać problem z bezpieczeństwem, załącz je w raporcie o błędach i zaczekaj na odpowiedź, zanim prześlesz kod do AOSP.

Posortuj błędy

Pierwszym krokiem w rozwiązaniu problemu z luką w zabezpieczeniach jest określenie wagi błędu i komponentu Androida, którego dotyczy. Poważność określa priorytet problemu, a komponent określa, kto naprawi błąd, kto otrzyma powiadomienie i w jaki sposób poprawka zostanie wdrożona dla użytkowników.

Typy kontekstu

Ta tabela zawiera definicje kontekstów zabezpieczeń sprzętu i oprogramowania. Kontekst może być zdefiniowany przez wrażliwość danych, które zwykle przetwarza, lub obszar, w którym działa. Nie wszystkie konteksty zabezpieczeń są stosowane we wszystkich systemach. Tabela jest posortowana od najmniejszych do największych uprawnień.

Typ kontekstu Definicja typu
ograniczony kontekst, Ograniczone środowisko wykonawcze, w którym są przyznawane tylko minimalne uprawnienia.

Na przykład zaufane aplikacje przetwarzające niesprawdzone dane w środowisku piaskownicy.
Kontekst bez podwyższonych uprawnień Typowe środowisko wykonywania oczekujące na nieuprzywilejowany kod.

Na przykład aplikacja na Androida, która działa w domenie SELinux z atrybutem untrusted_app_all.
Kontekst poufny Środowisko uprzywilejowanego wykonywania, które może mieć dostęp do rozszerzonych uprawnień, obsługiwać wiele danych osobowych użytkowników lub dbać o integralność systemu.

Na przykład aplikacja na Androida z funkcjami, które są zabronione przez domenę SELinux untrusted_app, lub z dostępem do uprawnień privileged|signature.
jądro systemu operacyjnego, Funkcje:
  • jest częścią jądra.
  • działa w tym samym kontekście procesora co jądro (np. sterowniki urządzeń);
  • ma bezpośredni dostęp do pamięci jądra (np. komponentów sprzętowych na urządzeniu);
  • ma możliwość wczytywania skryptów do komponentu jądra (np. eBPF);
  • jest jedną z niewielkiej liczby usług dla użytkowników, które są uważane za równoważne jądrowi (takich jak apexd, bpfloader, init, ueventdvold).
Zaufany sprzęt bazowy (THB) oddzielne komponenty sprzętowe, zwykle w ramach SoC, które zapewniają funkcje kluczowe dla głównych zastosowań urządzenia (np. pasma podstawowe, procesory DSP, procesory graficzne i procesory ML);
Łańcuch programu rozruchowego Komponent, który konfiguruje urządzenie podczas uruchamiania, a potem przekazuje kontrolę systemowi Android.
Zaufane środowisko wykonawcze (TEE) Komponent, który ma być chroniony nawet przed nieprzyjaznym jądrem systemu operacyjnego (np. TrustZone i hipernadzorce, takie jak pKVM, które chronią maszyny wirtualne przed jądrem systemu operacyjnego).
Bezpieczne środowisko odizolowane / Bezpieczny element (SE) Opcjonalny komponent sprzętowy, który ma być chroniony przed wszystkimi innymi komponentami na urządzeniu oraz przed atakami fizycznymi, zgodnie z definicją podaną w artykule Wprowadzenie do elementów zabezpieczeń.

Dotyczy to również układu Titan M, który jest obecny na niektórych urządzeniach z Androidem.

Poziom

Poważność błędu odzwierciedla potencjalne szkody, które mogą wystąpić w przypadku jego wykorzystania. Aby określić powagę naruszenia, użyj podanych niżej kryteriów.

Rating Skutki skutecznego wykorzystania luki
Ważne
  • wykonywanie dowolnego kodu w TEE lub SE;
  • Omijanie mechanizmów oprogramowania mających zapobiegać nieprawidłowemu działaniu komponentów oprogramowania lub sprzętu związanych z bezpieczeństwem (np. zabezpieczeń termicznych).
  • zdalny dostęp do poufnych danych logowania używanych do zdalnego uwierzytelniania usług (np. hasła do konta lub tokenów tożsamości);
  • Zdalne wykonywanie dowolnego kodu w kontekście pasma podstawowego bez interakcji z użytkownikiem (np. wykorzystanie błędu w usługach radiowych sieci komórkowych)
  • zdalne wykonywanie dowolnego kodu w kontekście uprzywilejowanym, łańcuchu bootloadera, THB lub jądrze systemu operacyjnego;
  • zdalne obejście wymagań dotyczących interakcji użytkownika podczas instalowania pakietu lub podobnego zachowania.
  • Zdalne pominięcie wymagań dotyczących interakcji z użytkownikiem w przypadku podstawowych ustawień programisty, zabezpieczeń lub prywatności
  • trwała blokada usług z dalszego dostępu (trwała, wymagająca ponownego zaflashowania całego systemu operacyjnego lub przywrócenia do ustawień fabrycznych).
  • Omijanie bezpiecznego rozruchu z dalszej odległości
  • Nieautoryzowany dostęp do danych chronionych przez SE, w tym dostęp umożliwiony przez słabe klucze w SE.
Wysoki
  • całkowite obejście głównej funkcji zabezpieczeń (np. SELinux, FBE lub seccomp);
  • Ogólny obejście dla obrony wielowarstwowej lub technologii ograniczania podatności w łańcuchu bootloadera, TEE lub SE.
  • Ogólny sposób na obejście zabezpieczeń systemu operacyjnego, które ujawniają zawartość pamięci lub plików w ramach aplikacji, użytkownika lub profilu.
  • ataki na SE, które powodują obniżenie poziomu zabezpieczeń do mniej bezpiecznej implementacji;
  • Przejście z firmware na gołym sprzęcie (np. procesor komunikacji baseband) z możliwością zdalnego dostępu do jądra do jądra procesora aplikacji (AP) lub mechanizmów obejścia zaprojektowanych w celu odizolowania firmware na gołym sprzęcie od jądra procesora aplikacji (AP).
  • omijanie ochrony urządzenia, ochrony przed przywróceniem do ustawień fabrycznych lub ograniczeń operatora;
  • Omijanie wymagań dotyczących interakcji z użytkownikiem, które są chronione przez TEE
  • luka w systemie szyfrowania, która umożliwia ataki na protokoły typu end-to-end, w tym ataki na zabezpieczenia warstwy transportowej (TLS) i Bluetooth (BT).
  • Dostęp lokalny do poufnych danych logowania używanych do zdalnego uwierzytelniania usług (np. hasła do konta lub tokeny tożsamości)
  • lokalna arbitralna realizacja kodu w kontekście uprzywilejowanym, łańcuchu programów rozruchowych, THB lub jądrze systemu operacyjnego;
  • Lokalne obejście bezpiecznego rozruchu
  • Omijanie ekranu blokady
  • Lokalne pominięcie wymagań dotyczących interakcji z użytkownikiem w przypadku podstawowych ustawień programisty, bezpieczeństwa lub prywatności.
  • Lokalne obejście wymagań dotyczących interakcji z użytkownikiem podczas instalowania pakietu lub podobnego zachowania
  • Lokalna trwała blokada usług (trwała, wymagająca przeflashowania całego systemu operacyjnego lub przywrócenia do ustawień fabrycznych)
  • dostęp zdalny do danych chronionych (czyli danych ograniczonych do uprzywilejowanego kontekstu);
  • zdalne wykonywanie dowolnego kodu w kontekście bez uprawnień;
  • Zdalne uniemożliwianie dostępu do sieci komórkowej lub Wi-Fi bez interakcji z użytkownikiem (np. za pomocą źle sformułowanego pakietu powodującego zablokowanie usługi radiowej sieci komórkowej).
  • zdalne obejście wymagań dotyczących interakcji z użytkownikiem (dostęp do funkcji lub danych, które powinny wymagać inicjacji przez użytkownika lub jego zgody);
  • ukierunkowane zapobieganie dostępowi do służb ratunkowych;
  • Przesyłanie poufnych informacji za pomocą niezabezpieczonego protokołu sieciowego (np. HTTP lub niezaszyfrowanego Bluetootha), gdy w zgłoszeniu wymagana jest bezpieczna transmisja. Nie dotyczy to szyfrowania Wi-Fi (np. WEP).
  • Nieautoryzowany dostęp do danych zabezpieczonych przez TEE, w tym dostęp za pomocą słabych kluczy w zaufanym środowisku wykonawczym (TEE)
Umiarkowane
  • Ogólny obejście mechanizmów zabezpieczeń wielowarstwowych lub technologii ograniczania podatności w ramach kontekstu uprzywilejowanego, THB lub jądra systemu operacyjnego.
  • Ogólny sposób obejścia zabezpieczeń systemu operacyjnego, które ujawniają stan procesu lub metadane w ramach aplikacji, użytkownika lub profilu.
  • Omijanie szyfrowania lub uwierzytelniania sieci Wi-Fi
  • podatność na atak w standardowych elementach kryptograficznych, która umożliwia wyciek niezaszyfrowanego tekstu (nie dotyczy elementów używanych w TLS);
  • Dostęp lokalny do danych chronionych (czyli danych ograniczonych do kontekstu uprzywilejowanego)
  • lokalnie dowolne wykonywanie kodu w kontekście bez uprawnień;
  • Lokalne obejście wymagań dotyczących interakcji z użytkownikiem (dostęp do funkcji lub danych, które normalnie wymagają inicjacji przez użytkownika lub jego zgody)
  • zdalny dostęp do niezabezpieczonych danych (czyli danych, do których normalnie ma dostęp dowolna zainstalowana lokalnie aplikacja);
  • Zdalne wykonywanie dowolnego kodu w ograniczonym kontekście
  • tymczasowe odmowa usługi na urządzeniu (zawieszenie lub ponowne uruchomienie zdalnie)
Niski
  • Ogólny obejście zabezpieczeń na poziomie użytkownika w ramach kompleksowej ochrony lub technologii ograniczania podatności w nieuprzywilejowanym kontekście
  • Ominięcie zwykłegopoziomu ochronyzezwolenia
  • luka w zabezpieczeniach kryptograficznych w przypadku niestandardowego użycia
  • Ogólne pomijanie funkcji personalizacji na urządzeniu, takich jak Voice Match czy Face Match.
  • nieprawidłowa dokumentacja, która może prowadzić do luki w zabezpieczeniach;
  • lokalnego dowolnego wykonania kodu w ograniczonym kontekście;
  • zdefiniowany przez system tekst zawierający wprowadzający w błąd opis, który stwarza fałszywe oczekiwania dotyczące bezpieczeństwa;
Nieznaczny wpływ na bezpieczeństwo
  • luka, której wpływ został zminimalizowany przez co najmniej jeden modyfikator oceny lub zmiany w architekturze dotyczące konkretnej wersji, dzięki czemu rzeczywista waga jest niższa niż niska, chociaż podstawowy problem z kodem może pozostać;
  • Wszelkie luki, które wymagają źle sformatowanego systemu plików, jeśli system ten jest zawsze adoptowany lub zaszyfrowany przed użyciem.
  • Lokalny tymczasowy brak dostępu do usługi, na przykład gdy problem można rozwiązać, ponownie uruchamiając urządzenie lub odinstalowując aplikację, która go wywołała.

Modyfikatory stawek

Chociaż wagę luki w zabezpieczeniach często można łatwo określić, oceny mogą się zmieniać w zależności od okoliczności.

Przyczyna Efekt
Wymaga działania w kontekście uprzywilejowanym, aby wykonać atak (nie dotyczy TEE, SE i hipervisorów, takich jak pKVM) -1 Poziom ważności
Szczegóły dotyczące podatności ograniczają wpływ problemu -1 Poziom ważności
obejście uwierzytelniania biometrycznego, które wymaga danych biometrycznych bezpośrednio od właściciela urządzenia; -1 Poziom ważności
kompilator lub konfiguracje platformy łagodzą lukę w zabezpieczeniach w źródłowym kodzie źródłowym; Umiarkowana waga, jeśli podstawowa luka w zabezpieczeniach ma wagę umiarkowaną lub wyższą.
Wymaga fizycznego dostępu do wewnętrznych części urządzenia i jest możliwa nawet wtedy, gdy urządzenie jest wyłączone lub nie zostało odblokowane od momentu włączenia. -1 Poziom ważności
Wymaga fizycznego dostępu do wewnętrznych części urządzenia, gdy jest ono włączone i wcześniej odblokowane Poziom ważności -2
atak lokalny, który wymaga odblokowania łańcucha programu rozruchowego; Nie wyższa niż Niska
Atak lokalny, który wymaga włączenia trybu programisty lub stałych ustawień trybu programisty na urządzeniu (i nie jest błędem w samym trybie programisty). Nie wyższa niż Niska
Jeśli żadna domena SELinux nie może wykonać operacji zgodnie z SEPolicy udostępnionym przez Google. Nieistotny wpływ na bezpieczeństwo

Lokalne, bliższe i oddalone

Wektor ataku zdalnego wskazuje, że błąd można wykorzystać bez instalowania aplikacji lub bez fizycznego dostępu do urządzenia. Obejmuje to błędy, które mogą zostać wywołane przez przeglądanie strony internetowej, czytanie e-maila, otrzymanie SMS-a lub połączenie z nieprzyjazną siecią.

Wektory ataku zbliżeniowego są uważane za odległe. Dotyczy to błędów, których można używać tylko atakujący, który jest fizycznie blisko urządzenia docelowego. Przykładem może być błąd wymagający wysyłania nieprawidłowo sformatowanych pakietów Wi-Fi lub Bluetooth. Uważamy, że ataki wykorzystujące łącza ultraszerokopasmowe (UWB) i NFC są bliższe, a zatem zdalne.

Ataki lokalne wymagają, aby atakujący miał wcześniej dostęp do ofiary. W przypadku hipotetycznego przykładu oprogramowania może to być złośliwa aplikacja zainstalowana przez ofiarę lub aplikacja błyskawiczna, której uruchomienie zostało przez nią zaakceptowane.

Urządzenia, które zostały sparowane (np. urządzenia z Bluetooth), są uważane za lokalne. Różnimy sparowane urządzenie od urządzenia, które uczestniczy w procesie parowania.

  • Błędy, które obniżają zdolność użytkownika do identyfikacji drugiego urządzenia, z którym jest ono sparowane (np. uwierzytelnianie), są uważane za zbliżone i tym samym zdalne.
  • Błędy występujące podczas procesu parowania, ale przed wyrażeniem zgody przez użytkownika (czyli autoryzacji) są uważane za dalekie i dlatego odległe.
  • Błędy występujące po wyrażeniu zgody przez użytkownika są uznawane za błędy lokalne, nawet jeśli parowanie ostatecznie się nie powiedzie.

Wektory ataków fizycznych są uważane za lokalne. Dotyczy to błędów, których można używać tylko atakujący, który ma fizyczny dostęp do urządzenia, na przykład błędu w ekranie blokady lub błędu, który wymaga podłączenia kabla USB. Ponieważ urządzenia są często odblokowane, gdy są podłączone do portu USB, ataki wymagające połączenia przez USB są równie poważne niezależnie od tego, czy urządzenie jest odblokowane, czy nie.

Bezpieczeństwo sieciowe

Android zakłada, że wszystkie sieci są wrogie i mogą uruchamiać ataki lub szpiegować ruch. Zabezpieczenia na poziomie łącza (np. szyfrowanie Wi-Fi) chronią komunikację między urządzeniem a punktem dostępu, z którym jest połączone, ale nie zapewniają bezpieczeństwa pozostałych ogniw łańcucha między urządzeniem a serwerami, z którymi się komunikuje.

W przeciwieństwie do tego HTTPS zwykle chroni całą komunikację od końca do końca, szyfrując dane w źródle, a następnie odszyfrowując i weryfikując je dopiero po dotarciu do miejsca docelowego. Z tego powodu luki w zabezpieczeniach sieci na poziomie łącza są oceniane jako mniej poważne niż luki w protokołach HTTPS/TLS: szyfrowanie Wi-Fi samo w sobie nie wystarcza do większości komunikacji w internecie.

Uwierzytelnianie biometryczne

Weryfikacja biometryczna to trudny obszar, a nawet najlepsze systemy mogą zostać oszukane przez osoby o bardzo podobnych cechach (patrz blog dla deweloperów aplikacji na Androida: ulepszenia ekranu blokady i weryfikacji w Androidzie 11). Te oceny powagi odróżniają 2 klasy ataków i mają na celu odzwierciedlenie rzeczywistego zagrożenia dla użytkownika.

Pierwsza klasa ataków umożliwia obejście uwierzytelniania biometrycznego w sposób ogólny, bez wysokiej jakości danych biometrycznych właściciela. Jeśli na przykład atakujący przyklei gumę do żucia do czytnika linii papilarnych, a urządzenie odblokuje się na podstawie pozostałości pozostawionych na czytniku, jest to prosty atak, który można przeprowadzić na dowolnym podatnym urządzeniu. Nie wymaga to znajomości właściciela urządzenia. Ponieważ można go zastosować w większym zakresie i potencjalnie może on wpłynąć na większą liczbę użytkowników, ten atak otrzymuje pełną ocenę wagi (np. wysoką w przypadku obejścia ekranu blokady).

Druga klasa ataków polega na wykorzystaniu instrumentu ataków na prezentacje (spoof), który jest oparty na danych właściciela urządzenia. Czasami te informacje biometryczne są stosunkowo łatwe do zdobycia (na przykład jeśli zdjęcie profilowe w mediach społecznościowych jest wystarczające do oszukania uwierzytelniania biometrycznego, obejście biometryczne otrzyma najwyższą ocenę wagi). Jeśli jednak atakujący musiałby pozyskać dane biometryczne bezpośrednio od właściciela urządzenia (np. za pomocą skanera podczerwienego), byłoby to wystarczająco duża bariera, która ograniczyłaby liczbę osób dotkniętych atakiem. W takim przypadku zastosowano modyfikator -1.

SYSTEM_ALERT_WINDOW i tapjacking

Informacje o naszych zasadach dotyczących SYSTEM_ALERT_WINDOW i aplikacji tapjacking znajdziesz w sekcji „Bezpieczeństwo: usterki tapjackingu/nakładki SYSTEM_ALERT_WINDOW na ekranie, który nie ma wpływu na bezpieczeństwo” na stronie Bezpieczeństwo: usterki bez wpływu na bezpieczeństwo w BugHunter University.

Zabezpieczenia dotyczące wielu użytkowników w systemie operacyjnym Android Automotive

Android Automotive OS stosuje model zabezpieczeń dla wielu użytkowników, który różni się od innych formatów. Każdy użytkownik Androida powinien być używany przez inną osobę fizyczną. Na przykład tymczasowy użytkownik-gość może zostać przypisany do znajomego, który pożycza pojazd od właściciela. Aby umożliwić takie przypadki użycia, użytkownicy mają domyślnie dostęp do niezbędnych komponentów potrzebnych do korzystania z pojazdu, takich jak ustawienia Wi-Fi i sieci komórkowej.

Komponent, którego dotyczy problem

Zespół programistów odpowiedzialny za naprawienie błędu zależy od tego, w jakim komponencie występuje błąd. Może to być podstawowy element platformy Android, sterownik jądra dostarczony przez producenta oryginalnego sprzętu (OEM) lub jedna z wstępnie zainstalowanych aplikacji na urządzeniach Pixel.

Błędy w kodzie AOSP są poprawiane przez zespół inżynierów Androida. Błędy o niskim priorytecie, błędy w określonych komponentach lub błędy, które są już znane publicznie, można naprawić bezpośrednio w publicznie dostępnej głównej gałęzi AOSP. W przeciwnym razie błędy są naprawiane najpierw w naszych repozytoriach wewnętrznych.

Składnik ma też wpływ na to, jak użytkownicy otrzymują aktualizacje. Błąd w ramowcu lub jądrze wymaga bezprzewodowej aktualizacji oprogramowania, którą musi wdrożyć każdy producent OEM. Błąd w aplikacji lub bibliotece opublikowanej w Google Play (np. Gmail, Usługi Google Play lub WebView) może zostać wysłany do użytkowników Androida jako aktualizacja z Google Play.

Powiadom partnerów

Gdy podatność w AOSP zostanie naprawiona w Biuletynie bezpieczeństwa Androida, powiadomimy partnerów Androida o szczegółach problemu i przekażemy poprawki. Lista wersji, w których można stosować funkcję backport, zmienia się wraz z każdą nową wersją Androida. Aby uzyskać listę obsługiwanych urządzeń, skontaktuj się z producentem.

Publikowanie kodu w AOSP

Jeśli błąd związany z bezpieczeństwem występuje w komponencie AOSP, poprawka jest wysyłana do AOSP po udostępnieniu użytkownikom aktualizacji OTA. Rozwiązania problemów o niskim stopniu ważności można przesyłać bezpośrednio do głównego gałęzi AOSP, zanim będą dostępne na urządzeniach w ramach aktualizacji OTA.

Odbieranie aktualizacji Androida

Aktualizacje systemu Android są zwykle dostarczane na urządzenia za pomocą pakietów aktualizacji OTA. Aktualizacje te mogą pochodzić od producenta OEM lub operatora, który zapewnia obsługę urządzenia. Aktualizacje urządzenia Google Pixel pochodzą od zespołu Google Pixel po przejściu procedury testów technicznych akceptacji (TA) przez operatora. Google publikuje też obrazy fabryczne Pixela, które można zainstalować na urządzeniu.

Aktualizowanie usług Google

Oprócz udostępniania poprawek dotyczących błędów związanych z bezpieczeństwem zespół ds. bezpieczeństwa Androida sprawdza te błędy, aby określić, czy istnieją inne sposoby ochrony użytkowników. Na przykład Google Play skanuje wszystkie aplikacje i usuwa te, które próbują wykorzystać błąd zabezpieczeń. W przypadku aplikacji zainstalowanych spoza Google Play urządzenia z Usługami Google Play mogą też używać funkcji Weryfikuj aplikacje, aby ostrzegać użytkowników przed potencjalnie szkodliwymi aplikacjami.

Inne materiały

Informacje dla deweloperów aplikacji na Androida: https://developer.android.com

Informacje o bezpieczeństwie znajdziesz w witrynach poświęconych oprogramowaniu typu open source i witrynach dla deweloperów Androida. Dobre miejsca na początek:

Raporty

Czasami zespół ds. bezpieczeństwa Androida publikuje raporty lub dokumenty. Więcej informacji znajdziesz w raportach o zabezpieczeniach.