Reglen var enkel: filtrer kun trafik, mens telefonen var på kontorets Wi-Fi. Den holdt i månedsvis, og så en morgen sad telefonen på samme SSID med samme nøgleikon, og filtreringen var stoppet. Intet ved netværket havde ændret sig; det, der havde ændret sig, var, om appen kunne se netværkets navn. På Android er «hvilket Wi-Fi er jeg på» og «bloker denne trafik» to separate opgaver, og en firewall, der blander dem sammen, svigter åbent præcis når navnet bliver utilgængeligt.

Symptomet: identiteten forsvinder, og politikken følger efter

En SSID-regel læser en værdi og vælger derefter en gren. Når læsningen ikke returnerer noget brugbart, må koden gøre noget, og standardvalget er ofte «ikke det forventede netværk, så filtrer ikke». Det gør et tilladelsesproblem til en trafiklækage. Nøgleikonet forbliver synligt, fordi VPN-tjenesten stadig kører; den håndhæver bare en anden gren.

Se på rækkefølgen af begivenheder i stedet for på netværket. En afvist tilladelsesdialog, en systemopdatering, der flyttede SSID-adgang bag en anden tilladelse, slukkede lokalitetstjenester eller en ændret politik for arbejdsprofilen kan alle give samme resultat, mens telefonen bliver på samme adgangspunkt.

Hvorfor navnet kan komme tilbage som ukendt

WifiInfo.getSSID() returnerer tjenestesæt-identifikatoren for det aktuelle netværk, og Android dokumenterer, at adgang til lokalitetsfølsomme felter afhænger af tilladelse. Når adgangen ikke er tilgængelig, returnerer kaldet UNKNOWN_SSID i stedet for at fejle højlydt. En tom eller ukendt værdi er derfor ikke bevis for, at telefonen har forladt Wi-Fi; det er bevis for, at appen ikke kan klassificere netværket.

To kontroller skiller tilfældene. Bekræft, at telefonen er tilknyttet, og se, hvad systemet rapporterer, og bekræft derefter, at appen faktisk har den tilladelse, den har brug for på denne Android-udgivelse:

adb shell cmd wifi status
adb shell dumpsys package <your.app> | grep -i -E "ACCESS_FINE_LOCATION|NEARBY_WIFI_DEVICES"

Hvis statuslinjen viser et tilsluttet netværk, mens appen ser et ukendt navn, har du et tilladelses- eller API-niveauproblem, ikke et Wi-Fi-problem. Ret det, før du rører ved firewallreglerne, fordi hver regel længere nede vurderes mod en værdi, appen ikke kan læse.

Hvor filtreringen faktisk kører

En lokal Android-firewall bruger normalt VpnService-modellen uden at sende trafik til en fjernserver: den tager det virtuelle interface, anvender sine egne regler og videresender det, den tillader. Platformen tillader én aktiv VPN-tjeneste pr. brugerprofil, og en anden erstatter den første i stedet for at stable oven på den. En separat firewall-app og en separat arbejds-VPN udgør derfor ikke en to-trins kæde; en af dem vinder.

Det betyder noget for en SSID-regel, fordi håndhævelsespunktet og observationspunktet er forskellige komponenter. VpnService beslutter, hvad der forlader enheden; Wi-Fi-API’et leverer kun en etiket. En app kan håndhæve korrekt og klassificere forkert, og det er præcis fejlen i denne artikel.

Giv det ukendte sin egen politik

Behandl netværksidentiteten som tre tilstande, og skriv politikken for hver af dem ned, før du sender reglen. Den tredje tilstand er den, der bliver glemt, og det er den, en angriber eller en fejlkonfiguration placerer dig i.

ObservationPolicy to specify
Expected SSID is readableThe explicit filtering policy you designed
A different SSID is readableThe default policy for untrusted networks
Unknown, changing or unreadableFail closed until classification is reliable

At svigte lukket betyder, at den ukendte tilstand arver den strengeste fornuftige politik i stedet for den mest bekvemme. Hvis det gør telefonen ubrugelig på et nyt netværk, er den rigtige løsning en bevidst, synlig undtagelse, ikke en tavs tillidsbeslutning skjult i et tjek for tom værdi.

Et velkendt SSID er en etiket, ikke bevis for netværksoperatøren. Enhver kan køre et adgangspunkt med kontorets navn, så et navnematch bør aldrig være det eneste, der står mellem en følsom session og et utroværdigt segment.

Test overgangene, ikke steady state

Test i steady state består på det netværk, hvor du byggede reglen. Fejlene lever i overgangene: nægtet tilladelse, Wi-Fi til mobilnet, et SSID til et andet, VPN-tjenesten genstartet og en anden VPN-app, der overtager interfacet. For hver af dem skal du beslutte, om eksisterende forbindelser genvurderes, og om beskyttet trafik forbliver blokeret, mens tilstanden er ukendt.

Skriv resultatet som tre sætninger: den observerede betingelse, den komponent der håndhæver beslutningen, og den bevidste fallback. Hvis en af de tre mangler, er reglen endnu ikke en politik; det er et gæt, der tilfældigvis virker på kontorets netværk.

Relaterede artikler