Dostęp do sieci lokalnej

Urządzenia w sieci lokalnej (LAN) są dostępne dla każdej aplikacji, która ma uprawnienie INTERNET. Ułatwia to aplikacjom łączenie się z urządzeniami lokalnymi, ale ma też wpływ na prywatność, np. umożliwia tworzenie odcisków palców użytkownika i działa jako serwer proxy lokalizacji.

Projekt Local Network Protections ma na celu ochronę prywatności użytkownika poprzez ograniczenie dostępu do sieci lokalnej za pomocą nowego uprawnienia środowiska wykonawczego.

Wpływ

W Androidzie 16 to uprawnienie będzie funkcją opcjonalną, co oznacza, że będzie dotyczyć tylko aplikacji, które ją włączą. Celem zgody użytkownika jest umożliwienie deweloperom aplikacji określenia, które części ich aplikacji zależą od niejawnego dostępu do lokalnej sieci, aby mogli przygotować się do ochrony tych części w przyszłej wersji Androida.

Aplikacje będą miały wpływ na dostęp do sieci lokalnej użytkownika, jeśli korzystają z tych funkcji:

  • Bezpośrednie lub biblioteczne użycie gniazd surowych na adresach sieci lokalnej, np. Multicast DNS (mDNS) lub Simple Service Discovery Protocol (SSDP).
  • Używanie klas na poziomie platformy, które mają dostęp do sieci lokalnej, np. NsdManager.

Szczegóły wpływu

Ruch do i z adresu sieci lokalnej wymaga uprawnienia dostępu przez sieć lokalną. W tabeli poniżej znajdziesz kilka typowych przypadków:

Operacja sieciowa niskiego poziomu aplikacji Wymagany jest dostęp do sieci lokalnej
Nawiązywanie wychodzącego połączenia TCP tak
Akceptowanie przychodzącego połączenia TCP tak
Wysyłanie transmisji pojedynczej, grupowej lub rozgłoszeniowej UDP tak
Odbieranie przychodzących pakietów UDP unicast, multicast i broadcast tak

Te ograniczenia są zaimplementowane głęboko w stosie sieciowym, dlatego dotyczą wszystkich interfejsów API sieci. Obejmuje to gniazda utworzone na platformie lub w kodzie zarządzanym, biblioteki sieciowe, takie jak Cronet i OkHttp, oraz wszystkie interfejsy API zaimplementowane na ich podstawie. Próba rozpoznania usług w sieci lokalnej, które mają sufiks .local, wymaga uprawnień do sieci lokalnej.

Wyjątki od powyższych reguł:

  • Jeśli serwer DNS urządzenia znajduje się w sieci lokalnej, ruch do niego i z niego (na porcie 53) nie wymaga uprawnień dostępu do sieci lokalnej.
  • Aplikacje, które używają selektora wyjścia jako selektora w aplikacji, nie będą potrzebować uprawnień do sieci lokalnej (więcej informacji podamy w późniejszej wersji).

Wskazówki

Aby włączyć ograniczenia dotyczące sieci lokalnej:

  1. Wgraj na urządzenie kompilację z Androidem 16 w wersji beta 3 lub nowszej.
  2. Instalowanie aplikacji do testowania
  3. Przełączanie konfiguracji Appcompat za pomocą adb

    adb shell am compat enable RESTRICT_LOCAL_NETWORK <package_name>
    
  4. Uruchom ponownie urządzenie

Dostęp aplikacji do sieci lokalnej jest teraz ograniczony, a każda próba uzyskania dostępu do sieci lokalnej spowoduje błędy gniazda. Jeśli używasz interfejsów API, które wykonują operacje w sieci lokalnej poza procesem aplikacji, np. NsdManager, nie ma to wpływu na proces wyrażania zgody.

Aby przywrócić dostęp, musisz przyznać aplikacji uprawnienia do NEARBY_WIFI_DEVICES.

  • Sprawdź, czy aplikacja deklaruje uprawnienie NEARBY_WIFI_DEVICES w pliku manifest.
  • Otwórz Ustawienia > Aplikacje > [Nazwa aplikacji] > Uprawnienia > Urządzenia w pobliżu > Zezwól.

Dostęp aplikacji do sieci lokalnej powinien zostać przywrócony, a wszystkie scenariusze powinny działać tak jak przed włączeniem aplikacji. Oto jak wpłynie to na ruch w sieci aplikacji.

Uprawnienia Żądanie wychodzące z sieci LAN Żądanie internetowe wychodzące/przychodzące Żądanie przychodzące z sieci LAN
Przyznano Works Works Works
Nie przyznano Wpadki Works Wpadki

Aby wyłączyć konfigurację Appcompat, użyj tego polecenia:

adb shell am compat disable RESTRICT_LOCAL_NETWORK <package_name>

Błędy

Błędy wynikające z tych ograniczeń będą zwracane do gniazda wywołującego, gdy wywoła ono funkcję send lub jej wariant send dla lokalnego adresu sieciowego.

Przykłady błędów:

sendto failed: EPERM (Operation not permitted)

sendto failed: ECONNABORTED (Operation not permitted)

Błędy

Przesyłanie błędów i opinii dotyczących:

  • niezgodności w dostępie do sieci LAN (uważasz, że określony dostęp nie powinien być traktowany jako dostęp do „sieci lokalnej”);
  • Błędy, w których dostęp do sieci LAN powinien być zablokowany, ale nie jest
  • Błędy, w których dostęp do sieci LAN jest blokowany, mimo że nie powinien

Ta zmiana nie powinna mieć wpływu na:

  • Dostęp do internetu
  • Sieć komórkowa