Kategoria OWASP: MASVS-PLATFORM: Platform Interaction
Omówienie
android:exported
Atrybut określa, czy komponent (aktywność, usługa, odbiornik transmisji itp.) może być uruchamiany przez komponenty innych aplikacji:
- Jeśli
true
, każda aplikacja może uzyskać dostęp do aktywności i uruchomić ją za pomocą dokładnej nazwy klasy. - Jeśli jest to
false
, aktywność mogą uruchamiać tylko komponenty tej samej aplikacji, aplikacje z tym samym identyfikatorem użytkownika lub uprzywilejowane komponenty systemowe.
Logika domyślnej wartości tego atrybutu zmieniała się z czasem i była różna w zależności od typów komponentów i wersji Androida. Na przykład na poziomie interfejsu API 16 (Android 4.1.1) lub starszym wartość elementów <provider>
jest domyślnie ustawiona na true
. Jeśli nie ustawisz tego atrybutu, na niektórych urządzeniach mogą być używane różne wartości domyślne.
Wpływ
Sytuacja z różnymi wartościami domyślnymi oznacza, że możesz przypadkowo udostępnić wewnętrzne komponenty aplikacji. Oto kilka przykładów konsekwencji:
Ataki typu DoS. Inne aplikacje uzyskują nieodpowiedni dostęp do komponentów wewnętrznych, aby modyfikować wewnętrzne funkcje Twojej aplikacji. wyciek danych wrażliwych, wykonanie kodu w kontekście podatnej na ataki aplikacji;
Środki ograniczające ryzyko
Zawsze wyraźnie ustawiaj atrybut android:exported
. Nie pozostawi to miejsca na interpretację i wyraźnie zasygnalizuje Twoje intencje dotyczące widoczności komponentu.
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy JavaScript jest wyłączony.
- # Zarządzanie kluczami {:#key-management}
- Bezpośrednie uruchamianie osadzonego kodu DEX z pakietu APK
- Tapjacking