paint-brush
Revelando vulnerabilidades de segurança em aplicativos móveispor@induction
1,539 leituras
1,539 leituras

Revelando vulnerabilidades de segurança em aplicativos móveis

por Vision NP13m2023/06/01
Read on Terminal Reader

Muito longo; Para ler

Os aplicativos móveis enfrentam vários problemas de segurança e são suscetíveis a diferentes tipos de ataques devido ao uso generalizado e aos dados valiosos com os quais lidam. Como as técnicas de desenvolvimento de aplicativos estão evoluindo com novas estruturas e metodologias, os invasores também estão constantemente desenvolvendo suas técnicas. Apesar de preferir as melhores práticas, às vezes os bugs em aplicativos móveis podem passar despercebidos por muito tempo. As plataformas como Android e iOS exibiram historicamente riscos de segurança significativos para aplicativos móveis.
featured image - Revelando vulnerabilidades de segurança em aplicativos móveis
Vision NP HackerNoon profile picture
0-item
1-item

No cenário digital de hoje, os dispositivos móveis estão desempenhando um papel importante em tornar nossas vidas mais fáceis.


Como os processos de desenvolvimento de aplicativos evoluem constantemente, garantir a segurança de qualquer tipo de aplicativo móvel, como híbrido, blockchain ou nativo, é de suma importância. Os aplicativos móveis geralmente lidam com dados confidenciais do usuário e interagem com vários serviços de rede que podem torná-los alvos potenciais de ataques mal-intencionados.


Às vezes, um simples erro em um código permite que invasores roubem dados confidenciais do usuário, por isso é muito importante investir tempo ao desenvolver um aplicativo móvel.

Então, pessoal, não vamos apressar o processo de codificação ou desenvolvimento de aplicativos como um touro em uma loja de porcelana😁.


Mas, às vezes, apesar de nossos melhores esforços, esses erros incômodos simplesmente não recuam. Não tema! Este artigo está aqui para resgatá-lo com uma coleção de soluções de depuração que farão esses bugs persistentes tremerem em suas botas virtuais.


📥Os principais fatores que tornam os aplicativos móveis vulneráveis a ataques:

Apesar de manter as melhores práticas, às vezes, bugs em aplicativos móveis podem passar despercebidos por muito tempo. Os aplicativos móveis enfrentam vários problemas de segurança e são suscetíveis a diferentes tipos de ataques devido ao uso generalizado e aos dados valiosos com os quais lidam. Como as técnicas de desenvolvimento de aplicativos estão evoluindo com novas estruturas e metodologias, os invasores também estão constantemente desenvolvendo suas técnicas.


À medida que os desenvolvedores de aplicativos móveis se esforçam para criar aplicativos inovadores e ricos em recursos, invasores ou cibercriminosos aproveitam a oportunidade para explorar vulnerabilidades e adaptar suas estratégias para atingir esses avanços.


⬇️Bugs nos sistemas operacionais (OS):

Esse é o fator mais crucial que potencialmente permite que invasores roubem dados de aplicativos obtendo acesso não autorizado a sistemas de aplicativos móveis. Plataformas como Android e iOS têm historicamente apresentado riscos de segurança significativos para aplicativos móveis. Portanto, apenas concentrar-se no desenvolvimento de aplicativos e nas técnicas de depuração sem se manter atualizado nas plataformas nas quais você está desenvolvendo um aplicativo móvel se mostra menos eficaz na resolução de problemas de segurança.


Aqui estão alguns incidentes notáveis:


⚠️ Stagefright (Android):

O vulnerabilidade Stagefright foi descoberto em 2015, afetando milhões de dispositivos Android ao permitir que invasores explorassem falhas no mecanismo de reprodução de mídia. Naquela época, os invasores usavam vários métodos, incluindo arquivos multimídia maliciosos e mensagens MMS especialmente criadas, para executar códigos remotos nos dispositivos e aplicativos infectados.


⚠️ XcodeGhost (iOS):

Em 2015, uma versão maliciosa do ambiente de desenvolvimento Xcode da Apple, XcodeGhost , foi distribuído na China. O XcodeGhost permitia que os invasores injetassem e propagassem códigos maliciosos em aplicativos iOS criados usando a versão comprometida do Xcode.


⚠️ Dirty COW (Linux Kernel):

O Vulnerabilidade COW suja foi descoberto pela primeira vez em 2016 e afetou vários sistemas baseados em Linux, incluindo dispositivos Android. Os invasores o usaram para obter acesso por escrito não autorizado a mapeamentos de memória somente leitura no kernel do Linux, permitindo que aumentassem privilégios e executassem códigos arbitrários.


⚠️ StrandHogg 2.0 (Android):

A vulnerabilidade foi nomeada StrandHogg 2.0 devido a semelhanças com a vulnerabilidade StrandHogg anterior e.

Fonte: Promon See More


⚠️Bug que mostrava que o WhatsApp estava acessando o microfone (Android):

Este é o incidente mais recente que aconteceu em 2023 com o Android quando um bug de segurança foi descoberto no Android que resultou em indicadores de privacidade incorretos e notificações no painel de privacidade. Esse bug permitia que o WhatsApp acessasse o microfone do aparelho mesmo quando o app não estava em uso. A falha comprometeu a privacidade do usuário e levantou preocupações sobre gravação de áudio não autorizada.


✅Como depurar seu aplicativo

A depuração de um aplicativo quando o sistema operacional (SO) subjacente, como o Android ou o próprio iOS, apresenta bugs, pode ser um desafio. No entanto, aqui estão algumas estratégias que podem ajudá-lo a navegar nessa situação:


  • Reproduza e isole o problema para confirmar se os bugs persistem no sistema operacional ou em seu aplicativo.
  • Tente realizar uma pesquisa para saber se o relatório de bug publicado nos sites/fóruns do fornecedor do sistema operacional ou em outros recursos corresponde ao seu caso. Se houver soluções alternativas ou correções temporárias fornecidas pelo fornecedor do sistema operacional ou pela comunidade, será útil corrigir os bugs imediatamente como uma solução principal.
  • É uma maneira muito eficaz de analisar logs e relatórios de travamento para detectar os bugs, portanto, mantenha informações sobre o erro ou comportamento inesperado e procure padrões ou pistas que possam ajudá-lo a identificar a causa do problema. Preste atenção a quaisquer mensagens de erro ou rastreamentos de pilha que possam indicar problemas relacionados ao sistema operacional.
  • Se o bug aparecer na versão específica do sistema operacional, tente testar seu aplicativo em versões diferentes para determinar se é um novo problema produzido devido à atualização recente do sistema operacional.
  • Para relatar um bug do sistema operacional, entre em contato com os canais ou fóruns de suporte ao desenvolvedor do fornecedor do sistema operacional. Forneça informações detalhadas, como etapas de reprodução de bugs, logs e relatórios de falhas, que podem aumentar a conscientização e agilizar a resolução de problemas.
  • Implemente soluções temporárias em seu aplicativo para evitar o impacto do bug do sistema operacional. Isso pode incluir a desativação de determinados recursos do aplicativo ou a modificação do comportamento do aplicativo para evitar cenários problemáticos. Comunique essas soluções alternativas claramente aos usuários do aplicativo até que uma correção permanente esteja disponível.
  • Esteja atualizado com as atualizações do sistema operacional e relatórios de patches.


⬇️Autenticação fraca:

Mecanismos de autenticação mal gerenciados ou implementados, como senhas fracas ou falta de autenticação multifator (MFA), podem tornar os aplicativos móveis vulneráveis a acesso não autorizado (conhecido como ataque de autenticação), permitindo que invasores entrem em contas de usuário ou se façam passar por usuários legítimos.


✅Técnicas de Prevenção:

Para garantir a autenticação segura de aplicativos móveis, siga estas diretrizes:


  • Combine os requisitos de autenticação de aplicativos móveis com suas contrapartes da web, garantindo fatores de autenticação iguais ou mais fortes para usuários móveis.
  • Desencoraje o uso de números PIN de 4 dígitos ou números adivinháveis, como DOB, para senhas de autenticação.
  • Evite autenticação de usuário local porque pode levar a vulnerabilidades de desvio do lado do cliente, especialmente em dispositivos com jailbreak.
  • Quando a autenticação off-line for necessária, execute as solicitações de autenticação no lado do servidor e carregue os dados do aplicativo no dispositivo somente após a autenticação bem-sucedida.
  • Se for necessário o armazenamento de dados do lado do cliente, criptografe os dados usando uma chave de criptografia derivada com segurança das credenciais de login do usuário. Isso evita o acesso não autorizado aos dados armazenados.
  • Implemente autenticação persistente (Lembre-se de mim) usando tokens de autenticação específicos do dispositivo que podem ser revogados pelo usuário, protegendo contra acesso não autorizado de dispositivos perdidos ou roubados.
  • Evite usar valores falsificáveis, como identificadores de dispositivo ou geolocalização para autenticação do usuário.
  • Torne a opção de autenticação persistente em vez de habilitada por padrão em aplicativos móveis.


⬇️ Criptografia de dados insuficiente e armazenamento de dados inseguro:

Um mecanismo de criptografia mal gerenciado para dados confidenciais armazenados no aplicativo ou durante a transmissão os deixa vulneráveis à interceptação, pois os invasores podem explorar essa fraqueza para acessar e manipular informações confidenciais do usuário. Além disso, o processo de armazenamento de dados confidenciais sem medidas de segurança adequadas aumenta o risco de violação de dados.


✅Técnicas de Prevenção:


  • Use algoritmos de criptografia fortes como AES (Advanced Encryption Standard) para proteger os dados confidenciais do usuário. Por exemplo, criptografar senhas de usuário usando um algoritmo de hash forte, como bcrypt ou PBKDF2, garante que, mesmo que as senhas armazenadas sejam comprometidas, sejam extremamente difíceis de descriptografar.
  • Armazene informações confidenciais com segurança usando mecanismos de armazenamento seguro específicos da plataforma, por exemplo, você pode utilizar os serviços de Chaveiro no iOS fornecidos pelo sistema operacional para armazenar com segurança as credenciais do usuário e outros dados confidenciais. No Android, o Android Keystore System oferece um recurso de armazenamento seguro.
  • A comunicação insegura com configurações SSL/TLS fracas leva a vários ataques baseados em rede, como ataques Man-in-the-Middle (MitM), em que um invasor intercepta e altera a comunicação e ataques distribuídos de negação de serviço (DDoS), que sobrecarregam os servidores do aplicativo com uma enxurrada de solicitações, causando interrupção do serviço. Implemente protocolos como HTTPS (HTTP Secure) para criptografar dados transmitidos entre o aplicativo móvel e o servidor, por exemplo, um aplicativo de comércio eletrônico que transmite detalhes de pagamento do cliente com segurança por HTTPS garante a confidencialidade de informações financeiras confidenciais.
  • Para evitar a perda de dados em caso de roubo ou perda do dispositivo, você pode habilitar a funcionalidade de limpeza remota para permitir que usuários ou administradores apaguem dados confidenciais armazenados no dispositivo remotamente. Além disso, imponha a criptografia completa do dispositivo que pode proteger os dados mesmo se o dispositivo cair em mãos não autorizadas.


⬇️Vulnerabilidades em bibliotecas de terceiros:

Aplicativos móveis frequentemente utilizam bibliotecas e estruturas de terceiros para auxiliar no processo de desenvolvimento do aplicativo. No entanto, se esses tipos de bibliotecas tiverem vulnerabilidades de segurança conhecidas ou não forem atualizadas regularmente, elas podem se tornar pontos de entrada para os invasores explorarem e comprometerem a segurança do aplicativo por meio de acesso ilegal ao sistema do aplicativo.


