1 puntos por GN⁺ 2023-12-22 | 3 comentarios | Compartir por WhatsApp
  • La API HotspotHelper, disponible desde iOS 9, puede permitir que las apps reciban información sobre puntos de acceso WiFi cercanos, lo que la convierte en una posible vía para rastrear la ubicación sin consentimiento del usuario
  • Las apps pueden leer el SSID y BSSID de las redes cercanas desde callbacks registrados y enviarlos al servidor para usarlos en lógica de estimación de ubicación
  • Como la mayoría de los puntos de acceso WiFi son fijos, al combinar esta información con servicios públicos como Precisely o Google Geolocation API es posible hacer estimación de ubicación basada en WiFi
  • Este comportamiento no ocurre solo mientras se manipula la pantalla de configuración; también puede suceder cuando el dispositivo escanea redes WiFi cercanas mientras está bloqueado, y el usuario no tiene forma de saberlo ni de desactivarlo
  • Apps de gran alcance como WeChat y Alipay también implementan esta función, lo que ha llevado a exigir que Apple ofrezca una opción explícita de permitir/rechazar como ocurre con los permisos de ubicación o notificaciones

Información WiFi que expone la API HotspotHelper

  • Apple ofrece la API HotspotHelper desde iOS 9, permitiendo que las apps soliciten funciones para ayudar al sistema a conectarse a puntos de acceso WiFi
  • El código de ejemplo muestra el flujo en el que una app recibe información de redes WiFi mediante NEHotspotHelper.register
    • Obtiene la lista de redes cercanas desde command.networkList
    • Lee network.ssid y network.bssid de cada red
    • Puede pasar esos valores a lógica de rastreo de ubicación como trackLocation(withSSID:andMACAddress:)
  • Aunque su propósito original puede haber sido facilitar conexiones fluidas, las apps también pueden usar el SSID y BSSID recibidos como datos para rastrear la ubicación

Una vía para estimar la ubicación sin consentimiento del usuario

  • La información de puntos de acceso WiFi cercanos puede servir como referencia para estimar la ubicación del usuario
    • La mayoría de los puntos de acceso WiFi no se mueven después de ser instalados
    • Con la lista de puntos de acceso cercanos, se puede triangular o estimar la ubicación actual del usuario
  • Algunos ejemplos de API públicas son Precisely Location By Wi-fi Access Point y Google's Geolocation API
  • Esta función no se activa solo cuando el usuario manipula explícitamente la pantalla de configuración
    • La app registrada puede ejecutarse cuando el dispositivo escanea puntos de acceso WiFi cercanos
    • Esto incluye cuando el dispositivo está bloqueado y dentro del bolsillo del usuario
  • La app puede obtener SSID y direcciones MAC cercanos y enviarlos al servidor, y si el desarrollador lo desea, es posible hacer un rastreo de ubicación casi en tiempo real
  • Al usuario le resulta difícil saber en pantalla si este proceso está ocurriendo, y tampoco existe una opción para desactivarlo

Los casos de WeChat y Alipay

  • WeChat y Alipay son señaladas como apps importantes que ya implementan esta función
  • Ambas apps se usan masivamente en China continental e intervienen en múltiples áreas de la vida cotidiana
  • Si en apps tan extendidas aparece la posibilidad de rastrear la ubicación sin consentimiento del usuario, el alcance del impacto se amplía
  • Incluso si el objetivo de recolectar datos fuera mejorar la experiencia de usuario o ayudar con la conexión a WiFi cercanas, la lógica del lado del servidor sigue siendo opaca, por lo que persisten problemas de transparencia y rendición de cuentas

La respuesta de Apple y el modelo de permisos necesario

  • Este problema fue descubierto hace unos 2 años y compartido en Bilibili mediante un video, pero su notoriedad pública fue limitada
  • La preocupación también fue comunicada a Apple y se recibió una respuesta por correo electrónico, pero después no hubo más actualizaciones
  • Apple debería ofrecer una opción para desactivar esta función, igual que en la configuración de privacidad para datos personales como ubicación y notificaciones
  • Antes de que una app acceda a esta función, debería pedir permiso explícitamente, y el usuario debería poder permitir o rechazar el acceso mientras usa la app
  • HotspotHelper sigue siendo un punto polémico entre las promesas de privacidad de Apple y la protección de los datos de los usuarios

3 comentarios

 
GN⁺ 2023-12-22
Opiniones en Hacker News
  • Al ver la documentación enlazada, esta API parece estar pensada para que las apps creadas por propietarios de hotspots WiFi ayuden a los usuarios a conectarse a esos hotspots: https://developer.apple.com/documentation/networkextension/h...
    NEHotspotHelper permite que una app participe en el proceso de autenticación de una red Wi‑Fi en la que el usuario debe interactuar con la red para acceder a Internet en general, es decir, una red de hotspot
    También dice que solo es útil para la integración con hotspots, que tiene restricciones técnicas y comerciales para otros usos como integración de accesorios o ubicación basada en Wi‑Fi, y que antes de usarla se requiere la aprobación de Apple para el entitlement especial com.apple.developer.networking.HotspotHelper
    Entonces la pregunta es por qué se les concedió este permiso a apps como WeChat o Alipay

    • No sé en el caso de Alipay, pero WeChat parece necesitar esta función por WeChat Wifi, que permite a los usuarios conectarse a hotspots de Internet con su cuenta de WeChat: https://mp.weixin.qq.com/s?__biz=MzI1NjA0NzQzOQ==∣=265026...
    • Incluso si el permiso se concede solo a apps de hotspots reales, no es un diseño fácil de usar y centrado en la privacidad
      El uso de una API así debería mostrar un diálogo de permiso visible para el usuario antes de que la app reciba notificaciones en segundo plano, y el usuario debería poder elegir entre “permitir una vez, permitir mientras se usa, permitir en segundo plano, no permitir”
      La actividad de la app también debería aparecer en el informe de privacidad de apps
    • Probablemente sea porque el mercado chino es demasiado importante
      WeChat es una “superapp” y puede argumentar que también se usa para conectarse a hotspots Wi‑Fi, pero en el caso de Alipay no se me ocurre una explicación clara
    • Parece que las apps de VPN también usan esta función: https://github.com/pia-foss/mobile-ios/blob/4618b55161ec5b8b...
    • En algunos casos enumerados por Apple, parece que este permiso no es necesario: https://developer.apple.com/forums/thread/679038
      1. Si la app usa la API CoreLocation y obtuvo la aprobación del usuario para acceder a su ubicación precisa. Como ya recibe la ubicación precisa, parece inofensivo
      2. Si la app configuró la red Wi‑Fi actual con la API NEHotspotConfiguration. Esto parece ser justo lo que entra en el alcance de este artículo
      3. Si la app tiene instalada una configuración VPN activa. Esto es bastante sorprendente
      4. Si la app tiene instalada una configuración activa de NEDNSSettingsManager. No sé exactamente qué es, pero parece similar a lo de VPN
  • Como referencia, para usar esta API se necesita un entitlement especial, y solo se puede obtener solicitándolo a Apple y justificando el propósito de uso
    No es una API general que pueda usar cualquier app

    • No consuela mucho. Según el artículo, Apple les dio ese permiso a WeChat y Alipay
      Claro, son “superapps” y los servicios de hotspots Wi‑Fi podrían ser una de las funciones que ofrecen, pero por eso mismo debería ser un permiso que el usuario pueda conceder, como el “acceso a la red local”
      Si no me interesa la función de hotspot, no quiero que la app tenga esa capacidad
    • La mayoría de los permisos muestran un aviso de privacidad para que el usuario pueda desactivar la función
      Sin probar directamente una app de prueba, no sé si este permiso también lo hace, pero creo que debería pedir autorización al usuario
    • Si Facebook, Instagram, Messenger, o Alipay y WeChat mencionadas en el artículo, tienen este permiso y hacen algo sospechoso, podría convertirse en un gran problema de privacidad
      Me pregunto si Apple analiza el uso del permiso y lo revoca cuando hay abuso
      De forma similar, recuerdo que durante el “escándalo” de la VPN de Facebook, Apple revocó el certificado de firma empresarial de Facebook
    • No sé si esto es mejor o peor
      Suena como: “no te preocupes, ni tú ni yo podemos abusar de esto; solo pueden hacerlo las grandes empresas y los recolectores de datos
    • Entonces, al final, ¿solo las apps grandes pueden espiar a los usuarios?
      Parece que el autor se preocupa por WeChat y Alipay porque es chino, pero me pregunto qué pasará con Facebook y Google
  • Pensaba que los usuarios ya recibían un aviso para permitir este permiso
    Hoy en día, muchas apps preguntan si permites el acceso a la “red local”, y yo lo entiendo como la capacidad de ver hotspots Wi‑Fi locales, así que casi siempre lo rechazo
    Después de leer este artículo, también lo desactivé en Spotify
    Pero como la mayoría de los usuarios no sabe que con esta información se puede inferir la ubicación, el cuadro de diálogo de permisos necesita mejorar

    • Como desarrollador, hay razones por las que el permiso de “red local” es molesto
      Primero, la implementación es torpe. A diferencia de otros permisos, no hay forma de mostrar explícitamente el aviso; aparece de repente cuando Apple lo considera adecuado
      Aunque sea necesario para una función clave, no hay forma de guiar al usuario de manera natural, ni de comprobar si el permiso fue concedido
      Segundo, y más importante, las propias apps de Apple no muestran esta advertencia, así que las condiciones de competencia son injustas
      AirPlay y otras funciones operan sin fricción, pero las tecnologías competidoras no, y como los desarrolladores no pueden saber el estado del permiso, la experiencia de usuario empeora
      Si Apple introduce restricciones, también debería aplicarlas a sus propias apps. AirPlay y AirDrop deberían pedir acceso a Bluetooth y a la red local, respectivamente; la app Fotos debería mostrar al abrirse el aviso de “seleccionar fotos, permitir todas, rechazar”; y la app Cámara tampoco debería poder escribir en la fototeca sin el mismo aviso
      Así Apple tendría incentivos para diseñar bien la experiencia de usuario alrededor de estas restricciones, y buscaría soluciones más creativas en vez de cuadros de diálogo confusos
      Ahora no tiene incentivos para diseñarlo bien. Cualquier desarrollador de iOS que haya trabajado con estas API sabe que el diseño es pésimo por restricciones arbitrarias e inesperadas
    • Ese permiso es para enviar y recibir tráfico de red local, como comunicarse con dispositivos en la misma subred o encontrar destinos como Chromecast
      AirPlay no necesita este permiso
    • Lo entiendo como la posibilidad de escanear la LAN, y quizá hasta una tailnet, para encontrar servicios como un puente Hue, bocinas Sonos o Chromecast
  • Documentación: https://developer.apple.com/documentation/technotes/tn3111-i...
    La revisión bloqueará pequeñas apps de spam, pero como dijeron el autor y otras personas, no creo que pueda frenar a los grandes jugadores

    • Al ver la documentación, se confirma que esta llamada a la API requiere permiso
      Pero sigue sin quedar claro si, cuando existe el permiso, aparece un aviso que permita al usuario rechazar el uso de la API
  • ¿Habrá alguna forma de comprobar qué apps populares usan esto?
    Como la mayoría aquí, no tengo instaladas WeChat ni Alipay, pero me dan curiosidad apps como Instagram, Facebook, WhatsApp, Twitter, TikTok, Snapchat, Chrome, Firefox, Photoshop y Lightroom

    • Siento que repito lo mismo, pero la App Store debería permitir ver antes de instalar qué permisos pedirá una app
      No debería ser necesario descargar e instalar una app solo para ver qué acciones intentará realizar
      La App Store ya conoce esta información, y mostrarla en los detalles de la app antes de la descarga debería ser muy sencillo
  • También habría que hablar del problema de que iOS/macOS encienden los dispositivos inalámbricos Wi‑Fi y Bluetooth con cada actualización del sistema
    A diferencia de la canción de cuna que cuenta marketing, parecen dispositivos diseñados a propósito para maximizar la vigilancia

    • Visto con la navaja de Hanlon, puede que Apple simplemente sea floja y deje estas configuraciones activadas por defecto
      Como el 99% de la gente las usa o las necesita, parece que optaron por no rastrear el estado de la configuración, y a Apple también le gustan los teclados y mouse Bluetooth
    • Esto es realmente molesto
  • Ahora me dio curiosidad. ¿Qué otras apps tendrán este permiso?
    ¿Habrá alguna forma de averiguar cuáles de las apps instaladas en mi teléfono tienen este permiso?

  • Es uno de los grandes problemas de una plataforma completamente cerrada
    La garantía de que el dueño de la plataforma respeta la privacidad e impide abusos de terceros, al final, no es más que una promesa de meñique

    • Ese punto de vista puede estar equivocado. Nadie espera que Apple sea perfecta
      La seguridad de las plataformas de cómputo ya es difícil de por sí, y la privacidad en particular está definida culturalmente de forma mucho más ambigua que la seguridad informática común, que se define por eludir controles de acceso técnicos
      La clave es si Apple intenta actuar como curador que controla el ecosistema
      En el pasado, cuando Uber hizo cosas sospechosas, Apple incluso jugó una partida de gallina para obligarla a detenerse
      Por supuesto, con Alipay y WeChat puede ser más difícil para Apple, porque el mercado chino es enorme y muy importante para su éxito actual
      Será interesante ver cómo se adapta Apple a esto en los próximos años
      Las plataformas abiertas también tienen estos problemas, y quizá dependen todavía más de promesas de meñique
      Si no quieres decir que “si este problema no se va a resolver, entonces prefiero una plataforma abierta”, no me queda claro cuál es el punto
      El problema con esa lógica es que esto es solo un caso de falla entre muchos problemas, y podría resolverse más adelante; en cambio, las plataformas abiertas tienen este problema junto con muchos otros problemas sin resolver
  • Escuché quejas de que este título es exagerado, y si alguien propone un título mejor, más preciso y neutral, se puede cambiar

    • “Las apps de iOS con permisos especiales pueden rastrear usuarios mediante escaneo de SSID” parece describirlo mejor
      No estoy totalmente seguro, pero después de leer el artículo, el título actual no se siente tan claramente verdadero
    • Creo que el título actual también está bien
  • Para usar NEHotspotHelper se requiere un permiso especial que hay que solicitar, com.apple.developer.networking.HotspotHelper, y Apple probablemente no lo otorgue si la app no tiene una necesidad legítima
    Sin embargo, esto parece mostrar la incompatibilidad entre la estrategia de privacidad de Apple y las superapps como WeChat y Alipay
    Cuando una empresa mete todas las funciones en una sola app, esa app de pronto tiene todos los permisos, y se vuelve difícil saber cuándo y cómo se usan los datos sensibles
    En Occidente normalmente no se crean apps de esa manera. Por ejemplo, Comcast tiene una app separada llamada “WiFi Hotspots”
    Curiosamente, hace dos días publicaron que integrarían esa función en la app principal de Xfinity, así que quizá Occidente también se esté poniendo al día

    • ¿Hay alguna forma de que el usuario final vea qué apps tienen este permiso?
    • Facebook también es una superapp. Durante años tuvo dentro de la app una función para buscar hotspots Wi-Fi
    • De verdad odio que, apenas abres una app, te lluevan solicitudes para acceder a la cámara, el micrófono, los contactos, etc.
      Las rechazo de inmediato, y si por eso se rompe la funcionalidad de la app, también borro la app
      También me niego a que Google Maps siga insistiendo en que active los servicios de ubicación precisa, me pregunte si estoy navegando en vez de ir a ver a un amigo, y me pida permitir acceso a mis contactos
    • ¿Dónde se puede revocar com.apple.developer.networking.HotspotHelper en iOS?
      ¿Es en Configuración → Privacidad y seguridad → Red local, o en otra sección?
    • Entonces, al final, ¿Apple decide qué empresas pueden tener mis datos de ubicación? Qué maravilla
 
ndrgrd 2023-12-23

La empresa que vende la privacidad como punto de venta, por detrás, les roba a los usuarios las notificaciones y la información de ubicación.

 
joyfui 2023-12-22

Pensé que no era posible recibir alertas de subida y bajada del metro porque esa función estaba bloqueada, pero resulta que ya existía. Entonces, ¿por qué solo no funciona en el iPhone...?