A medida em que nossos dispositivos móveis desempenham um papel cada vez mais imprescindível em nossas vidas, desenvolver aplicativos seguros se torna uma necessidade para proteger os usuários finais. Assim, o papel do pentester torna-se importante para identificar comportamentos indesejáveis, tais como permitir o vazamento de dados, causar falhas em outros aplicativos instalados no celular ou tablet, gerar despesas imprevistas ou gerar problemas em um serviço específico para quem usa o dispositivo.
Em publicações anteriores, compartilhamos algumas sugestões para o desenvolvimento seguro no iOS. São artigos interessantes e que podem te ajudar a encontrar alguns erros que os desenvolvedores costumam cometer ao criar aplicativos para iOS. Como complemento, confira neste post algumas dicas que podem ser usadas para guiar a sua análise.
#1 Coloque-se no lugar do programador
Na medida do possível, tente saber quem está por trás do desenvolvimento do código que você está auditando. Descubra qual é a linguagem em que eles geralmente trabalham na maior parte do tempo ou em que linguagem foram iniciados. A experiência do programador é geralmente transparente na arquitetura do código e, consequentemente, na natureza dos erros. Saber sobre isso pode te dar uma direção para a pesquisa.
Por exemplo, programadores com experiência em Java muitas vezes replicam padrões de design de forma incansável, abstraindo a funcionalidade repetidas vezes. Por outro lado, os desenvolvimentos de apps para dispositivos móveis feitos por programadores web depositam a maior funcionalidade possível em aplicativos web, apoiando-se no uso do WebKit. Ambos os tipos de desenvolvedores estarão acostumados a usar APIs de alto nível, mas são suscetíveis a erros na hora de manipular APIs de baixo nível.
#2 Obtenha o código fonte
Embora não represente a posição em que um cibercriminoso é geralmente encontrado, a obtenção do código-fonte pode ajudar na identificação do maior número de falhas no menor tempo possível. Os testes de penetração geralmente lidam com recursos limitados de tempo e dinheiro, por isso é conveniente tirar o máximo proveito deles. Seu objetivo não deve ser imitar um cenário real de ataque, mas encontrar a maior quantidade de vulnerabilidades para tornar o aplicativo final mais seguro.
O Objective-C serve para a engenharia reversa e é possível obter uma visão bastante transparente dos mecanismos internos do aplicativo, mesmo sem iniciar desde o código-fonte. Um cibercriminoso com tempo ilimitado pode obter uma visão aproximada - se não igual - do que você terá com o código. Economize tempo e dedique seu esforço para encontrar essas falhas de segurança.
#3 Tenha em conta os pontos fracos da linguagem
Embora o Objective-C e Cocoa evitem alguns erros comuns de segurança em C e C ++, o uso de API perigosos como strcpy e strcat, ou a má aplicação de mecanismos como categorias ou o method swizzling podem causar um comportamento inesperado que resulte em falhas graves de segurança. Portanto, certifique-se de pesquisar como essas técnicas afetam o aplicativo.
#4 Identifique a possível reutilização de código vulnerável
Muitos programadores desenvolveram o péssimo hábito de buscar fóruns on-line e copiar o código de programação sem realmente analisar o seu desempenho, especialmente quando se trata de funções auxiliares de baixo nível, conexões de rede ou criptografia. Outros incorporam bibliotecas e desenvolvimentos de terceiros no código de base sem verificar se apresentam falhas de segurança. Isso pode levar a encontrar o mesmo código vulnerável por meio de vários aplicativos.
#5 Conte com dois dispositivos para realizar os testes: um com jailbreak e outra de fábrica
Ter um dispositivo com o sistema operacional de fábrica te ajudará a avaliar como o aplicativo se comporta em um ambiente de usuário final real, com todos os mecanismos de segurança ativados e sem problemas para registrar notificações por push. Por outro lado, você pode usar o dispositivo com jailbreak para analisar mais detalhadamente o sistema de arquivos e o funcionamento do sistema operacional.
Esperamos que essas dicas possam te ajudar a encontrar novas perspectivas de análise para o aplicativo com o qual esteja trabalhando.