Portuguese English German

10 dicas de Segurança para Desenvolver Aplicações iOS

Mobile

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:

Share on Twitter Share on Facebook Share on LinkedIn Share on Hacker News

Postagens Populares

Newsletter