🚀 A CloudSEK se torna a primeira empresa de segurança cibernética de origem indiana a receber investimentos da Estado dos EUA fundo
Leia mais

Um aplicativo Android é um software executado em dispositivos equipados com o sistema operacional Android. Os aplicativos Android geralmente são escritos na linguagem de programação Java e compilados em bytecode. Esses aplicativos são basicamente kits de pacotes Android (arquivos APK) que permitem a distribuição e instalação de aplicativos Android. Isso é semelhante à forma como os arquivos.exe são usados no sistema operacional Windows. O segundo trimestre de 2020 registrou 2,96 milhões de aplicativos Android no total em comparação com 2,6 milhões em 2018 (no Google Play). E em 2018, vulnerabilidades de alto risco foram encontradas em 43% dos aplicativos Android.
Um arquivo APK contém os seguintes componentes:
Diferentemente do Windows, o Android executa cada um de seus aplicativos em um ambiente sandbox. O sandbox ou a conteinerização de aplicativos limitam o ambiente no qual um código pode ser executado. Ele pretende proteger o aplicativo de interagir com elementos maliciosos externos.
O sistema operacional Android é baseado no sistema Linux que usa o kernel Linux. Mas, diferentemente do sistema Linux, cada aplicativo Android recebe um ID de usuário exclusivo. O sistema então define permissões para um ID de usuário específico, permitindo que esse aplicativo sozinho acesse determinados recursos.
Normalmente, todos os aplicativos Android precisam solicitar permissão para acessar dados confidenciais, como contatos, SMS e câmeras. Todos esses recursos do sistema são restritos com a ajuda da API de permissões. O aplicativo tem permissão para acessar os recursos do sistema somente se o usuário conceder acesso.
Embora os aplicativos Android sejam escritos em Java, os arquivos de classe que contêm instruções da máquina virtual Java (bytecode Java) são convertidos em arquivos executáveis Dalvik (arquivos.dex) que contêm bytecodes Dalvik, antes de serem instalados.
O kernel usado pelo sistema operacional Android gerencia o funcionamento de cada aplicativo no dispositivo, onde a máquina virtual Dalvik executa processos ou aplicativos independentes sob diferentes IDs de usuário.

