10 dicas de Segurança para Desenvolver Aplicações iOS
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 a informações confidenciais.
2) Desabilite a funcionalidade de autocorreção para campos sensíveis
Quando o campo de texto da aplicação possui habilitada a funcionalidade de autocorreção, o iOS armazena o que foi digitado em um arquivo binário para posteriormente adicionar essa "palavra" na lista de palavras conhecidas devido ao mecanismo de autoaprendizado do dicionário, que pode vir a ser obtido por um atacante.
3) Valide os dados de entrada
Nunca confie na entrada do usuário, tanto no aplicativo quanto no servidor. É importante que seja feita 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 elas podem ser acessadas por qualquer aplicação, que pode vir a ser maliciosa e enviar 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 autoassinado em ambiente de desenvolvimento, mas esquecem de habilitá-la 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, ao recuperar a senha do usuário (que geralmente é um PIN de 4 dígitos), é possível fazer o dump e o crack do 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 em que a sessão do aplicativo estará aberta, para que nenhum outro indivíduo além do verdadeiro usuário da aplicação consiga manipulá-la.
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 possam 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 unidirecionais, como SHA1 e MD5, por exemplo, mas não use esses algoritmos devido à facilidade de colisão de hashes. Utilize SHA512 para essa tarefa.
10) Ofusque seu código
Essa prática de ofuscação é bastante complexa e está 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: