Zespół ds. bezpieczeństwa Androida odpowiada za zarządzanie lukami w zabezpieczeniach wykrytymi na platformie Android i wielu podstawowych aplikacjach 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łaszane przez osoby trzecie. Źródła błędów zewnętrznych to m.in. problemy zgłaszane za pomocą formularza zgłaszania luk w zabezpieczeniach, opublikowane i nieopublikowane badania naukowe, osoby zarządzające projektami open source, powiadomienia od naszych partnerów – producentów urządzeń oraz publicznie ujawnione problemy opublikowane na blogach lub w mediach społecznościowych.
Zgłaszanie problemów dotyczących bezpieczeństwa
Każdy deweloper, użytkownik Androida lub badacz ds. bezpieczeństwa może powiadomić zespół ds. bezpieczeństwa Androida o potencjalnych problemach z bezpieczeństwem za pomocą formularza zgłaszania luk w zabezpieczeniach.
Błędy oznaczone jako problemy z zabezpieczeniami nie są widoczne na zewnątrz, ale po ich ocenie lub rozwiązaniu mogą zostać udostępnione. Jeśli planujesz przesłać poprawkę lub test pakietu testów zgodności (CTS), aby rozwiązać problem z bezpieczeństwem, załącz ją do raportu o błędzie i poczekaj na odpowiedź, zanim prześlesz kod do AOSP.
Grupowanie błędów
Pierwszym krokiem w reagowaniu na lukę w zabezpieczeniach jest określenie wagi błędu i tego, którego komponentu Androida dotyczy. Waga określa priorytet problemu, a komponent decyduje o tym, kto naprawi błąd, kto otrzyma powiadomienie i w jaki sposób poprawka zostanie wdrożona u użytkowników.
Typy kontekstu
Ta tabela zawiera definicje kontekstów bezpieczeństwa sprzętu i oprogramowania. Kontekst może być określony przez wrażliwość danych, które zwykle przetwarza, lub obszar, w którym działa. Nie wszystkie konteksty bezpieczeństwa mają zastosowanie do wszystkich systemów. Tabela jest posortowana od najmniej do najbardziej uprzywilejowanych.
| Typ kontekstu | Definicja typu |
|---|---|
| Ograniczony kontekst |
Ograniczone środowisko wykonawcze, w którym przyznawane są tylko najbardziej podstawowe uprawnienia. Na przykład zaufane aplikacje przetwarzające niezaufane dane w środowisku piaskownicy. |
| Kontekst bez podwyższonych uprawnień |
Typowe środowisko wykonawcze oczekiwane przez kod bez uprawnień. Na przykład aplikacja na Androida, która działa w domenie SELinux z atrybutem untrusted_app_all.
|
| Kontekst z podwyższonymi uprawnieniami |
Uprzywilejowane środowisko wykonawcze, które może mieć dostęp do rozszerzonych uprawnień, obsługiwać dane osobowe wielu użytkowników lub utrzymywać integralność systemu. Na przykład aplikacja na Androida z funkcjami, które byłyby zabronione przez domenę SELinux untrusted_app lub z dostępem do
privileged|signature uprawnień.
|
| jądro systemu operacyjnego, |
Funkcje, które:
|
| Trusted Hardware Base (THB) | Oddzielne komponenty sprzętowe, zwykle na układzie SoC, które zapewniają funkcje kluczowe dla podstawowych zastosowań urządzenia (takie jak pasma podstawowe sieci komórkowej, procesory DSP, GPU i ML). |
| Łańcuch programu rozruchowego | Komponent, który konfiguruje urządzenie podczas uruchamiania, a następnie przekazuje kontrolę do systemu operacyjnego Android. |
| Zaufane środowisko wykonawcze (TEE) | Komponent, który ma być chroniony nawet przed wrogim jądrem systemu operacyjnego (np. TrustZone i hipernadzorcy, tacy jak pKVM, którzy chronią maszyny wirtualne przed jądrem systemu operacyjnego). |
| Secure Enclave / Secure Element (SE) |
Opcjonalny komponent sprzętowy zaprojektowany tak, aby był chroniony przed wszystkimi innymi komponentami urządzenia i przed atakami fizycznymi, zgodnie z definicją w tym artykule. Obejmuje to układ Titan-M, który jest dostępny na niektórych urządzeniach z Androidem. |
Poziom
Poziom ważności błędu odzwierciedla potencjalne szkody, które mogą wystąpić, jeśli błąd zostanie wykorzystany. Aby określić poziom ważności, użyj tych kryteriów.
| Rating | Skutki udanego wykorzystania |
|---|---|
| Krytyczne |
|
| Wysoki |
|
| Umiarkowane |
|
| Niski |
|
| Znikomy wpływ na bezpieczeństwo (NSI) |
|
Modyfikatory poziomu ważności
Chociaż w wielu przypadkach łatwo jest określić wagę luk w zabezpieczeniach, oceny mogą się zmieniać w zależności od okoliczności.
| Przyczyna | Efekt |
|---|---|
| Wymaga uruchomienia w kontekście uprzywilejowanym, aby przeprowadzić atak (nie dotyczy TEE, SE i hiperwizorów, takich jak pKVM). | Poziom ważności -1 |
| Szczegóły dotyczące luki w zabezpieczeniach ograniczają wpływ problemu | Poziom ważności -1 |
| obejście uwierzytelniania biometrycznego, które wymaga informacji biometrycznych bezpośrednio od właściciela urządzenia; | Poziom ważności -1 |
| Konfiguracje kompilatora lub platformy łagodzą skutki luki w zabezpieczeniach w kodzie źródłowym. | Umiarkowana waga, jeśli podstawowa luka w zabezpieczeniach ma wagę Umiarkowaną lub wyższą. |
| Wymaga fizycznego dostępu do wnętrza urządzenia i jest możliwy nawet wtedy, gdy urządzenie jest wyłączone lub nie zostało odblokowane od momentu włączenia. | Poziom ważności -1 |
| Wymaga fizycznego dostępu do wnętrza 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 |
| Lokalny atak, który wymaga włączenia na urządzeniu trybu programisty lub dowolnych trwałych ustawień trybu programisty (i nie jest błędem w samym trybie programisty). | Nie wyższa niż niska |
| Jeśli żadna domena SELinux nie może przeprowadzić operacji w ramach zasad SEPolicy dostarczonych przez Google. | Zaniedbywalny wpływ na bezpieczeństwo |
Lokalne, bliskie i zdalne
Zdalny wektor ataku oznacza, że błąd można wykorzystać bez instalowania aplikacji lub bez fizycznego dostępu do urządzenia. Obejmuje to błędy, które mogą być wywoływane przez przeglądanie strony internetowej, czytanie e-maili, odbieranie SMS-ów lub łączenie się z wrogą siecią.
Wektory ataku w pobliżu są traktowane jako zdalne. Obejmują one błędy, które mogą być wykorzystywane tylko przez atakującego znajdującego się w pobliżu urządzenia docelowego, np. błąd wymagający wysłania nieprawidłowo sformatowanych pakietów Wi-Fi lub Bluetooth. Ataki wykorzystujące łącze ultraszerokopasmowe (UWB) i technologię NFC uważamy za ataki z bliskiej odległości, a tym samym za ataki zdalne.
Ataki lokalne wymagają od atakującego wcześniejszego dostępu do ofiary. W hipotetycznym przykładzie dotyczącym wyłącznie oprogramowania może to być złośliwa aplikacja zainstalowana przez ofiarę lub aplikacja błyskawiczna, na której uruchomienie ofiara wyraziła zgodę.
Sparowane urządzenia (np. urządzenia towarzyszące Bluetooth) są traktowane jako lokalne. Rozróżniamy sparowane urządzenie i urządzenie, które uczestniczy w procesie parowania.
- Błędy, które pogarszają możliwość zidentyfikowania przez użytkownika innego urządzenia, z którym jest parowane urządzenie (np. uwierzytelnianie), są uważane za bliskie, a tym samym zdalne.
- Błędy, które występują podczas procesu parowania, ale przed uzyskaniem zgody użytkownika (czyli autoryzacji), są uważane za bliskie, a tym samym za zdalne.
- Błędy, które występują po uzyskaniu zgody użytkownika, są uważane za lokalne, nawet jeśli parowanie ostatecznie się nie powiedzie.
Wektory ataków fizycznych są uważane za lokalne. Obejmują one błędy, które mogą być wykorzystane tylko przez atakującego, który ma fizyczny dostęp do urządzenia, np. błąd na ekranie blokady lub błąd, który wymaga podłączenia kabla USB. Urządzenia są często odblokowywane po podłączeniu do USB, więc ataki wymagające połączenia USB mają taką samą wagę niezależnie od tego, czy urządzenie musi być odblokowane.
Bezpieczeństwo sieciowe
Android zakłada, że wszystkie sieci są wrogie i mogą być wykorzystywane do przeprowadzania ataków lub szpiegowania ruchu. Zabezpieczenia warstwy łącza (np. szyfrowanie Wi-Fi) chronią komunikację między urządzeniem a punktem dostępu, z którym jest ono połączone, ale nie zabezpieczają pozostałych połączeń w łańcuchu między urządzeniem a serwerami, z którymi się ono komunikuje.
Z kolei protokół HTTPS zwykle chroni całą komunikację od początku do końca, szyfrując dane u źródła, a następnie odszyfrowując i weryfikując je dopiero po dotarciu do miejsca docelowego. Z tego powodu luki w zabezpieczeniach sieci warstwy łącza są oceniane jako mniej poważne niż luki w zabezpieczeniach HTTPS/TLS: samo szyfrowanie Wi-Fi jest niewystarczające w przypadku większości komunikacji w internecie.
uwierzytelniania biometrycznego.
Uwierzytelnianie biometryczne jest trudną dziedziną, a nawet najlepsze systemy można oszukać, używając podobnego odcisku palca (patrz blog dla deweloperów aplikacji na Androida: ulepszenia ekranu blokady i uwierzytelniania w Androidzie 11). Te oceny ważności rozróżniają 2 rodzaje ataków i mają odzwierciedlać rzeczywiste ryzyko dla użytkownika.
Pierwsza grupa 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 osoba przeprowadzająca atak może umieścić gumę do żucia na czytniku linii papilarnych, a urządzenie przyzna dostęp na podstawie pozostałości na czytniku, będzie to prosty atak, który można przeprowadzić na każdym podatnym urządzeniu. Nie wymaga to żadnej wiedzy o właścicielu urządzenia. Biorąc pod uwagę, że jest on uogólniony i może dotyczyć większej liczby użytkowników, ten atak otrzymuje pełną ocenę ważności (np. wysoka w przypadku obejścia blokady ekranu).
Druga klasa ataków zwykle obejmuje instrument do ataku przez prezentację (fałszerstwo) oparty na właścicielu urządzenia. Czasami te informacje biometryczne są stosunkowo łatwe do uzyskania (np. jeśli zdjęcie profilowe w mediach społecznościowych wystarczy, aby oszukać uwierzytelnianie biometryczne, obejście biometryczne otrzyma pełną ocenę ważności). Jeśli jednak atakujący musiałby uzyskać dane biometryczne bezpośrednio od właściciela urządzenia (np. skanowanie twarzy w podczerwieni), stanowi to wystarczającą barierę, która ogranicza liczbę osób dotkniętych atakiem, więc stosujemy modyfikator -1.
SYSTEM_ALERT_WINDOW i tapjacking
Informacje o naszych zasadach dotyczących SYSTEM_ALERT_WINDOW i tapjackingu znajdziesz w sekcji „Tapjacking/overlay SYSTEM_ALERT_WINDOW vulnerability on a non-security-critical screen” na stronie
Błędy bez wpływu na bezpieczeństwo
w BugHunter University.
Bezpieczeństwo wielu użytkowników w systemie operacyjnym Android Automotive
System operacyjny Android Automotive wykorzystuje model zabezpieczeń dla wielu użytkowników, który różni się od modeli stosowanych w przypadku innych formatów. Każdy użytkownik Androida jest przeznaczony dla innej osoby fizycznej. Na przykład tymczasowy użytkownik gość może zostać przypisany do znajomego, który pożycza samochód od właściciela. Aby uwzględnić 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 którym komponencie występuje błąd. Może to być podstawowy komponent platformy Androida, sterownik jądra systemu (operacyjnego) dostarczony przez producenta oryginalnego sprzętu (OEM) lub jedna z wstępnie załadowanych aplikacji na urządzeniach Pixel.
Błędy w kodzie AOSP są naprawiane przez zespół inżynierów Androida w naszych repozytoriach wewnętrznych.
Ten komponent ma też wpływ na sposób otrzymywania aktualizacji przez użytkowników. Błąd w ramach lub jądrze systemu (operacyjnego) wymaga aktualizacji oprogramowania układowego bezprzewodowo (OTA), którą każdy producent OEM musi wdrożyć. Błąd w aplikacji lub bibliotece opublikowanej w Google Play (np. w Gmailu, Usługach Google Play lub WebView) może zostać przesłany do użytkowników Androida jako aktualizacja z Google Play.
Powiadamianie partnerów
Gdy w Biuletynie bezpieczeństwa w Androidzie zostanie opisana luka w zabezpieczeniach AOSP, powiadomimy partnerów Androida o szczegółach problemu i udostępnimy poprawki. Lista wersji obsługujących przenoszenie wsteczne zmienia się z każdą nową wersją Androida. Listę obsługiwanych urządzeń uzyskasz od producenta.
Udostępnianie kodu w AOSP
Jeśli błąd bezpieczeństwa występuje w komponencie AOSP, poprawka jest przesyłana do AOSP po udostępnieniu użytkownikom aktualizacji OTA.
Otrzymywanie aktualizacji Androida
Aktualizacje systemu Android są zwykle dostarczane na urządzenia w pakietach aktualizacji OTA. Mogą one pochodzić od producenta OEM, który wyprodukował urządzenie, lub od operatora, który świadczy usługi na tym urządzeniu. Aktualizacje urządzeń Google Pixel są udostępniane przez zespół Google Pixel po przejściu procedury testowania akceptacji technicznej (TA) przez operatora. Google publikuje też obrazy fabryczne Pixela, które można wgrać na urządzenia.
Aktualizowanie usług Google
Oprócz udostępniania poprawek 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ż korzystać z funkcji Weryfikacja aplikacji, aby ostrzegać użytkowników przed aplikacjami, które mogą być potencjalnie szkodliwe.
Inne materiały
Informacje dla deweloperów aplikacji na Androida: https://developer.android.com
Informacje o bezpieczeństwie znajdziesz w witrynach Android Open Source i dla deweloperów. Dobre miejsca, od których warto zacząć:
Raporty
Czasami zespół ds. bezpieczeństwa Androida publikuje raporty lub dokumenty. Więcej informacji znajdziesz w sekcji Raporty dotyczące bezpieczeństwa.