✅Técnicas de Prevenção:

Para evitar vulnerabilidades em bibliotecas de terceiros em aplicativos móveis, atualize as bibliotecas para a versão mais recente. Por exemplo, a atualização regular de bibliotecas populares, como Retrofit ou Firebase SDK, garante que quaisquer vulnerabilidades de segurança relatadas sejam resolvidas imediatamente.


⬇️Validação de entrada inadequada:

A validação insuficiente das entradas do usuário pode levar a várias vulnerabilidades de segurança (como injeção de SQL ou ataques de script entre sites (XSS) ). Os invasores podem explorar essas vulnerabilidades para manipular o comportamento do aplicativo a seu favor para obter acesso não autorizado ou injetar código malicioso.


✅Técnicas de Prevenção:

Os desenvolvedores devem implementar sanitização de entrada estrita, consultas parametrizadas, codificação de saída e técnicas de lista branca. A validação de expressão regular e uma combinação de validação do lado do cliente e do lado do servidor devem ser empregadas para evitar os problemas.


⬇️Falta de gerenciamento seguro de sessão:

Sessões mal gerenciadas de um aplicativo podem deixar os aplicativos móveis vulneráveis a ataques de sequestro ou fixação de sessão. Os invasores podem usar manipulação de sessão fraca para obter acesso não autorizado.


✅Técnicas de Prevenção:

Prefira as seguintes etapas para evitar problemas persistentes:

  • Implementar geração de token de sessão forte,
  • Defina tempos de expiração de sessão apropriados,
  • Armazene os dados da sessão com segurança,
  • Utilizar protocolos de comunicação seguros,
  • Regenerar tokens de sessão na autenticação e
  • Aplique mecanismos fortes de controle de acesso.


⬇️Ofuscação de código e engenharia reversa:

Os aplicativos móveis que não possuem técnicas de ofuscação de código são vulneráveis à engenharia reversa, onde os invasores podem analisar e entender o código-fonte do aplicativo. Isso expõe possíveis falhas de segurança ou o buraco de minhoca do aplicativo para permitir que invasores os explorem para fins maliciosos, como modificar aplicativos legítimos, reempacotá-los com cargas de malware e distribuí-los por meio de lojas de aplicativos não oficiais ou sites maliciosos.


Aqui estão alguns incidentes notáveis a serem considerados:


⚠️Pokémon GO:

Em 2016, o Pokémon GO , um popular jogo de realidade aumentada, enfrentou problemas relacionados à engenharia reversa de código. Os invasores fizeram engenharia reversa do código do aplicativo para desenvolver aplicativos de terceiros não autorizados que forneciam vantagens injustas, como falsificação de GPS e jogabilidade automatizada.


⚠️BankBot e Acecard:

Vários cavalos de Tróia bancários móveis, como BankBot e Acecard, exploraram a engenharia reversa de código para comprometer aplicativos financeiros. realizar transações fraudulentas.


✅Técnicas de Prevenção:

Você pode seguir as técnicas praticamente muito eficazes para impedir que hackers façam engenharia reversa de seus aplicativos.


👉🏿Em muitos casos, os aplicativos móveis são distribuídos principalmente por meio de plataformas oficiais como o Google PlayStore ou lojas específicas de plataformas integradas, como GalaxyStore no caso de dispositivos Samsung. Ao utilizar isso, os desenvolvedores podem implementar uma verificação para verificar a fonte de instalação do aplicativo e restringir sua funcionalidade se não for instalado por meio da plataforma autorizada. Isso pode ser obtido utilizando uma biblioteca ou implementando uma solução personalizada que verifique a fonte de instalação e imponha restrições de acordo e implemente fortes criptografias de banco de dados.


👉🏿Técnicas como renomear variáveis e métodos, remover informações de depuração e adicionar trechos de código fictícios podem ajudar a evitar tentativas de engenharia reversa. Por exemplo, ferramentas como ProGuard ou DexGuard podem ser usadas para ofuscar aplicativos Android, enquanto desenvolvedores iOS podem preferir ferramentas como SwiftShield ou Obfuscator-LLVM.No caso do Android, você pode fazer isso envolvendo o seguinte em seu arquivo app/build.gradle com suas regras no arquivo proguard-rules.pro .

 android { buildTypes { getByName("release") { // Enables code shrinking, obfuscation, and optimization for only // your project's release build type. Make sure to use a build // variant with `isDebuggable=false`. isMinifyEnabled = true // Enables resource shrinking, which is performed by the // Android Gradle plugin. isShrinkResources = true // Includes the default ProGuard rules files that are packaged with // the Android Gradle plugin. To learn more, go to the section about // R8 configuration files. proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } ... }

Fonte do código: Android Developers Platform


👉🏿Integre mecanismos anti-adulteração no aplicativo para detectar e prevenir modificações no tempo de execução. Implemente verificação de soma de verificação, verificações de integridade e assinatura de código para identificar modificações não autorizadas e proteger contra adulteração de código. Serviços como o Google Play Protect e a verificação de assinatura de código da App Store fornecem medidas anti-adulteração integradas para distribuição de aplicativos.


👉🏿Integre soluções RASP que monitoram ativamente o comportamento do aplicativo em tempo de execução e detectam possíveis ataques ou tentativas de adulteração. Ferramentas como App-Ray, iXGuard da GuardSquare ou App Threat Intelligence da Arxan fornecem recursos de proteção em tempo de execução que detectam e atenuam vulnerabilidades de tempo de execução e atividades não autorizadas.


👉🏿Implemente mecanismos de detecção de root/jailbreak para identificar se o aplicativo está sendo executado em um dispositivo comprometido. Bibliotecas como RootBeer ou SafetyNet API para Android e Jailbreak Detection Library para iOS podem ser integradas para detectar o status de root ou jailbreak. Após a detecção, o aplicativo pode executar as ações apropriadas, como restringir a funcionalidade ou exibir avisos para evitar possíveis riscos de segurança.


⬇️Falha em Hardware ou Processadores:

Imagine que você desenvolveu um aplicativo avançado preferindo todas as medidas ou padrões de segurança, mas o aplicativo é distribuído em dispositivos com falhas notáveis em seus recursos de hardware e processadores, qual seria a eficácia de seu esforço neste caso? Bem, dê uma olhada nos seguintes incidentes notáveis do passado que nos ensinam as lições.


⚠️Vulnerabilidades do Qualcomm Snapdragon (2018):

Várias vulnerabilidades foram descobertas nos chipsets Qualcomm Snapdragon, amplamente usados em dispositivos Android. A boa notícia é que ja foi resolvido mas até então, essas vulnerabilidades permitiam que os invasores obtivessem acesso root, contornassem as medidas de segurança e executassem códigos arbitrários. Ao explorar essas falhas, os invasores podem comprometer a segurança dos aplicativos móveis executados em dispositivos equipados com os chips Snapdragon afetados.


⚠️18 Vulnerabilidades de dia zero em chipsets Samsung Exynos (descobertas entre o final de 2022 e o início de 2023):

Entre o final de 2022 e o início de 2023, o Project Zero do Google (uma renomada equipe de caça a bugs de dia zero) descobriu e divulgou 18 vulnerabilidades de dia zero nos chipsets Exynos da Samsung, que são amplamente usados em dispositivos móveis, vestíveis e carros. Entre essas vulnerabilidades, quatro foram consideradas particularmente graves, pois facilitavam a execução remota de código (RCE) da Internet para a banda base.


✅Várias medidas de segurança podem ser implementadas da seguinte forma:

  • Mantenha-se atualizado com os últimos patches de segurança e atualizações de firmware fornecidos pelos fabricantes de hardware ou processador.
  • Implemente controles de permissão eficazes em aplicativos móveis e confirme que os aplicativos solicitam apenas as permissões necessárias para a funcionalidade pretendida.
  • Implemente soluções MDM, pois as ferramentas MDM fornecem recursos como aplicação de políticas de segurança, controle de instalações de aplicativos e limpeza remota de dispositivos em caso de perda ou roubo.
  • Ajuste os fortes mecanismos de monitoramento de segurança para detectar e responder prontamente a possíveis incidentes de segurança. Monitore o comportamento do dispositivo e do aplicativo em busca de anomalias e implemente planos de resposta a incidentes para mitigar e solucionar quaisquer violações de segurança.

Desafios na segurança de aplicativos móveis:

O ritmo acelerado dos avanços tecnológicos no desenvolvimento de aplicativos móveis abre novos caminhos para os invasores explorarem os pontos fracos da segurança. Aqui estão alguns desafios notáveis:


  • O ritmo acelerado dos avanços tecnológicos no desenvolvimento de aplicativos móveis cria desafios para acompanhar as ameaças de segurança emergentes e as técnicas de ataque, pois os invasores também estão continuamente se adaptando e encontrando novas maneiras de explorar os pontos fracos de segurança em aplicativos móveis.
  • A diversidade de dispositivos móveis, sistemas operacionais e versões adiciona complexidade à segurança de aplicativos móveis.
  • Os dispositivos móveis geralmente enfrentam atrasos no recebimento de atualizações do sistema operacional devido à fragmentação no ecossistema que faz com que um grande número de dispositivos execute versões de software desatualizadas que podem conter vulnerabilidades conhecidas.
  • Os aplicativos móveis lidam com grandes quantidades de dados pessoais e confidenciais do usuário que aumentam as preocupações com a privacidade.

Imagem de amostra


💡A depuração de aplicativos móveis é uma atividade recompensadora:

A depuração de aplicativos móveis é uma atividade divertida, envolvente e gratificante que permite aprimorar suas habilidades no desenvolvimento e segurança de aplicativos. Ele não apenas permite que você crie aplicativos avançados e seguros, mas também oferece oportunidades para depurar aplicativos existentes para várias empresas que permitem que você obtenha uma renda considerável.


Ao usar sua experiência em depuração de aplicativos móveis, você pode fornecer serviços valiosos para organizações, identificar e corrigir problemas de segurança em seus aplicativos e contribuir para seu sucesso. Além disso, participando de programas de recompensas de bugs e projetos de depuração freelance como o Google ( Programa de Recompensa de Vulnerabilidade do Google (VRP) ) ou Apple ( Prêmio de segurança da Apple ) pode ajudar ainda mais seus ganhos. Então, abrace o excitante mundo da depuração de aplicativos móveis, onde suas habilidades e paixão podem levar ao crescimento pessoal e recompensas financeiras.

Conclusão:

As práticas de codificação segura em todo o processo de desenvolvimento são cruciais para minimizar problemas graves de segurança em aplicativos móveis. Embora a depuração da segurança do aplicativo possa ser uma tarefa desafiadora devido à evolução das técnicas do invasor, é essencial priorizar as práticas recomendadas e manter-se informado sobre informações e padrões atualizados para proteger os dados e a privacidade do usuário. É importante estar ciente de que plataformas de aplicativos subjacentes como Android ou iOS, bem como dispositivos, podem ter vulnerabilidades, portanto, é necessário usar as estratégias de depuração e medidas de segurança mais adequadas para manter os aplicativos atualizados.


A depuração móvel não se limita aos desenvolvedores; mesmo como usuário, você pode contribuir para proteger milhões de usuários em todo o mundo. Além disso, a depuração móvel pode apresentar oportunidades para ganhar dinheiro.