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)
oderSimple 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:
- Flashen Sie Ihr Gerät mit einem Build mit Android 16 Beta 3 oder höher.
- Zu testende App installieren
AppCompat-Konfiguration mit „adb“ umschalten
adb shell am compat enable RESTRICT_LOCAL_NETWORK <package_name>
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 ihrermanifest
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