2 pontos por GN⁺ 2024-08-05 | 1 comentários | Compartilhar no WhatsApp
  • Alguns apps iOS ilegais de streaming foram projetados para passar pela revisão como apps normais e depois ativar funcionalidades ocultas; a análise do código confirmou bloqueio baseado em localização e um método de atualização remota
  • Apps distribuídos por diferentes contas de desenvolvedor compartilhavam a mesma base de código, e conseguiam alterar partes do app sem nova revisão da App Store usando React Native e o SDK Microsoft CodePush
  • Um app específico usava um repositório do GitHub e uma API de localização baseada em IP para verificar país, região, cidade e estimativas de longitude e latitude, e não exibia a interface oculta no ambiente de revisão da Apple
  • Ao esperar alguns segundos após a primeira execução antes de chamar a API de localização, o app evitava o processo de revisão automatizada; mesmo configurando um proxy para San Jose, California, a tela oculta não aparecia
  • A Apple pode reforçar testes de comportamento por localização e a remoção de apps fraudulentos, mas por enquanto apenas confirmou a remoção desses apps e não divulgou medidas concretas para impedir a aprovação de apps semelhantes

Estrutura que se comporta como outro app depois de passar pela revisão

  • O 9to5Mac abordou casos de vários apps iOS ilegais de streaming que enganaram a revisão da App Store para serem aprovados e, depois, confirmou por análise de código os detalhes do funcionamento dessa evasão
  • “Collect Cards” chegou ao topo do ranking de downloads de apps gratuitos da App Store em alguns países e foi removido pela Apple após a divulgação
  • Como várias versões do mesmo app voltaram depois à App Store, o método usado para enganar a equipe de revisão virou objeto de análise

Base de código comum e atualizações remotas

  • Os apps analisados foram distribuídos por diferentes contas de desenvolvedor, mas compartilhavam a mesma base de código
  • Os apps foram criados com React Native, framework multiplataforma baseado em JavaScript
  • Com o CodePush SDK da Microsoft, é possível atualizar partes de um app sem enviar uma nova build à App Store
  • O uso de React Native e CodePush em si não viola as regras da App Store, e muitos apps populares também usam essa abordagem
  • Desenvolvedores maliciosos usam essa tecnologia legítima de atualização para contornar a revisão da App Store

Identificação do ambiente de revisão da Apple por localização

  • Um dos apps analisados apontava para um repositório no GitHub que parecia fornecer arquivos para vários apps ilegais de streaming
  • O app usava uma API específica para verificar a localização do dispositivo com base no endereço IP
    • A API retorna dados como país, região, cidade e estimativas de longitude e latitude
  • Quando o app é aberto pela primeira vez, ele espera alguns segundos antes de chamar a API de localização
    • Por causa desse atraso, o comportamento anômalo no código do app não é revelado durante o processo de revisão automatizada da App Store
  • O 9to5Mac usou um proxy para simular a localização em San Jose, California, e verificar o comportamento do app
    • Nessa localização, o app nunca exibiu a interface oculta

Exibição da interface real após a aprovação

  • Depois que a Apple aprova um app que mostra apenas funcionalidades básicas, o desenvolvedor atualiza o app com o conteúdo desejado usando CodePush
  • O app exibe a interface real apenas em locais “seguros”
  • Nessa estrutura, o comportamento do app pode ser diferente no ambiente da Apple durante a revisão e no ambiente de usuários comuns

Desafios de resposta deixados para a Apple

  • A Apple pode melhorar o processo de revisão com testes adicionais para verificar como um app se comporta em diferentes localizações
  • Também é necessária uma resposta para encontrar e remover apps fraudulentos da App Store de forma mais ativa
  • Em 2017, a Uber foi acusada de ter usado uma “geofence” voltada à sede da Apple em Cupertino
    • A alegação era que, quando o app era executado nessa localização, o código usado para coletar impressões digitais de usuários e rastreá-los pela web era automaticamente desativado
  • Segundo documentos de 2021, a equipe de App Store Review conta com mais de 500 especialistas humanos que analisam mais de 100.000 apps por semana
    • Mesmo assim, a maioria dos apps passa por um processo de revisão automatizada que verifica violações das diretrizes da App Store antes da análise manual
  • Um porta-voz da Apple afirmou que, após a divulgação do caso, esses apps foram removidos da App Store, mas não forneceu detalhes sobre as medidas da empresa para impedir a aprovação de apps semelhantes

