- A API HotspotHelper, disponível desde o iOS 9, permite que apps recebam informações de pontos de acesso Wi-Fi próximos, o que pode se tornar um caminho para rastreamento de localização sem consentimento do usuário
- O app pode ler o SSID e o BSSID das redes próximas em um callback registrado e enviá-los a um servidor para uso em lógica de estimativa de localização
- Como a maioria dos pontos de acesso Wi-Fi é fixa, a combinação com serviços públicos como Precisely ou Google Geolocation API permite estimativa de localização baseada em Wi-Fi
- Esse comportamento não ocorre apenas durante a manipulação da tela de ajustes; também pode acontecer quando o dispositivo está bloqueado e escaneando redes Wi-Fi próximas, sem que o usuário saiba ou tenha como desativar
- Apps de grande alcance, como WeChat e Alipay, também implementaram esse recurso, levando a pedidos para que a Apple ofereça uma opção explícita de permitir/recusar, como faz com permissões de localização e notificações
Informações de Wi-Fi expostas pela API HotspotHelper
- Desde o iOS 9, a Apple oferece a API HotspotHelper, que permite que apps solicitem a funcionalidade de auxiliar o sistema na conexão a pontos de acesso Wi-Fi
- O código de exemplo mostra o fluxo em que um app recebe informações de redes Wi-Fi usando
NEHotspotHelper.register- Obtém a lista de redes próximas em
command.networkList - Lê
network.ssidenetwork.bssidde cada rede - Pode passar esses valores para uma lógica de rastreamento de localização como
trackLocation(withSSID:andMACAddress:)
- Obtém a lista de redes próximas em
- Embora o objetivo original possa ser oferecer suporte a uma conexão fluida, o app também pode usar os SSIDs e BSSIDs recebidos como dados de rastreamento de localização
Um caminho para estimar a localização sem consentimento do usuário
- Informações de pontos de acesso Wi-Fi próximos podem servir como pontos de referência para estimar a localização do usuário
- A maioria dos pontos de acesso Wi-Fi não se move depois de instalada
- É possível triangular ou estimar a localização atual do usuário usando a lista de pontos de acesso próximos
- Exemplos de APIs públicas incluem Precisely Location By Wi-fi Access Point e Google's Geolocation API
- Esse recurso não é ativado apenas quando o usuário manipula explicitamente a tela de ajustes
- Apps registrados podem ser executados quando o dispositivo escaneia pontos de acesso Wi-Fi próximos
- Isso inclui casos em que o dispositivo está bloqueado e no bolso do usuário
- O app pode obter SSIDs e endereços MAC próximos e enviá-los a um servidor; se o desenvolvedor quiser, é possível fazer rastreamento de localização quase em tempo real
- É difícil para o usuário saber, pela tela, que esse processo está acontecendo, e não há uma opção para desativar o recurso
Casos do WeChat e do Alipay
- WeChat e Alipay são citados como apps importantes que já implementaram esse recurso
- Os dois apps são extremamente usados na China continental e participam de várias áreas da vida das pessoas
- Quando surge a possibilidade de rastreamento de localização sem consentimento do usuário em apps tão amplamente usados, o alcance do impacto aumenta
- Mesmo que o objetivo da coleta de dados seja melhorar a experiência do usuário ou dar suporte à conexão a Wi-Fi próximo, a lógica do lado do servidor é opaca, deixando questões de transparência e responsabilização
Resposta da Apple e o modelo de permissões necessário
- O problema foi descoberto há cerca de 2 anos e compartilhado em um vídeo no Bilibili, mas sua visibilidade pública foi limitada
- As preocupações também foram comunicadas à Apple e houve uma resposta por e-mail, mas não houve novas atualizações depois disso
- A Apple deveria oferecer ao usuário uma opção para desativar esse recurso, assim como faz nas configurações de privacidade para localização e notificações
- Antes de acessar esse recurso, o app deveria solicitar permissão explicitamente, e o usuário deveria poder permitir ou negar o acesso durante o uso do app
- O HotspotHelper continua sendo um ponto controverso entre as promessas de privacidade da Apple e a proteção dos dados do usuário
3 comentários
Opiniões no Hacker News
Olhando a documentação vinculada, esta API parece destinada a ajudar apps criados por proprietários de hotspots Wi-Fi a conectar usuários a esses hotspots: https://developer.apple.com/documentation/networkextension/h...
NEHotspotHelperpermite que apps participem do processo de autenticação de redes Wi‑Fi nas quais o usuário precisa interagir com a rede para acessar a internet mais ampla, ou seja, redes de hotspotEla também diz que é útil apenas para integração com hotspots e que há restrições técnicas e comerciais para outros usos, como integração de acessórios ou localização baseada em Wi‑Fi, além de exigir, antes do uso, a aprovação pela Apple do entitlement especial
com.apple.developer.networking.HotspotHelperSendo assim, fica a dúvida de por que apps como WeChat ou Alipay receberam essa permissão
O uso desse tipo de API deveria exibir uma caixa de diálogo de permissão visível ao usuário antes de o app receber notificações em segundo plano, e o usuário deveria poder escolher entre “permitir uma vez, permitir durante o uso, permitir em segundo plano, não permitir”
A atividade do app também deveria aparecer no Relatório de Privacidade dos Apps
O WeChat é um “superapp” e ainda há algum espaço para argumentar que ele pode ser usado também para conexão a hotspots Wi‑Fi, mas não consigo pensar em uma boa explicação para o Alipay
CoreLocatione recebeu a autorização do usuário para acesso à localização precisa. Como ele já recebe a localização precisa, parece inofensivoNEHotspotConfiguration. Parece que o escopo deste artigo é exatamente este casoNEDNSSettingsManagerinstalada. Não sei exatamente o que é, mas parece semelhante ao caso de VPNPara referência, para usar esta API é preciso ter um entitlement especial, e só é possível obtê-lo solicitando à Apple e justificando a finalidade de uso
Não é uma API genérica que qualquer app possa usar
Claro, eles são “superapps” e serviços de hotspot Wi‑Fi podem ser uma das funcionalidades oferecidas, mas por isso mesmo deveria ser uma permissão que o usuário pudesse conceder, como “acesso à rede local”
Se eu não tenho interesse no recurso de hotspot, não quero que o app tenha essa capacidade
Sem testar diretamente o app de teste, não sei se essa permissão também funciona assim, mas acho que deveria pedir autorização do usuário
Fico curioso para saber se a Apple analisa o uso da permissão e a revoga em caso de abuso
De forma parecida, lembro que, durante o “escândalo” da VPN do Facebook, a Apple revogou o certificado de assinatura empresarial do Facebook
Soa como dizer: “não se preocupe, nem você nem eu podemos abusar disso; só grandes empresas e coletores de dados podem”
O autor parece se preocupar com WeChat e Alipay por ser chinês, mas fico curioso sobre como seria com Facebook e Google
Eu achava que os usuários já recebiam um prompt para permitir essa permissão
Hoje em dia, muitos apps perguntam se você quer permitir acesso à “rede local”, e eu entendo isso como a capacidade de ver hotspots Wi-Fi locais, então quase sempre nego
Depois de ler este texto, desativei isso também no Spotify
Mas a maioria dos usuários não sabe que essas informações podem ser usadas para inferir a localização, então a caixa de diálogo de permissão precisa ser melhorada
Primeiro, a implementação é malfeita. Ao contrário de outras permissões, não há uma forma de exibir explicitamente o prompt; ele aparece de repente quando a Apple acha adequado
Mesmo quando é necessário para uma funcionalidade essencial, não há como orientar o usuário de forma natural, nem como verificar se a permissão foi concedida
Segundo, e mais importante, os próprios apps da Apple não exibem esse aviso, o que torna as condições de concorrência injustas
O AirPlay e afins funcionam de forma fluida, mas tecnologias concorrentes não, e como o desenvolvedor não consegue saber o estado da permissão, a experiência do usuário piora
Se a Apple introduz restrições, deveria aplicá-las também aos seus próprios apps. AirPlay e AirDrop deveriam pedir acesso a Bluetooth e à rede local, respectivamente; o app Fotos deveria exibir, ao abrir, um prompt de “Selecionar fotos, Permitir todas, Negar”; e o app Câmera também não deveria gravar na biblioteca de fotos sem o mesmo prompt
Assim, a Apple teria incentivo para projetar corretamente a experiência do usuário em torno dessas restrições e buscaria soluções mais criativas em vez de caixas de diálogo confusas
Hoje não há incentivo para projetar bem. Qualquer desenvolvedor iOS que já lidou com essas APIs sabe que o design é péssimo por causa de restrições arbitrárias e inesperadas
O AirPlay não precisa dessa permissão
Documentação: https://developer.apple.com/documentation/technotes/tn3111-i...
A análise da App Store deve barrar pequenos apps de spam, mas, como o autor e outras pessoas disseram, não parece que vá barrar os grandes players
Mas ainda não está claro se, quando a permissão existe, aparece um prompt para o usuário poder recusar o uso da API
Será que há alguma forma de verificar quais apps populares usam isso?
Como a maioria aqui, não tenho WeChat nem Alipay instalados, mas tenho curiosidade sobre apps como Instagram, Facebook, WhatsApp, Twitter, TikTok, Snapchat, Chrome, Firefox, Photoshop e Lightroom
Não deveríamos ter que baixar e instalar um app para ver que comportamento ele vai tentar executar
A App Store já sabe essa informação, e mostrá-la nos detalhes do app antes do download seria muito fácil
Também precisamos falar do problema de o iOS/macOS ligar os dispositivos sem fio Wi-Fi e Bluetooth a cada atualização do sistema
Ao contrário da cantiga de ninar do marketing, parece um aparelho feito de propósito para maximizar a vigilância
Como 99% das pessoas usam ou precisam delas, parece que optaram por não rastrear o estado da configuração, e a Apple também gosta de teclado e mouse Bluetooth
Agora fiquei curioso. Que outros apps têm essa permissão?
Há alguma forma de descobrir quais apps instalados no meu celular têm essa permissão?
É um dos grandes problemas de uma plataforma totalmente fechada
A garantia de que o dono da plataforma respeita a privacidade e impede abusos de terceiros acaba sendo só uma promessa de dedo mindinho
Segurança de plataformas de computação é difícil por natureza, e privacidade, em especial, é definida de forma culturalmente muito mais nebulosa do que a segurança de computadores comum, que é definida por contornar controles técnicos de acesso
O ponto central é se a Apple está tentando exercer o papel de curadora que controla o ecossistema
No passado, quando a Uber fez coisas suspeitas, a Apple chegou a entrar em um jogo de frango para fazê-la parar
Claro que Alipay e WeChat podem ser mais difíceis para a Apple, já que o mercado chinês é enorme e importante para o sucesso atual dela
Vai ser interessante ver como a Apple vai se adaptar a isso nos próximos anos
Plataformas abertas também têm esse problema, e talvez dependam ainda mais de promessas de dedo mindinho
A menos que a ideia seja “se esse problema não vai ser resolvido, então é melhor uma plataforma aberta”, não entendo bem o argumento
O problema dessa lógica é que isso é apenas um caso de falha entre vários problemas e pode ser resolvido depois, enquanto plataformas abertas têm este problema junto com muitos outros que continuam sem solução
Ouvi reclamações de que este título é exagerado, e estou disposto a mudá-lo se houver uma sugestão de título melhor, mais precisa e neutra
Não tenho certeza, mas, depois de ler o texto, o título atual não soa muito como um fato
O uso de
NEHotspotHelperexige uma permissão especial que precisa ser solicitada,com.apple.developer.networking.HotspotHelper, e a Apple provavelmente não a concederá se o app não tiver uma necessidade legítimaMas isso parece mostrar a incompatibilidade entre a estratégia de privacidade da Apple e superapps como WeChat e Alipay
Quando uma empresa enfia todos os recursos em um único app, esse app de repente passa a ter todas as permissões, e fica difícil entender quando e como dados sensíveis são usados
No Ocidente, apps geralmente não são feitos dessa forma. Por exemplo, a Comcast tem um app separado chamado “WiFi Hotspots”
Curiosamente, há dois dias ela publicou que vai incorporar esse recurso ao app principal Xfinity, então talvez o Ocidente também esteja chegando lá
Eu nego na hora e, se com isso os recursos do app quebrarem, apago o app junto
Também recuso quando o Google Maps fica insistindo para eu ativar serviços de localização precisa, pergunta se estou navegando em vez de encontrar amigos e pede para permitir acesso aos contatos
com.apple.developer.networking.HotspotHelperno iOS?Ajustes → Privacidade e Segurança → Rede Local, ou é em outro item?
A empresa que vende privacidade como diferencial, por trás, está desviando notificações dos usuários e informações de localização.
Eu achava que, como aquela função era bloqueada antes, não dava para ter alertas de embarque e desembarque no metrô, mas pelo visto a função já existia. Então por que só no iPhone não funciona...