Os aplicativos da Web têm links universais para interagir com outros aplicativos, diferentemente dos aplicativos Android.
As comunicações entre aplicativos do Android são limitadas, no entanto, elas são obtidas por meio dos seguintes métodos:
Uma intenção é usada para solicitar uma ação de um componente diferente do aplicativo. Isso ajuda a coordenar as atividades realizadas por diferentes aplicativos. Por exemplo, selecionar uma foto da sua galeria para definir sua imagem de exibição do WhatsApp.
Deeplinks são links que direcionam você para um destino específico a partir de um aplicativo.
O Deeplinks é o que possibilita que os usuários compartilhem o link de um artigo do Medium no Twitter.
Um Binder permite a comunicação entre processos (IPC) dentro de um kernel. Ele permite que os processos gerenciem dados compartilhados. Object Linking and Embedding (OLE) da Microsoft é um exemplo de IPC.
Os provedores de conteúdo gerenciam o acesso ao repositório central de dados. Eles fornecem dados para aplicativos externos. Por exemplo, os provedores de conteúdo concedem acesso a aplicativos para usar os contatos e SMSs em um dispositivo.
Embora os aplicativos Android geralmente sejam isolados e isolados, limitando as comunicações entre aplicativos, eles ainda podem ser usados de forma abusiva.
A configuração incorreta do aplicativo ou as práticas incorretas de codificação do desenvolvedor tornam os aplicativos Android vulneráveis a ataques cibernéticos. Abaixo estão listados os problemas mais comuns de segurança de aplicativos Android encontrados por desenvolvedores e usuários.
As credenciais codificadas são basicamente senhas de texto simples, chaves de API, tokens etc. no código-fonte. Embora seja bastante comum que aplicativos Android integrem APIs de terceiros, eles podem não ser necessariamente para chamadas de API do lado do cliente. Quando essas credenciais são expostas em texto simples, elas formam alvos fáceis para explorações de adivinhação de senhas.
Recentemente, o aplicativo CSC BHIM sofreu uma violação de dados, expondo 70 lakh de registros de usuários, devido a um banco de dados inseguro da AWS. Os desenvolvedores teriam codificado as credenciais da AWS no próprio aplicativo. Nesses casos, uma análise estática de código pode depurar o código-fonte antes que o programa seja executado. Ele expõe qualquer vulnerabilidade no código-fonte estático. Esse processo também é automatizável. No entanto, pode haver muitos falsos positivos.
A criptografia quebrada em aplicativos Android usa algoritmos fracos para criptografia e decodificação ou implementa um algoritmo forte de forma insegura.
A função criptográfica de hash MD5, amplamente usada, foi considerada vulnerável. A cifra de transmissão RC4 é conhecida por sua simplicidade, mas foi descoberta que tem várias vulnerabilidades.
Encontrar uma criptografia mais fraca/vulnerável pode ser automatizado por meio de análise estática.
Os descompiladores Java descompilam o bytecode Java no código-fonte Java. Usando essas ferramentas, convertemos o APK para produzir o código-fonte. Mesmo que não fossem o código exato que o desenvolvedor escreveu, as classes, os métodos e a lógica seriam os mesmos. Isso revela credenciais codificadas ou outras falhas no código que o desenvolvedor possa ter usado.
A prática mais comum de codificação incorreta de desenvolvedores envolve criptografia personalizada, que pode ser quebrada com bastante facilidade.
A segurança de transporte é necessária ao se comunicar com o servidor. Ela é aplicada por meio de HTTPS, que usa Transport Layer Security (TLS) para criptografar os dados. No entanto, vários desenvolvedores invalidam inadvertidamente essa proteção. Vários aplicativos optam por confiar em qualquer certificado fornecido sem verificar a cadeia de confiança. Esse código passa pela produção quando os desenvolvedores testam o aplicativo em um ambiente local que pode ter certificados autoassinados, eles ignoram intencionalmente as verificações SSL.
A verificação SSL pode ser desativada por meio de código, por exemplo, estabelecer uma conexão não validada por meio de um SSLSocketFactory personalizado desativará toda a validação de SSL.
Esses desvios podem ser facilmente detectados por meio de análise estática.
O WebView é um componente alimentado por um mecanismo de navegador que permite que aplicativos Android abram páginas da web dentro do próprio aplicativo. Como os navegadores são expostos a ataques por meio de intenções e links diretos, não é seguro abrir páginas da Web não confiáveis no aplicativo.
Por exemplo, um usuário do Twitter encontrou um bug do WebView no ARogyaSetu, que expôs arquivos internos no banco de dados local. O WebView podia ser chamado intencionalmente e qualquer aplicativo instalado no telefone era capaz de carregar o URL no WebView. Um invasor que tenha controle sobre o WebView pode decidir qual página da Web deve ser aberta. Se o JavaScript estiver ativado, os invasores poderão executar o código JavaScript dentro do aplicativo para realizar atividades maliciosas.
A criação de arquivos fora da sandbox do Android permite que os usuários visualizem ou alterem o conteúdo do arquivo, e isso pode ser uma grande preocupação de segurança. Os invasores exploram dados confidenciais expostos ou dados de configuração de aplicativos armazenados fora da sandbox do aplicativo em um formato legível e gravável por qualquer usuário.
Os principais recursos de segurança do Android, como o sandbox de aplicativos, reduzem significativamente os problemas de segurança. Mas, a partir das falhas discutidas acima, deve-se destacar que boas práticas de codificação também garantem a segurança dos aplicativos Android. Além disso: