O mercado mobile cresceu bastante nós últimos anos e a expectativa é que cresça cada vez mais, de acordo com a reportagem do estadão [1] o número de smartphones em uso apenas no Brasil é de cerca de 168 milhões e segundo o site do Kantar [2], estão divididos da seguinte forma:
Como pode ser visto no gráfico dispositivos com Android são a grande maioria, fazendo com que seja um ótimo alvo para ataques, apesar dos outros sistemas possuírem menos usuários os mesmos também sofrem ataques.
Como já citado em outros posts no blog não existe sistema 100% seguro, mas é recomendado sempre testar sua aplicação para que diminua as chances de atacantes explorarem vulnerabilidades. Em aplicações mobile também existem diversos problemas que pessoas com má intenção podem explorar e acabar gerando prejuízos sua empresa.
Em 2014 a OWASP publicou seu TOP 10 [3] dispositivos moveis, sendo eles:
- Weak Server Side Controls
- Insecure Data Storage
- Insufficient Transport Layer Protection
- Unintended Data Leakage
- Poor Authorization and Authentication
- Broken Cryptography
- Client Side Injection
- Security Decisions Via Untrusted Inputs
- Improper Session Handling
- Lack of Binary Protections
Nesse blogpost vamos focar apenas nos 5 primeiros, são eles:
Weak Server Side Controls
Acontece geralmente quando a aplicação interage com uma API e o servidor confia nos dados que vem da aplicação mobile, caso não seja validado atacantes podem explorar falhas como de SQL Injection, Cross site scripting, entre outros. Dados de entrada dos usuários devem ser sempre sanitizados de acordo com o contexto do dado.
Insecure Data Storage
Os desenvolvedores esquecem informações sensíveis ou acreditam que não é possível analisar/reverter o APK para Android ou IPA no caso do IOS. Com técnicas específicas é possível extrair os arquivos que compõem as aplicações APK, IPA. Exemplos que geralmente contem informações sensíveis desprotegidas são arquivos com extensões db, yml, xml, plist, sbf, bak, json, bkf, trn, backup, sqlite.
Insufficient Transport Layer Protection
Dados confidenciais trafegando de forma insegura geralmente por HTTP. Alguns desenvolvedores acham que é necessário apenas segurança na hora do login e deixam desprotegido todas as ações posteriores, mas isso está errado, toda comunicação que envia ou recebe dados confidenciais deve ser sempre transmitida criptografada.
Unintended Data Leakage
Ocorre quando dados sensíveis são salvos pelo desenvolvedor ou pelo próprio sistema operacional em áreas que são facilmente acessadas por outras aplicações. Exemplos: Salvar informações sensíveis em logs, Buffer do copiar e colar.
Poor Authorization and Authentication
Ocorre quando a aplicação possui um sistema de login frágil, exemplo: PIN de 4 dígitos. Ou a autorização é feita no próprio celular de modo offline, com isso atacantes podem burlar o sistema de login e realizar ações críticas e causar impactos a aplicação e consequentemente aos negócios da empresa.
Vai longe. hehehe