1 pontos por GN⁺ 2023-12-22 | 3 comentários | Compartilhar no WhatsApp
  • 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
    • network.ssid e network.bssid de cada rede
    • Pode passar esses valores para uma lógica de rastreamento de localização como trackLocation(withSSID:andMACAddress:)
  • 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

 
GN⁺ 2023-12-22
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...
    NEHotspotHelper permite 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 hotspot
    Ela 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.HotspotHelper
    Sendo assim, fica a dúvida de por que apps como WeChat ou Alipay receberam essa permissão

    • Não sei quanto ao Alipay, mas o WeChat parece precisar desse recurso por causa do WeChat Wifi, que permite que usuários acessem hotspots de internet com a conta do WeChat: https://mp.weixin.qq.com/s?__biz=MzI1NjA0NzQzOQ==∣=265026...
    • Mesmo que a permissão seja concedida apenas a apps de hotspot de verdade, isso não é um design amigável ao usuário e com privacidade em primeiro lugar
      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
    • Deve ser porque o mercado chinês é importante demais
      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
    • Apps de VPN também parecem usar esse recurso: https://github.com/pia-foss/mobile-ios/blob/4618b55161ec5b8b...
    • Em alguns casos listados pela Apple, parece que essa permissão não é necessária: https://developer.apple.com/forums/thread/679038
      1. Quando o app usa a API CoreLocation e recebeu a autorização do usuário para acesso à localização precisa. Como ele já recebe a localização precisa, parece inofensivo
      2. Quando o app configurou a rede Wi‑Fi atual usando a API NEHotspotConfiguration. Parece que o escopo deste artigo é exatamente este caso
      3. Quando o app tem uma configuração de VPN ativa instalada. Isso é bem surpreendente
      4. Quando o app tem uma configuração ativa de NEDNSSettingsManager instalada. Não sei exatamente o que é, mas parece semelhante ao caso de VPN
  • Para 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

    • Isso não consola muito. Segundo o texto, a Apple deu essa permissão ao WeChat e ao Alipay
      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
    • A maioria das permissões exibe um prompt de privacidade para que o usuário possa desativar o recurso
      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
    • Se Facebook, Instagram, Messenger ou os mencionados Alipay e WeChat tiverem essa permissão e fizerem algo suspeito, isso pode se tornar um grande problema de privacidade
      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
    • Não sei se isso é melhor ou pior
      Soa como dizer: “não se preocupe, nem você nem eu podemos abusar disso; só grandes empresas e coletores de dados podem”
    • Então, no fim, só apps grandes podem espionar os usuários?
      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

    • Do ponto de vista de desenvolvedor, há um motivo para a permissão de “rede local” ser irritante
      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
    • Essa permissão serve para enviar e receber tráfego de rede local, como comunicar-se com dispositivos na mesma sub-rede ou encontrar destinos como Chromecast
      O AirPlay não precisa dessa permissão
    • Eu entendo isso como varrer a LAN, talvez até a tailnet, para encontrar serviços como bridges Hue, alto-falantes Sonos e Chromecast
  • 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

    • Pela documentação, fica confirmado que chamar essa API exige permissão
      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

    • Parece que estou repetindo a mesma coisa, mas a App Store deveria permitir ver antes da instalação quais permissões um app vai solicitar
      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

    • Pela navalha de Hanlon, pode ser que a Apple esteja simplesmente sendo preguiçosa ao deixar essas configurações ativadas por padrão
      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
    • Isso é realmente irritante
  • 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

    • Esse ponto de vista pode estar errado. Ninguém espera que a Apple seja perfeita
      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

    • “Apps iOS com permissões especiais podem rastrear usuários por meio de varredura de SSIDs” parece descrever melhor
      Não tenho certeza, mas, depois de ler o texto, o título atual não soa muito como um fato
    • Acho que o título atual também está bom
  • O uso de NEHotspotHelper exige 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ítima
    Mas 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á

    • Há alguma forma de o usuário final ver quais apps têm essa permissão?
    • O Facebook também é um superapp. Durante anos teve dentro do app um recurso de encontrar hotspots Wi-Fi
    • Odeio quando, assim que abro um app, aparece uma enxurrada de pedidos para acessar câmera, microfone, contatos etc.
      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
    • Onde é possível revogar com.apple.developer.networking.HotspotHelper no iOS?
      Ajustes → Privacidade e Segurança → Rede Local, ou é em outro item?
    • Então, no fim das contas, é a Apple que decide quais empresas podem ter meus dados de localização. Legal
 
ndrgrd 2023-12-23

A empresa que vende privacidade como diferencial, por trás, está desviando notificações dos usuários e informações de localização.

 
joyfui 2023-12-22

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...