Berechtigung für das lokale Netzwerk

Auf Geräte in einem lokalen Netzwerk (LAN) kann von jeder App zugegriffen werden, die die Berechtigung INTERNET hat. Dadurch können Apps ganz einfach eine Verbindung zu lokalen Geräten herstellen. Dies hat jedoch auch Auswirkungen auf den Datenschutz, z. B. durch die Erstellung eines Fingerabdrucks des Nutzers und die Verwendung als Proxy für den Standort.

Das Projekt „Local Network Protections“ zielt darauf ab, die Privatsphäre des Nutzers zu schützen, indem der Zugriff auf das lokale Netzwerk durch eine neue Laufzeitberechtigung eingeschränkt wird.

Positiv beeinflussen

Unter Android 16 ist diese Berechtigung eine Opt-in-Funktion. Das bedeutet, dass nur die Apps betroffen sind, die sich für die Funktion anmelden. Das Ziel der Einwilligungserklärung ist, dass App-Entwickler nachvollziehen können, welche Teile ihrer App von einem impliziten Zugriff auf das lokale Netzwerk abhängen, damit sie sich darauf vorbereiten können, diese in einem zukünftigen Android-Release durch Berechtigungen zu schützen.

Apps sind betroffen, wenn sie über Folgendes auf das lokale Netzwerk des Nutzers zugreifen:

  • Direkte oder bibliotheksbasierte Verwendung von Raw Sockets für lokale Netzwerkadressen, z. B. Multicast DNS (mDNS) oder Simple Service Discovery Protocol (SSDP).
  • Verwendung von Klassen auf Framework-Ebene, die auf das lokale Netzwerk zugreifen, z. B. NsdManager.

Details zu den Auswirkungen

Für Traffic zu und von einer lokalen Netzwerkadresse ist die Berechtigung „Zugriff auf lokales Netzwerk“ erforderlich. In der folgenden Tabelle sind einige häufige Fälle aufgeführt:

Low-Level-Netzwerkbetrieb der App Berechtigung für das lokale Netzwerk erforderlich
Ausgehende TCP-Verbindung herstellen Ja
Eingehende TCP-Verbindung akzeptieren Ja
Senden eines UDP-Unicast, ‑Multicast oder ‑Broadcast Ja
Eingehendes UDP-Unicast, ‑Multicast oder ‑Broadcast empfangen Ja

Diese Einschränkungen sind tief im Netzwerk-Stack implementiert und gelten daher für alle Netzwerk-APIs. Dazu gehören Sockets, die in der Plattform oder im verwalteten Code erstellt wurden, Netzwerkbibliotheken wie Cronet und OkHttp sowie alle APIs, die darauf basieren. Wenn Sie versuchen, Dienste im lokalen Netzwerk aufzulösen, die das Suffix .local haben, ist die Berechtigung für das lokale Netzwerk erforderlich.

Ausnahmen von den vorhergehenden Regeln:

  • Wenn sich der DNS-Server eines Geräts in einem lokalen Netzwerk befindet, ist für den Traffic zu / von diesem Gerät (über Port 53) keine Berechtigung für den Zugriff auf das lokale Netzwerk erforderlich.
  • Anwendungen, die Output Switcher als In-App-Auswahl verwenden, benötigen keine Berechtigungen für das lokale Netzwerk. Weitere Informationen folgen in einer späteren Version.

Anleitung

So aktivieren Sie Einschränkungen für das lokale Netzwerk:

  1. Flashen Sie Ihr Gerät mit einem Build mit Android 16 Beta 3 oder höher.
  2. Zu testende App installieren
  3. AppCompat-Konfiguration mit „adb“ umschalten

    adb shell am compat enable RESTRICT_LOCAL_NETWORK <package_name>
    
  4. Gerät neu starten

Der Zugriff Ihrer App auf das lokale Netzwerk ist jetzt eingeschränkt und jeder Versuch, auf das lokale Netzwerk zuzugreifen, führt zu Socket-Fehlern. Wenn Sie APIs verwenden, die lokale Netzwerkoperationen außerhalb des App-Prozesses ausführen, z. B. NsdManager, sind diese während der Einwilligung nicht betroffen.

Um den Zugriff wiederherzustellen, müssen Sie Ihrer App die Berechtigung für NEARBY_WIFI_DEVICES erteilen.

  • Die App muss die Berechtigung NEARBY_WIFI_DEVICES in ihrer manifest deklarieren.
  • Gehen Sie zu Einstellungen > Apps > [Name der App] > Berechtigungen > Geräte in der Nähe > Zulassen.

Der Zugriff Ihrer App auf das lokale Netzwerk sollte jetzt wiederhergestellt sein und alle Ihre Szenarien sollten wie vor der Aktivierung der App funktionieren. So wirkt sich die Änderung auf den App-Netzwerktraffic aus.

Berechtigung Ausgehende LAN-Anfrage Ausgehende/eingehende Internetanfrage Eingehende LAN-Anfrage
Gewährt Microsoft Works Microsoft Works Microsoft Works
Nicht gewährt Pannen Microsoft Works Pannen

Verwenden Sie den folgenden Befehl, um die Appcompat-Konfiguration zu deaktivieren:

adb shell am compat disable RESTRICT_LOCAL_NETWORK <package_name>

Fehler

Fehler, die sich aus diesen Einschränkungen ergeben, werden an den aufrufenden Socket zurückgegeben, wenn er send oder eine send-Variante für eine lokale Netzwerkadresse aufruft.

Beispiele für Fehler:

sendto failed: EPERM (Operation not permitted)

sendto failed: ECONNABORTED (Operation not permitted)

Fehler

Fehler und Feedback können Sie für Folgendes einreichen:

  • Abweichungen beim LAN-Zugriff (Sie sind der Meinung, dass ein bestimmter Zugriff nicht als „Zugriff auf das lokale Netzwerk“ betrachtet werden sollte)
  • Fehler, bei denen der LAN-Zugriff blockiert werden sollte, es aber nicht wird
  • Fehler, bei denen der LAN-Zugriff blockiert wird, obwohl er nicht blockiert werden sollte

Folgendes sollte von dieser Änderung nicht betroffen sein:

  • Internetzugang
  • Mobilfunknetz