- 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
Comentários do Hacker News
Mesmo que a Apple impeça a burla de restrições regionais, ainda é muito fácil esconder o comportamento
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
É 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
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?”
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
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.”
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
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
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
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?
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
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
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
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?
Qual é o plano para isso?
“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