1 comentários

 
GN⁺ 2024-08-05
Comentários do Hacker News
  • Mesmo que a Apple impeça a burla de restrições regionais, ainda é muito fácil esconder o comportamento

    1. O app envia o número da build ao servidor por uma chamada de API
    2. A resposta da API controla se a funcionalidade oculta será ativada
    3. A funcionalidade oculta só é ligada depois que cada build passa pela revisão
    4. Vantagem?
      Não é preciso nenhum código dinâmico nem código interpretado, e há variações suficientes disso que, no fim, parece se reduzir ao problema da parada, tornando impossível decidir
    • Exato. No fim, esse tipo de abordagem parecida com uma bomba lógica não pode ser impedida, é só um jogo de gato e rato
      É preciso haver formas de responder fora das medidas técnicas. Por exemplo, pessoas realmente distribuídas poderiam testar apps via crowdsourcing para encontrar comportamento malicioso
    • Os itens 1 a 3 também podem ser substituídos por um app verificando sua própria página de listagem na App Store
      De forma mais geral, a checagem de atualização, isto é, verificar se existe uma nova versão, também pode ser usada para verificar ao mesmo tempo “esta versão ainda está em revisão do app?”
    • Um dos motivos pelos quais a Apple faz algum nível de diligência no onboarding de desenvolvedores e na assinatura dos contratos é para poder tomar medidas legais de forma confiável contra desenvolvedores que abusam do sistema
      A possibilidade de ser expulso do ecossistema da Apple App Store ou sofrer retaliação legal é uma das formas de desestimular comportamentos indesejados que não podem ser bloqueados tecnicamente
    • Acho que a IA logo vai chegar perto de um ponto em que será impossível distinguir usuários sintéticos de usuários reais. Para mitigar as técnicas acima e outras mencionadas neste tópico, a Apple provavelmente vai migrar bem rápido o processo de revisão para algo altamente automatizado e contínuo
      No fim, será preciso usar mais pressão do ecossistema e dos governos para garantir que os termos sejam razoáveis e justos. Porque burlar os termos vai se tornar quase impossível. Acho esses hacks inteligentes, mas não parecem algo que vá durar muito
  • Se você tem curiosidade sobre a redação da Apple em relação a atualizações dinâmicas como CodePush, está aqui: https://github.com/microsoft/react-native-code-push#store-gu...
    “Código executável
    Exceto nos casos especificados no próximo parágrafo, um aplicativo não pode baixar nem instalar código executável. Código interpretado pode ser baixado para um aplicativo, mas esse código não pode (a) mudar o propósito principal do aplicativo ao fornecer recursos ou funcionalidades que sejam inconsistentes com o propósito pretendido e anunciado do aplicativo enviado à App Store, (b) criar uma loja ou vitrine para outros códigos ou aplicativos, nem (c) contornar a assinatura, o sandbox ou outros recursos de segurança do sistema operacional.”

    • Pelo menos em jogos live service, quase 100% deles baixam regularmente novo código interpretado no mobile, e isso na prática equivale a contornar a revisão da app store
      Parece haver um acordo entre as empresas de jogos e Google/Apple: em troca de contornar a revisão, as receitas bilionárias de loot boxes continuam fluindo
    • Nesse ponto, isso parece, na prática, uma regra bem aberta para apps que no fim mantêm quase o mesmo propósito e não diferem tanto na abordagem
      Um dos conjuntos de recursos mais notáveis é a forma como muitos apps cobram assinaturas fora do sistema de pagamentos murado da Apple. Isso acontece porque o trabalho real do app não é feito só no dispositivo, mas também na nuvem. Há vantagens em dividir o app entre um app local básico e trabalho adicional na nuvem, mas, à medida que o hardware dos dispositivos melhora, fica cada vez mais atraente ver o que dá para fazer localmente
      Se a estrutura de alto nível do app for clara o bastante, os detalhes que a preenchem podem ser acrescentados depois
      Há muito tempo gosto de coisas como SDUI, que permitem uma geração de interface mais dinâmica com base em preferência do usuário, padrão de uso etc.
      A abordagem de criar software para fluxos de trabalho fixos está ficando cada vez mais antiquada. Seja por exigências que mudam a cada fase de lockdown da pandemia, seja por uma personalização real da experiência do usuário, software com mentalidade fixa está sendo substituído por software que exige flexibilidade
  • Quando precisei fazer passar um comportamento que a Apple não gostava, usei um truque baseado em tempo
    Vinte dias depois do envio do app, o comportamento de um botão mudava para fazer a caixa de diálogo “abrir arquivo” ir direto para o diretório raiz do usuário

    • Fiz exatamente a mesma coisa em um dos meus apps. Era um app privado, que precisava de código de login para ser usado, mas a Apple queria testar todas as funcionalidades. Então coloquei algumas telas falsas no app, e essas telas nem sequer faziam chamadas de API
      Coloquei um timer de 2 semanas e, depois disso, o app começava a fazer o comportamento real, inclusive com chamadas de API
      A revisão de apps da Apple é uma piada completa
    • Bom. Isso mostra o quão inútil é o processo de validação de apps
      Provavelmente também daria para encontrar um jeito de identificar o sistema dos revisores como uma impressão digital e esconder funcionalidades diretamente deles
  • Como observação lateral, a esmagadora maioria dos apps fraudulentos parece tirar dinheiro das pessoas com assinaturas semanais recorrentes
    Um passe de 1 semana não recorrente pode ter utilidade. Por exemplo, um app de VPN por 1 semana durante uma viagem. Mas cobrança semanal recorrente deveria exigir aprovação manual. Nem todo app deveria poder cobrar recorrência semanal

  • Chamar apps piratas de maliciosos parece um exagero. Deixei passar alguma coisa, ou este artigo foi escrito pelo detentor dos direitos autorais?

    • Ao contrário, se apps piratas conseguem fazer isso, então malware obviamente também consegue. E acho que a Apple se importa mais com pirataria do que com malware de verdade
      Dito isso, os apps no topo da receita já são apps fraudulentos, e pelo que me lembro sempre foram, então isso nem é exatamente novidade
  • “Segundo um documento divulgado em 2021, a equipe de App Store Review tem mais de 500 especialistas humanos que analisam mais de 100 mil apps por semana.”
    Ignorando a redação ambígua dessa frase, e assumindo que os revisores gastam 100% do expediente fazendo revisão e seguem uma semana de trabalho padrão, isso dá cerca de 12 minutos por app

    • No mesmo ano, 2021, a receita total da Apple App Store foi de US$ 85 bilhões
      Infelizmente, parece que a pobre Apple não tem condições de contratar revisores suficientes para garantir um processo de revisão minimamente significativo para todos os apps e pagar adequadamente trabalhadores em condições decentes. Imagino que eles devam estar correndo atrás de cotas semanais de apps a revisar
      Então por que mesmo a Apple merece ficar com 30% de novo?
  • Existem canais/grupos no Telegram com milhares de pessoas esperando para usar o app até que a Apple tome providências, caso o app mais recente sobreviva e passe pela revisão da App Store
    Também existe um mercado de certificados de assinatura e de vagas em máquinas de desenvolvedor da Apple, então quem tem mais conhecimento técnico pode assinar o IPA por conta própria e instalá-lo

  • Os EUA precisam desesperadamente de uma lei como a DMA. Não deveria ser permitido que uma empresa mantenha mais de 60% dos usuários americanos presos na questão de instalar os apps que querem usar
    Da mesma forma, não deveria ser permitido que Apple e Google, duas empresas, fiquem com 15% a 30% de toda a receita gerada no mercado de apps móveis

    • Concordo com a direção, mas acho que a perspectiva é mais centrada no desenvolvedor do que no usuário
      Primeiro, esses 60% escolheram o iOS. Não são “reféns”; podem ir embora. E isso também não é um comportamento novo, existe desde o lançamento do iPhone. Os consumidores estão votando a favor disso [1]
      Segundo, como o Google não controla o que os usuários instalam, por definição ele não fica com uma parte de “toda a receita”. E como a maior parte do valor gerado por apps móveis acontece em outros lugares [2], até o número da Apple não está correto
      Como desenvolvedor, é claro que eu gostaria de ter acesso irrestrito ao dispositivo do usuário e executar o código que eu quiser. Infelizmente, alguns desenvolvedores querem esse acesso por motivos prejudiciais ao consumidor. É por isso que os desenvolvedores tentam explorar o sistema como se fosse um jogo, e apps honestos acabam sendo rejeitados
      Mas é preciso entender que os usuários querem esse acesso selecionado e estão votando a favor disso, não contra
      [1] Dá para discutir isso no caso de mensageiros, mas aí é um problema de mensageiros, não de apps
      [2] Quase todos os apps que eu instalo são gratuitos. As empresas que os criam ganham receita em outras partes do sistema. Nós também temos um “app gratuito” integrado ao produto, e as pessoas pagam por esse produto
    • Você leu o artigo? Esta é a história de como a Uber burlou a revisão para rastrear usuários contra as regras da Apple e contra a vontade dos usuários. Ou de como outros apps fizeram isso para distribuir software pirata
    • A posição da Apple/Google também parece bastante contraditória
      Por um lado, cada uma assume para si o papel de guardiã em sua respectiva loja e ambas afirmam manter o usuário final seguro
      Por outro, quando um app problemático é muito lucrativo ou está relacionado às suas inúmeras outras linhas de produtos, elas se permitem aplicar as regras de forma seletiva
      Quem vigia os vigilantes?
    • Para tornar o argumento mais convincente, seria bom acrescentar ideias sobre como proteger os usuários de software malicioso
      Qual é o plano para isso?
    • Concordo, mas não entendo muito bem o que isso tem a ver com o artigo
  • Apps de streaming ilegal”?
    Achei que o artigo seria sobre como fazer um app de lanterna permitir uma assinatura de US$ 50 por mês

  • Muitos apps são apenas uma WebView exibindo uma página remota
    Toda vez que o servidor atualiza a página, o app também é atualizado, sem precisar de revisão