Muito se fala do OWASP Top 10 para aplicações Web, mas nem tanto sobre o OWASP Top 10 para aplicações voltadas aos dispositivos móveis. Embora o OWASP Top 10 Mobile 2013 ainda não tenha sido lançado, fiz questão de separar algumas das melhores práticas de segurança para o desenvolvimento de aplicações iOS que são muito úteis:
1) Limpe dados confidenciais caso a aplicação saia do primeiro plano
Essa prática é importante porque quando a aplicação sai do primeiro plano, o próprio iOS gera um screenshot da aplicação e armazena no diretório da mesma, ou seja, caso o usuário tenha preenchido seu cartão de crédito na aplicação bancária e alterna de aplicação para outra como o Angry Birds por exemplo,o iOS gera uma imagem contendo o último estado da aplicação bancária que possui o cartão de crédito que pode vir a cair nas mãos de um atacante que terá acesso à informações confidenciais.
2) Desabilite a funcionalidade de autocorreção para campos sensíveis
Quando o campo de texto da aplicação possui habilitado a funcionalidade de autocorreção, o iOS armazena o que foi digitado em um arquivo binário para posteriormente adicionar esta “palavra” na lista de palavras conhecidas devido ao mecanismo de auto-aprendizado do dicionário, que pode vir a ser obtido por um atacante.
3) Valide os dados de entrada
Nunca confie no input do usuário, tanto no aplicativo, quanto no servidor. É importante que seja feito a validação dos dados de entrada para evitar diversos tipos de ataque, inclusive SQL Injection, visto que a maioria do armazenamento das informações no iOS é feito em bancos de dados SQLite.
4) Não permita que informações confidenciais sejam armazenadas no clipboard
Desabilite a opção de copiar para campos com informações sensíveis visto que eles podem ser acessados por qualquer aplicação, que pode vir a ser maliciosa e envie periodicamente o conteúdo do clipboard para o servidor de um atacante.
5) Sempre valide os certificados digitais
Geralmente os desenvolvedores para fins de teste desabilitam a validação dos certificados para utilizar um auto-assinado em ambiente de desenvolvimento, mas esquecem de habilitar novamente antes de publicar o aplicativo.
6) Não confie cegamente no Keychain
O recurso Keychain da Apple para armazenamento seguro não é a solução para todos os problemas, pois recuperando a senha do usuário (que geralmente é um PIN de 4 dígitos), é possível fazer o dump e crack da Keychain para obter os valores armazenados. Experimente o SQLCipher.
7) Restrinja o tempo máximo de Sessão
Dispositivos móveis são facilmente perdidos, furtados e roubados, portanto, é importante definir um tempo máximo que a sessão do aplicativo estará aberta para que nenhum outro indivíduo além do verdadeiro usuário da aplicação consiga manipular a mesma.
8) Homologue bibliotecas de terceiros
De nada adianta desenvolver um código seguro e adicionar bibliotecas inseguras à sua aplicação. Realize uma análise estática do código fonte da biblioteca em busca de possíveis bugs de segurança que podem comprometer a sua aplicação.
9) Valide a integridade do Aplicativo e demais arquivos
Proteja sua aplicação contra adulteração de binários e demais arquivos validando a integridade dos mesmos por meio de funções hash one-way, bem como SHA1 e MD5, por exemplo, mas não use esses algoritmos devido à facilidade de colisão de hashes. Utilize SHA512 para esta tarefa.
10) Ofusque seu código
Essa prática de ofuscação é bastante complexa e intimamente ligada à Análise de Malware, trata-se de tratar o seu código como um malware que está fugindo de um analista de malware. Uma das técnicas de ofuscação é não utilizar nomes de variáveis passíveis de adivinhação (por exemplo usuario.logado), para dificultar a manipulação de código em tempo de execução via gdb.
Para saber mais, acesse: