Segurança para Aplicativos Móveis

Segurança

Segurança para Aplicativos Móveis

Acompanhando a evolução tecnológica dos sistemas móveis, um conjunto de facilidades e recursos computacionais disponibilizados em larga escala aos usuários, que atualmente podem utilizar seus dispositivos para o armazenamento de dados, como recurso para localização global, acesso a redes sociais e inúmeras outras aplicações. Contudo, estas aplicações (normalmente chamados de apps) devem ser calcadas sobre uma premissa básica: o uso de uma plataforma segura, a qual viabilize a redução dos riscos na perda da integridade, disponibilidade ou confiabilidade das informações de seus usuários.

Quando se desenvolve para mobile, ou seja, para softwares não embarcados, encontra-se um ambiente repleto de vulnerabilidades tornando, assim, a tarefa do desenvolvedor mobile difícil, já que na grande maioria das vezes, a aplicação é disponibilizada em nuvem e pode ser utilizada por qualquer usuário ou qualquer dispositivo.

Com a crescente demanda de programas desenvolvidos para celular, foi criado um projeto dentro da OWASP, com o foco em listar os pontos de controle que temos que ter na nossa aplicação mobile e que, respectivamente, vem a mitigar muitas vulnerabilidades que podem ocorrer. Antes de tudo, devemos compreender que o OWASP não é um checklist, mas um início para a implantação de uma cultura de segurança.

OWASP MOBILE

Pontos de controle listados pela Tabela OWASP Mobile.

1. Insecure Data Storage – (Armazenamento Inseguro dos Dados)

  • Dados sensíveis podem ficar vulneráveis por falta de conhecimento do comportamento do dispositivo.
  • Sincronização de dados sensíveis em Cloud de forma desprotegida.
  • Armazenar dados em locais inseguros, como no sdcard por exemplo.

2. Weak Server Side Controls – (Fracos Controles no Servidor)

  • Ainda não é possível confiar apenas no dispositivo para aplicar controle de segurança.
  • Aplicações mobile também estão expostas a ataques já explorados por aplicações web tradicionais.
  • 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.

3. Insufficient Transport Layer Protection – (Proteção insuficiente na camada de transporte)

  • Dados sensíveis trafegados sem qualquer tipo de criptografia.
  • Dados com criptografia fraca no transporte dos dados através da web.
  • Dados com criptografia forte, porém são ignorados warnings de segurança, como data de expiração do certificiado.

4. Client Side Injection – (Injeções no Lado Cliente)

  • Aplicações utilizam recursos de WebView.
  • Aplicações híbridas mesclando recursos nativos/web.
  • Uso promíscuo de APIs do device, como discagem e envio de SMS´s.

5. Poor Authorization and Authentication – (Fraco Controle no Meio de Autorização e Autenticação)

  • Utilizar informações teoricamente imutáveis do dispositivo mobile que podem ser facilmente simuladas ou geradas.
  • Utilizar mecanismos de autenticação e autorização da plataforma sem conhecer a fundo o seu comportamento.

6. Improper Session Handling – (Manuseio Impróprio de Sessão)

  • Aplicações mobile tendem a ter uma sessão mais duradoura motivada por questões de usabilidade.
  • Utilizar identificadores do celular como token de sessão.

7. Security Decisions Via Untrusted Inputs – (Decisões de segurança via entradas não confiáveis)

  • Pode ser aproveitado para ignorar permissões e modelos de segurança.
  • Facilitar utilização de aplicações maliciosas para capturar informações.
  • Exposição de dados sensíveis.

8. Side Channel Data Leakage – (Vazamento de Informações)

  • Recursos padrões da plataforma associados à falha de desenvolvimento.
  • Dados sensíveis armazenados em locais não seguros.
  • Utilização indiscriminada de recursos de terceiros.

9. Broken Cryptography – (Quebra de Criptografia)

  • Quebra de criptografia fraca utilizando força bruta, ataques de dicionário entre outros.
  • Utilização de recursos seguros de criptografia, porém associados a falhas de implementação.

10. Sensitive Information Disclosure – (Divulgação de Informações Sensíveis)

  • Aplicações mobile estão sujeitas a engenharia reversa.
  • Ofuscação do código ajuda a garantir a privacidade, porém não resolve o problema por completo.

mobile_top_10_2014

Problemas de segurança que devem ser previstos, no momento do desenvolvimento

Encriptação

Devemos observar que os algoritmos de criptografia se tornam obsoleto com extrema facilidade. Além disso, boa parte dos apps requer a inserção de dados pessoais (tais como número de cartão de crédito e CPF) para compra de funcionalidades. Se o app não utilizar nenhum algoritmo de cifragem ou utilizar chaves fracas,

Códigos de outros desenvolvedores

Este é um caso real, que ocorreu no momento da instalação de um plugin para a criação da trilha (breadcrums) no aplicativo Esparta. Quando o plugin era instalado, o mesmo trazia um aplicativo que permitia o acesso remoto do dispositivo mobile e, quando se realizava a desintalação, o ambiente de desenvolvimento deixava de funcionar.

Falta de testes prévios de segurança

Aqui, o foco é encontrar erros e códigos maliciosos que abram brechas de segurança no aplicativo. Através dessa análise, é possível, por exemplo, encontrar uma falha do tipo SQL Injection caso seja detectada (no processo de conferência do código) uma entrada de dado que é passada diretamente para o banco de dados sem que haja qualquer validação.

Já na análise dinâmica (prática), deveremos buscar vulnerabilidades durante o processo de execução do app. Esta análise é complementar à primeira porque as vulnerabilidades de uma aplicação vão muito além de falhas nos códigos: existem, em diversos casos, componentes de terceiros cujos códigos-fonte desconhecemos; da mesma forma, uma configuração incorreta no servidor web pode gerar vulnerabilidade.

Não desenvolver um plano contra vulnerabilidades ligadas à captura de dados

Dispositivos móveis são fundamentalmente diferentes dos PCs pela sua característica de gravar informações de curto prazo pelo maior tempo possível, a fim de reduzir seu tempo de resposta no acesso aos dados. Isso torna as aplicações para celular mais suscetíveis à captura de dados, o que pode ser minimizado, por exemplo, com a exigência de uma senha para acesso ao app.

Busque mais

♦ Análise de Segurança em Aplicacação Mobile

♦ Como desenvolver aplicativos seguros

♦ Desenvolvendo Aplicativos para Mobile com Segurança

♦ Desenvolvimento de aplicativos: 5 problemas de segurança que você deve prever

♦ Segurança em Aplicações Web conforme OWASP

♦ Segurança em aplicativos mobile – Guia para testes

♦ Projects/OWASP Mobile Security Project – Top Ten Mobile Risks

♦ Uma solução para avaliação de riscos em aplicativos para dispositivos móveis

Related posts