2 puntos por GN⁺ 2024-08-05 | 1 comentarios | Compartir por WhatsApp
  • Algunas apps ilegales de streaming para iOS fueron diseñadas para pasar la revisión como si fueran apps normales y luego activar funciones ocultas; el análisis del código confirmó bloqueo basado en ubicación y un mecanismo de actualizaciones remotas
  • Apps distribuidas desde distintas cuentas de desarrollador compartían la misma base de código, y con React Native y Microsoft CodePush SDK podían modificar partes de la app sin volver a pasar por la revisión de la App Store
  • Una app específica usaba un repositorio de GitHub y una API de ubicación basada en IP para comprobar país, región, ciudad y coordenadas estimadas de longitud y latitud, y no mostraba la interfaz oculta en el entorno de revisión de Apple
  • Al esperar unos segundos después del primer inicio antes de llamar a la API de ubicación, evitaba el proceso de revisión automática; incluso configurando un proxy con ubicación en San Jose, California, la pantalla oculta no aparecía
  • Apple puede reforzar las pruebas de comportamiento por ubicación y la eliminación de apps fraudulentas, pero por ahora solo informó que eliminó esas apps y no reveló medidas concretas para impedir la aprobación de apps similares

Estructura que funciona como otra app después de pasar la revisión

  • 9to5Mac cubrió casos de varias apps ilegales de streaming para iOS que engañaron la revisión de la App Store para obtener aprobación, y luego confirmó mediante análisis de código los detalles de cómo funcionaba la evasión
  • “Collect Cards” llegó a estar entre las apps gratuitas más descargadas de la App Store en algunos países y Apple la eliminó después de que se hiciera pública
  • Más tarde, varias versiones de la misma app volvieron a aparecer en la App Store, lo que hizo que el método para engañar al equipo de revisión se convirtiera en objeto de análisis

Base de código común y actualizaciones remotas

  • Las apps analizadas fueron distribuidas desde distintas cuentas de desarrollador, pero compartían la misma base de código
  • Las apps estaban creadas con React Native, un framework multiplataforma basado en JavaScript
  • Usar CodePush SDK de Microsoft permite actualizar partes de una app sin enviar una nueva build a la App Store
  • El uso de React Native y CodePush en sí no infringe las reglas de la App Store, y muchas apps populares también usan este enfoque
  • Los desarrolladores maliciosos aprovecharon esta tecnología de actualización legítima para evadir la revisión de la App Store

Detectar el entorno de revisión de Apple por ubicación

  • Una de las apps analizadas apuntaba a un repositorio de GitHub que parece proporcionar archivos para varias apps ilegales de streaming
  • Esa app usa una API específica para verificar la ubicación del dispositivo según la dirección IP
    • La API devuelve datos como país, región, ciudad y coordenadas estimadas de longitud y latitud
  • Cuando la app se abre por primera vez, espera unos segundos antes de llamar a la API de ubicación
    • Por este retraso, el proceso de revisión automática de la App Store no expone comportamientos anómalos en el código de la app
  • 9to5Mac usó un proxy para simular que la ubicación era San Jose, California, y verificar el comportamiento de la app
    • En esa ubicación, la app nunca mostró la interfaz oculta

Mostrar la interfaz real después de la aprobación

  • Después de que Apple aprueba una app que solo muestra funciones básicas, el desarrollador actualiza el contenido que quiere en la app mediante CodePush
  • La app solo muestra la interfaz real en ubicaciones “seguras”
  • Con esta estructura, el comportamiento de la app puede ser distinto en el entorno de Apple durante la revisión y en el entorno de usuarios comunes

Las tareas pendientes de Apple para responder

  • Apple puede mejorar el proceso de revisión con pruebas adicionales que verifiquen cómo se comporta una app en distintas ubicaciones
  • También necesita una respuesta más activa para encontrar y eliminar apps fraudulentas de la App Store
  • En 2017, Uber fue acusada de haber usado un “geofence” dirigido a la sede de Apple en Cupertino
    • La acusación decía que, si la app se ejecutaba en esa ubicación, se desactivaba automáticamente el código usado para recopilar huellas digitales de usuarios y rastrearlos en la web
  • Según documentos de 2021, el equipo de App Store Review cuenta con más de 500 especialistas humanos que revisan más de 100,000 apps por semana
    • Aun así, la mayoría de las apps pasan por un proceso de revisión automática que verifica posibles infracciones de las guías de la App Store antes de la revisión manual
  • Un vocero de Apple afirmó que, después de la publicación relacionada, esas apps fueron eliminadas de la App Store, pero no ofreció detalles sobre las medidas de la empresa para impedir la aprobación de apps similares

1 comentarios

 
GN⁺ 2024-08-05
Comentarios de Hacker News
  • Aunque Apple bloquee la evasión de restricciones regionales, esconder el comportamiento es muy fácil

    1. La app envía el número de compilación al servidor mediante una llamada API
    2. La respuesta de la API controla si se activa la función oculta
    3. La función oculta solo se activa después de que cada compilación pase la revisión
    4. ¿Ganancia?
      No hace falta nada de código dinámico ni código interpretado, y parece haber suficientes variaciones de esto como para que al final se reduzca al problema de la parada y sea imposible decidirlo
    • Exacto. Al final, este tipo de enfoque tipo bomba lógica no se puede impedir, y no deja de ser un juego del gato y el ratón
      Tiene que haber una forma de responder fuera de las medidas técnicas. Por ejemplo, personas realmente distribuidas probando apps mediante crowdsourcing para encontrar comportamientos maliciosos
    • Los puntos 1~3 también podrían sustituirse por una forma en la que la app revise su propia página de listado en el App Store
      Más en general, la función de buscar actualizaciones, es decir, revisar si hay una nueva versión, también puede usarse al mismo tiempo para verificar “¿esta versión sigue en revisión de la app?”
    • Una de las razones por las que Apple hace cierto nivel de diligencia debida durante el onboarding de desarrolladores y la firma de contratos es para poder tomar acciones legales de forma confiable contra desarrolladores que abusen del sistema
      La posibilidad de ser expulsado del ecosistema del Apple App Store o enfrentar represalias legales es una de las maneras de desalentar comportamientos no deseados que técnicamente no se pueden bloquear
    • Parece que la IA pronto se acercará al punto en que no podrá distinguir entre usuarios sintéticos y usuarios reales. Para mitigar las técnicas de arriba y otras de este hilo, Apple probablemente moverá muy rápido el proceso de revisión hacia una forma muy automatizada y continua
      Al final, habrá que aprovechar más la presión del ecosistema y de los gobiernos para que los términos sean razonables y justos. Porque hackear los términos va a volverse casi imposible. Creo que estos hacks son ingeniosos, pero no parece que vayan a durar mucho
  • Si te da curiosidad la redacción de Apple sobre las actualizaciones dinámicas como CodePush, está aquí: https://github.com/microsoft/react-native-code-push#store-gu...
    “Código ejecutable
    Excepto en los casos especificados en el siguiente párrafo, una aplicación no puede descargar ni instalar código ejecutable. El código interpretado puede descargarse en una aplicación, pero dicho código no debe (a) cambiar el propósito principal de la aplicación al ofrecer funciones que no sean consistentes con el propósito previsto y anunciado de la aplicación enviada al App Store, (b) crear una tienda o marketplace para otro código u otras aplicaciones, ni (c) eludir la firma, el sandbox u otras funciones de seguridad del sistema operativo.”

    • Al menos en los juegos como servicio en vivo, casi el 100% descarga regularmente nuevo código interpretado en móvil, y eso en la práctica equivale a saltarse por completo la revisión de la app store
      Parece como si hubiera un acuerdo entre las desarrolladoras de juegos y Google/Apple: a cambio de saltarse la revisión, que sigan fluyendo las ventas multimillonarias de loot boxes
    • A este nivel, en la práctica se siente como una norma bastante abierta para apps que al final mantienen casi el mismo propósito y no difieren mucho en el enfoque
      Uno de los conjuntos de funciones más notorios es la manera en que muchas apps cobran suscripciones fuera del sistema de pagos cercado de Apple. Porque el trabajo real de la app no ocurre solo dentro del dispositivo, sino también en la nube. Dividir una app entre una app local básica y trabajo adicional en la nube tiene ventajas, pero conforme mejora el rendimiento del dispositivo, se vuelve cada vez más atractivo ver qué se puede hacer localmente
      Si la estructura de alto nivel de una app está lo bastante clara, los detalles que la llenan pueden completarse después
      Desde hace mucho me gustan cosas como SDUI, que permiten generar interfaces más dinámicas según las preferencias del usuario, los patrones de uso y demás
      El enfoque de crear software para flujos de trabajo fijos se está volviendo cada vez más anticuado. Ya sea por requisitos que cambian en cada etapa de un confinamiento pandémico o por una verdadera personalización de la experiencia del usuario, el software de mentalidad fija está siendo reemplazado por software que necesita flexibilidad
  • Cuando tuve que hacer pasar comportamientos que a Apple no le gustaban, usé un truco basado en tiempo
    20 días después de enviar la app, el comportamiento de un botón cambiaba para hacer que el cuadro de diálogo de “abrir archivo” fuera directo al directorio raíz del usuario

    • Hice exactamente lo mismo en una de mis apps. Es una app privada y necesitas código de inicio de sesión para usarla, pero Apple quería probar todas las funciones. Así que metí unas cuantas pantallas falsas en la app, y esas pantallas ni siquiera hacían llamadas API
      Puse un temporizador de 2 semanas y, después de eso, la app empezaba a comportarse de verdad, incluyendo llamadas API
      La revisión de apps de Apple es una completa broma
    • Bien. Muestra lo inútil que es el proceso de validación de apps
      Probablemente también sería posible encontrar una manera de identificar los sistemas de los revisores como si fueran una huella digital y ocultarles funciones directamente solo a ellos
  • Como tema aparte, la abrumadora mayoría de las apps fraudulentas parece sacarle dinero a la gente con suscripciones semanales recurrentes
    Un pase de 1 semana no recurrente podría tener utilidad. Por ejemplo, una app de VPN por 1 semana durante un viaje. Pero los cobros recurrentes semanales deberían requerir aprobación manual. No se debería permitir que todas las apps cobren semanalmente de forma recurrente

  • Llamar maliciosa a una app pirateada me parece exagerado. ¿Me perdí de algo o este artículo lo escribió el titular de los derechos de autor?

    • Al contrario, si una app pirateada puede hacer esto, entonces el malware obviamente también puede hacerlo. Y creo que a Apple le preocupa más la piratería que el malware real
      Dicho eso, las apps top en ingresos ya son apps fraudulentas, y por lo que recuerdo siempre lo han sido, así que tampoco es algo nuevo
  • “Según documentos publicados en 2021, el equipo de App Store Review tiene más de 500 expertos humanos que revisan más de 100 mil apps cada semana.”
    Ignorando la redacción ambigua de esta frase, y asumiendo que los revisores dedican el 100% de su horario laboral a revisar y siguen una semana laboral estándar, eso da unos 12 minutos por app

    • Ese mismo año, en 2021, los ingresos totales del Apple App Store fueron de 85 mil millones de dólares
      Lástima que la pobre Apple al parecer no tenga margen para contratar suficientes revisores adicionales que garanticen un proceso de revisión significativo para todas las apps y paguen lo suficiente a trabajadores con condiciones laborales decentes. Seguro deben andar corriendo detrás de la cuota semanal de apps que tienen que revisar
      Entonces, ¿por qué exactamente Apple merece volver a quedarse con el 30%?
  • Existen canales/grupos de Telegram con miles de personas esperando usar la app más reciente mientras siga viva tras pasar la revisión de la App Store, hasta que Apple tome medidas
    También hay mercado para certificados de firma y puestos en máquinas de desarrollador de Apple, así que la gente con más conocimientos técnicos puede firmar un IPA por su cuenta e instalarlo

  • En EE. UU. hace muchísima falta una ley como la DMA. No debería permitirse que una sola empresa mantenga atrapado a más del 60% de los usuarios de EE. UU. cuando se trata de instalar las apps que quieren usar
    Del mismo modo, tampoco debería permitirse que Apple y Google, entre las dos, se queden con el 15–30% de todos los ingresos generados en todo el mercado de apps móviles

    • Estoy de acuerdo con la dirección, pero creo que la perspectiva está más centrada en los desarrolladores que en los usuarios
      Primero, ese 60% eligió iOS. No son “rehenes”; pueden irse. Y esto tampoco es un comportamiento nuevo: existe desde el lanzamiento del iPhone. Los consumidores están votando a favor de esto [1]
      Segundo, como Google no controla lo que instala el usuario, por definición no se queda con una parte de “todos los ingresos”. Además, la mayor parte del valor generado por las apps móviles surge en otros lugares [2], así que ni siquiera la cifra de Apple es exacta
      Como desarrollador, por supuesto que quieres acceso total al dispositivo del usuario para ejecutar el código que quieras. Por desgracia, algunos desarrolladores quieren ese acceso por razones perjudiciales para el consumidor. Por eso los desarrolladores intentan jugarle al sistema, y las apps honestas terminan rechazadas
      Pero hay que entender que los usuarios sí quieren este acceso curado/seleccionado, y están votando a favor, no en contra
      [1] Se puede debatir el tema de la mensajería, pero eso es un problema de mensajería, no de apps
      [2] Casi todas las apps que instalo son gratis. Las empresas que las hacen obtienen ingresos en otras partes del sistema. Nosotros también tenemos una “app gratis” vinculada a nuestro producto, y la gente paga por ese producto
    • ¿Leíste el artículo? Esto trata de cómo Uber eludió la revisión para rastrear a los usuarios en contra de las reglas de Apple y de la voluntad de los usuarios. O de cómo otras apps hicieron esto para distribuir software pirateado
    • La postura de Apple/Google también parece bastante contradictoria
      Por un lado, cada una asume el papel de portero/guardián en su propia tienda, y ambas afirman proteger la seguridad del usuario final
      Por otro, se reservan la flexibilidad de aplicar las reglas de forma selectiva si la app problemática es muy rentable o está relacionada con alguna de sus muchas otras líneas de producto
      ¿Quién vigila a los vigilantes?
    • Para que el argumento resulte más convincente, estaría bien sumar también ideas sobre cómo proteger a los usuarios del software malicioso
      ¿Cuál es el plan para eso?
    • Estoy de acuerdo, pero no veo muy bien qué relación tiene eso con el artículo
  • ¿“App de streaming ilegal”?
    Pensé que era un artículo sobre cómo lograr que aprobaran una suscripción de 50 dólares al mes para una app de linterna

  • Muchísimas apps son solo un WebView que muestra una página web remota
    La app se actualiza cada vez que el servidor actualiza la página, y no hace falta revisión