O documento discute os 10 principais riscos no desenvolvimento seguro de aplicações móveis de acordo com a OWASP Mobile Top 10. Estes riscos incluem controlos fracos no servidor, armazenamento inseguro de dados, segurança insuficiente na camada de transporte e autenticação e autorização fracas. O documento fornece exemplos e recomendações para prevenir cada risco.
1. OWASP Mobile
Top 10
[Principais Riscos no Desenvolvimento
Seguro de Aplicações Móveis]
Instituto Politécnico de Viana do Castelo
Escola Superior de Tecnologia e Gestão
Open Days do Curso de Engenharia Informática
5.Maio.2016
3. Dispositivos Móveis
Computação tradicional e na rede vs. dispositivos móveis
(smartphones, tablets, etc.)
Aceites de forma extensiva pelos consumidores (“consumerização”):
individuais e organizações
Grande quantidade de dados sensíveis (tanto pessoais como
empresariais)
Ameaças de segurança e de privacidade
4.
5. Evolução do Malware em Dispositivos Móveis
Cabir
First worm affecting
Symbian Series 60
phones. Spreads
from phone to phone
by using Bluetooth
OBEX push protocol.
Ikee and Duh
Worms affecting
jailbroken iPhones
using Cydia app
distribution system
due to a hardcoded
password in sshd.
FakePlayer
First malware for
Android makes
money by sending
SMS messages to
premium line
numbers in Russia.
DroidDream
First large attack to
Google Play market.
Over 50 apps
containing a root
exploit published to
Android Market.
Zitmo
Popular Windows
bot and banking
malware Zeus
improved with its
Android component
designed to steal
banking mTANs.
Masterkey
A vulnerability in
Android discovered
exploiting certificate
validation in Android
which allows
malware to disguise
as a legitimate app.
DownAPK
Windows based
malware uses
Android debugging
bridge to install
fake banking app
to Android devices
connected to the
infected PC.
2004 2009 2010 2011 2012 2013 2014
1000 new Android
malware samples
discovered every day
2000 new Android
malware samples
discovered every day
10 years of malware for mobile devices
Fonte: Vanja Svajcer, “Sophos Mobile Security
Threat Report”, Sophos Labs, 2014
7. of applications tested
access at least one private
information source of
those applications.
86%
of applications
failed to use simple
binary hardening
protections against
modern-day attacks.
71%
of vulnerabilities
resided on the
Web server.
75%
of applications do not
use proper encryption
techniques when
storing data on a
mobile device.
18%
of applications
sent usernames
and passwords
over HTTP, (of the
remaining 85%) 18%
implemented SSL/
HTTPS incorrectly.
97%
Estudo realizado pela HP
Research a mais de 2000
aplicações de mais de 600
empresas.
Fonte: HP, “Mobile Application Security Study -
2013 Report”, 2013
8.
9. Mobile Security Project
Começou no 3Q de 2010
Porquê?
Riscos de Segurança diferentes e únicos
Objectivo?
Envolver a segurança no ciclo de
desenvolvimento de aplicações mobile
Threat Model
Dev. Guide
Training
Controls
Risks
Secure Libraries
Methodologies
Tools
Cheat Sheets
10. M1 - Weak Server-Side Controls M2 - Insecure Data Storage
M3 - Insufficient Transport Layer
Security
M4 - Unintended Data Leakage
M5 - Poor Authorization and
Authentication
M6 - Broken Cryptography
M7 - Client Side Injection
M8 - Security Decisions Via
Untrusted Inputs
M9 - Improper Session Handling M10 - Lack of Binary Protections
versão de 2014
11. Riscos do MTop 10
Independente da plataforma
Focada em áreas de risco do em vez de vulnerabilidades individuais
Definida usando a Metodologia de Risco da OWASP
Contribuido pela comunidade
12. M1 - Weak Server-Side Controls M2 - Insecure Data Storage
M3 - Insufficient Transport Layer
Security
M4 - Unintended Data Leakage
M5 - Poor Authorization and
Authentication
M6 - Broken Cryptography
M7 - Client Side Injection
M8 - Security Decisions Via
Untrusted Inputs
M9 - Improper Session Handling M10 - Lack of Binary Protections
13. M1 - Weak Server-Side Controls
Aplica-se aos serviços de backend
Não é específica para a plataforma
mobile, mas é essencial
Não é possível confiar cegamente no
cliente
Avaliar com cuidado os controlos de
segurança implementados no backend
Impacto:
Perda de confidencialidade dos dados
Integridade dos dados
Prevenção:
Perceber os riscos adicionais que as aplicações
móveis introduzem nas arquitecturas existentes
Usar o know-how existente na proteção destas
plataformas
OWASP Web Top 10, Cloud Top 10, Web
Services Top 10
Recorrer a “cheat sheets”, guias de
desenvolvimento, ESAPI
14. OWASP Top 10 OWASP Cloud Top 10
M1 - Weak Server-Side Controls
15. M1 - Weak Server-Side Controls M2 - Insecure Data Storage
M3 - Insufficient Transport Layer
Security
M4 - Unintended Data Leakage
M5 - Poor Authorization and
Authentication
M6 - Broken Cryptography
M7 - Client Side Injection
M8 - Security Decisions Via
Untrusted Inputs
M9 - Improper Session Handling M10 - Lack of Binary Protections
16. Dados sensíveis que não são protegidos
Aplica-se a dados armazenados localmente e dados
sincronizados com a cloud
Resultam de:
Não cifrar os dados
Efectuar cache de dados quando não se pretende usar a
mesma para armazenamento a longo prazo
Permissões fracas ou globais
Não usar as melhores práticas de proteção
M2 - Insecure Data Storage
Impacto:
Confidencialidade e perda de dados
Credenciais comprometidas
Violações de privacidade
Não-compliance
Prevenção:
Armazenar APENAS aquilo que é absolutamente
necessário
Nunca usar áreas de armazenamento públicas (SD
Card)
Usar contentores seguros de informação e usar as
APIs de segurança e cifra oferecidas pela plataforma
Não conceder permissões de leitura e de escrita
demasiado permissivas (acesso para todos)
17. M1 - Weak Server-Side Controls M2 - Insecure Data Storage
M3 - Insufficient Transport Layer
Security
M4 - Unintended Data Leakage
M5 - Poor Authorization and
Authentication
M6 - Broken Cryptography
M7 - Client Side Injection
M8 - Security Decisions Via
Untrusted Inputs
M9 - Improper Session Handling M10 - Lack of Binary Protections
18. Falta de encriptação dos dados transmitidos
Dados em trânsito recorrendo a
mecanismos de encriptação fracos
Usando criptografia forte mas que ignora
avisos de segurança
Ignorar erros de validação de certificados
Usar transmissão em claro após detectar
falhas
M3 - Insufficient Transport Layer Security
Impacto:
MITM
Alteração de dados em transito
Perda de confidencialidade de dados
Prevenção:
Assegurar que todos os dados sensíveis que
deixam o dispositivos estão encriptados
Incluem-se todos os dados enviados através
da rede do fornecedor de serviço, WiFi e até
NFC
Quando ocorrem excepções de segurança é
uma boa prática NÃO AS IGNORAR
19. M1 - Weak Server-Side Controls M2 - Insecure Data Storage
M3 - Insufficient Transport Layer
Security
M4 - Unintended Data Leakage
M5 - Poor Authorization and
Authentication
M6 - Broken Cryptography
M7 - Client Side Injection
M8 - Security Decisions Via
Untrusted Inputs
M9 - Improper Session Handling M10 - Lack of Binary Protections
20. Resulta da não desactivação de algumas funcionalidades da
plataforma e algumas falhas de programação
Dados sensíveis que vão parar a sítios menos próprios:
Caches Web
Log de keystrokes
Screenshots (i.e. iOS background apps)
Logs (sistema, crash)
Directorias temporárias
Perceber o que fazem librarias de terceiros nas aplicações com
os dados dos utilizadores, antes de as usar (rede de anúncios,
analytics, etc.)
M4 - Unintended Data Leakage
Impacto:
Retenção de dados de forma infinita
Violações de privacidade
Prevenção:
Nunca guardar informação sensível em logs
Remover dados sensíveis de “screenshots”, desactivar logs de
teclados, e utilizar directivas anti-cache para conteúdo web
Efectuar debug das aplicações antes de as lançar no mercado
para perceber quais os ficheiros criados, escritos ou
modificados ao longo da sua operação
Rever com cuidado todas as bibliotecas de terceiros usadas
na aplicação
Testar a aplicação em múltiplas plataformas (o mais
possível)
21. M1 - Weak Server-Side Controls M2 - Insecure Data Storage
M3 - Insufficient Transport Layer
Security
M4 - Unintended Data Leakage
M5 - Poor Authorization and
Authentication
M6 - Broken Cryptography
M7 - Client Side Injection
M8 - Security Decisions Via
Untrusted Inputs
M9 - Improper Session Handling M10 - Lack of Binary Protections
22. EM parte relacionada com a parte móvel, outra
relacionada com a arquitectura
Algumas “apps” dependem em exclusivo de valores
estáticos e potencialmente comprometidos (IMEI, IMSI,
UUID)
Alguns identificadores de hardware persistem mesmo
depois de serem feitas limpezas ao dispositivo ou
“factory resets”
É possível adicionar alguma informação contextual
mas não é à prova e falhas
M5 - Poor Authorization and Authentication
Impacto:
Escalar privilégios
Acesso não-autorizado
Prevenção:
A informação contextual pode ser
usada para resolver esta situação,
mas deve ser usada em conjunto com
factores de múltipla autenticação
Nunca usar o ID do dispositivo ou ID
de subscritor como único
autenticador
23. M1 - Weak Server-Side Controls M2 - Insecure Data Storage
M3 - Insufficient Transport Layer
Security
M4 - Unintended Data Leakage
M5 - Poor Authorization and
Authentication
M6 - Broken Cryptography
M7 - Client Side Injection
M8 - Security Decisions Via
Untrusted Inputs
M9 - Improper Session Handling M10 - Lack of Binary Protections
24. Duas principais categorias
Más implementações usando bibliotecas
criptográficas fortes
Cifras desenvolvidas “à medida”, mas
facilmente quebráveis
Encoding, Ofuscação e Serialização !=
Encriptação
M6 - Broken Cryptography
Impacto:
Perda da confidencialidade dos dados
Escalar privilégios
Ultrapassar a lógica de negócio
Prevenção:
Armazenar a chave com os dados cifrados -
não serve para NADA!!!
Preferir SEMPRE usar bibliotecas
criptográficas testadas, do que escrever a sua
própria biblioteca
Tirar partido daquilo que a plataforma já
oferece!
25. M1 - Weak Server-Side Controls M2 - Insecure Data Storage
M3 - Insufficient Transport Layer
Security
M4 - Unintended Data Leakage
M5 - Poor Authorization and
Authentication
M6 - Broken Cryptography
M7 - Client Side Injection
M8 - Security Decisions Via
Untrusted Inputs
M9 - Improper Session Handling M10 - Lack of Binary Protections
26. Aplicações que usam bibliotecas de browsers (WebView)
Web apps puras
Apps Web/Nativas híbridas
Ataques típicos:
XSS e HTML Injection
SQL Injection
Novos ataques:
Abusar do “phone dialer” + SMS
Abusar de pagamentos “in-app”
M7 - Client Side Injection
Impacto:
Compromisso do dispositivo
Escalar privilégios
Prevenção:
“Sanitizar" e tratar dados “untrusted” antes
de os mostrar ou executar
Usar “prepared statements” para
chamadas a base de dados - não resolve
todos os problemas mas limita alguns
Minimizar as capacidades nativas que
estão relacionadas/expostas com a parte
da funcionalidade Web
27. M1 - Weak Server-Side Controls M2 - Insecure Data Storage
M3 - Insufficient Transport Layer
Security
M4 - Unintended Data Leakage
M5 - Poor Authorization and
Authentication
M6 - Broken Cryptography
M7 - Client Side Injection
M8 - Security Decisions Via
Untrusted Inputs
M9 - Improper Session Handling M10 - Lack of Binary Protections
28. Podem ser usados para efectuar o “bypass” de
permissões e modelos de segurança
Dependem da plataforma
iOS - Abusar dos URL Schemes
Android - Abusar dos Intents
Vários vectores de ataque:
Aplicações maliciosas
Client-side Injection
M8 - Security Decisions Via Untrusted Inputs
Impacto:
Consumir recursos pagos
Extração de dados
Escalar privilégios
Prevenção:
Verificar as permissões de quem invoca e os
input dos mesmos
Pedir mais permissões ao utilizador antes de
permitir as chamadas
Quando as verificações de permissão não
puderem ser realizadas, assegurar que têm que
ser executados passos adicionais para realizar
ações que possam ser sensíveis
29. M1 - Weak Server-Side Controls M2 - Insecure Data Storage
M3 - Insufficient Transport Layer
Security
M4 - Unintended Data Leakage
M5 - Poor Authorization and
Authentication
M6 - Broken Cryptography
M7 - Client Side Injection
M8 - Security Decisions Via
Untrusted Inputs
M9 - Improper Session Handling M10 - Lack of Binary Protections
30. As sessões nas aplicações móveis são geralmente
muito mais longas
Porquê? Conveniência e por usabilidade
Aplicações mantém as sessões através de:
HTTP cookies
OAuth tokens
Serviços de autenticação SSO
Péssima ideia = usar um identificador do dispositivo
como um token de sessão
M9 - Improper Session Handling
Impacto:
Escalar privilégios
Acesso não-autorizado
Ultrapassar licenciamentos e pagamentos
Prevenção:
Não ter medo de fazer os utilizadores
autenticarem-se mais frequentemente
Assegurar que os tokens podem ser
revogados rapidamente no caso do
dispositivo ter sido perdido ou roubado
Usar entropia para gerar tokens seguros
31. M1 - Weak Server-Side Controls M2 - Insecure Data Storage
M3 - Insufficient Transport Layer
Security
M4 - Unintended Data Leakage
M5 - Poor Authorization and
Authentication
M6 - Broken Cryptography
M7 - Client Side Injection
M8 - Security Decisions Via
Untrusted Inputs
M9 - Improper Session Handling M10 - Lack of Binary Protections
32. Um adversário vai procurar efectuar “reverse engineering” do
código da aplicação móvel, para a modificar e realizar
alguma funcionalidade obscura.
Pode alguém desencriptar o código desta App (iOS)
Pode alguém efectuar reverse engineering da app (dex2jar, p.e.)
Pode alguém visualizar o fluxo ou pseudo-código da aplicação
Pode alguém modificar a layer de apresentação e tratar de
injectar código Javascript na App
Pode alguém modificar o binário da aplicação usando um editor
e mesmo assim efectuar bypass de controlos de segurança
M10 - Lack of Binary Protections
Impacto:
Confidencialidade e privacidade
Roubo de propriedade intelectual
Comportamento malicioso da aplicação.
Prevenção:
Deteção de jailbreak, controlos de
checksum, deteção de debuggers, etc.
Ter a certeza que o binário não foi
modificado e que as proteções da
plataforma garantem a integridade do
mesmo.
33. M1 - Weak Server-Side Controls
M2 - Insecure Data Storage
M3 - Insufficient Transport
Layer Security
M4 - Unintended Data Leakage
M5 - Poor Authorization and
Authentication
M6 - Broken Cryptography
M7 - Client Side Injection
M8 - Security Decisions Via
Untrusted Inputs
M9 - Improper Session Handling
M10 - Lack of Binary Protections
versão de 2014
M1 - Improper Platform Usage
M2 - Insecure Data Storage
M3 - Insecure Communication
M4 - Insecure Authentication
M5 - Insufficient Cryptography
M6 - Insecure Authorisation
M7 - Client Code Quality
M8 - Code Tampering
M9 - Reverse Engineering
M10 - Extraneous Functionality
versão de 2016
34. M1 - Improper Platform Usage
M2 - Insecure Data Storage
M3 - Insecure Communication
M4 - Insecure Authentication
M5 - Insufficient Cryptography
M6 - Insecure Authorisation
M7 - Client Code Quality
M8 - Code Tampering
M9 - Reverse Engineering
M10 - Extraneous Functionality
Esta categoria cobre a má utilização de uma funcionalidade
da plataforma ou a falha na utilização dos controlos de
segurança da própria plataforma.
Inclui aspectos como Intents de Android, permissões da
plataforma, má utilização do TouchID, KeyChain, ou outro
controlo de segurança da plataforma.
35. M1 - Improper Platform Usage
M2 - Insecure Data Storage
M3 - Insecure Communication
M4 - Insecure Authentication
M5 - Insufficient Cryptography
M6 - Insecure Authorisation
M7 - Client Code Quality
M8 - Code Tampering
M9 - Reverse Engineering
M10 - Extraneous Functionality
Nova categoria que é uma combinação dos anteriores
M2+M4 do OWASP Top 10 de 2014.
Cobre armazenamento inseguro e perdas não-intencionais
de informação.
36. M1 - Improper Platform Usage
M2 - Insecure Data Storage
M3 - Insecure Communication
M4 - Insecure Authentication
M5 - Insufficient Cryptography
M6 - Insecure Authorisation
M7 - Client Code Quality
M8 - Code Tampering
M9 - Reverse Engineering
M10 - Extraneous Functionality
Cobre aspectos relacionados com handshaking pobre,
versões incorrectas de SSL, negociações fracas,
comunicação em claro de activos sensíveis, etc.
37. M1 - Improper Platform Usage
M2 - Insecure Data Storage
M3 - Insecure Communication
M4 - Insecure Authentication
M5 - Insufficient Cryptography
M6 - Insecure Authorisation
M7 - Client Code Quality
M8 - Code Tampering
M9 - Reverse Engineering
M10 - Extraneous Functionality
Categoria que abrange os problemas de autenticação do
utilizador e de gestão incorrecta das sessões:
• Falha na autenticação do utilizador quando deve ser
requerido
• Falha na manutenção da identidade do utilizador quando é
requerido
• Falhas na gestão de sessões.
38. M1 - Improper Platform Usage
M2 - Insecure Data Storage
M3 - Insecure Communication
M4 - Insecure Authentication
M5 - Insufficient Cryptography
M6 - Insecure Authorisation
M7 - Client Code Quality
M8 - Code Tampering
M9 - Reverse Engineering
M10 - Extraneous Functionality
Aplica-se quando o código aplica criptografia a informação
sensível na aplicação.
Cobre os aspectos em que a criptografia é usada, mas de
forma incorrecta.
39. M1 - Improper Platform Usage
M2 - Insecure Data Storage
M3 - Insecure Communication
M4 - Insecure Authentication
M5 - Insufficient Cryptography
M6 - Insecure Authorisation
M7 - Client Code Quality
M8 - Code Tampering
M9 - Reverse Engineering
M10 - Extraneous Functionality
Categoria que captura quaisquer falhas ao nível da
autorização (decisões de autorização no cliente, navegação
forçada, etc.)
40. M1 - Improper Platform Usage
M2 - Insecure Data Storage
M3 - Insecure Communication
M4 - Insecure Authentication
M5 - Insufficient Cryptography
M6 - Insecure Authorisation
M7 - Client Code Quality
M8 - Code Tampering
M9 - Reverse Engineering
M10 - Extraneous Functionality
Categoria que engloba todos os problemas de
implementação da aplicação-cliente.
Engloba coisas como buffer-overflows, vulnerabilidades de
formatação de strings, e outros erros ao novel do código, que
implique a re-escrita de algum código no dispositivo móvel.
41. M1 - Improper Platform Usage
M2 - Insecure Data Storage
M3 - Insecure Communication
M4 - Insecure Authentication
M5 - Insufficient Cryptography
M6 - Insecure Authorisation
M7 - Client Code Quality
M8 - Code Tampering
M9 - Reverse Engineering
M10 - Extraneous Functionality
Esta categoria cobre aspectos como modificação de binários,
modificação de recursos locais, modificação de memória
dinâmica, entre outros.
42. M1 - Improper Platform Usage
M2 - Insecure Data Storage
M3 - Insecure Communication
M4 - Insecure Authentication
M5 - Insufficient Cryptography
M6 - Insecure Authorisation
M7 - Client Code Quality
M8 - Code Tampering
M9 - Reverse Engineering
M10 - Extraneous Functionality
Esta categoria inclui a análise do binário final da aplicação
para tentar determinar o seu código fonte, bibliotecas,
algoritmos e outros activos.
Pode ser usado para explorar outras vulnerabilidades na
aplicação, revelar informação sobre servidores no backend,
constantes e cifras criptográficas, e propriedade intelectual.
43. M1 - Improper Platform Usage
M2 - Insecure Data Storage
M3 - Insecure Communication
M4 - Insecure Authentication
M5 - Insufficient Cryptography
M6 - Insecure Authorisation
M7 - Client Code Quality
M8 - Code Tampering
M9 - Reverse Engineering
M10 - Extraneous Functionality
Muitas vezes os programadores incluem algumas
funcionalidades “backdoor” durante o desenvolvimento da
aplicação que não são suposto passar para o ambiente de
produção (passwords embutidas no código, desactivação de
funcionalidades de autenticação, entre outras).
44. Análise a mais de 400,000 aplicações
na Google Play Store (NowSecure).
information as we have below.
We examined the results of security testing 400,000 mobile apps and recorded the
following prevalence of high risk security issues in those apps.
We identified at least one high risk issue in almost one in four mobile apps. Out of all the
mobile apps we tested, 13.3 percent had file system issues. The prevalence of sensitive data
leak and network issues in all mobile apps were lower than other issues at 10.7 percent and
OVERVIEW OF APP SECURITY WEAKNESSES
high risk issue in almost
one in four mobile apps
The chart below illustrates the quantity of issues found by type for the most popular apps
on the Google Play store. We’ve defined popular apps as those with more than 1 million
downloads. In total, we found 16,036 high risk issues among these popular applications.
This chart illustrates that mobile apps continue to leak usernames, passwords, and email
addresses. This is particularly concerning because many users reuse the same username
and password for different applications. The compromise of a user’s credentials for one app
could easily lead to the compromise of another app or web account.
Fonte: NowSecure, “2016 NowSecure Mobile Security Report”,
2016
47. OWASP Mobile
Top 10
[Principais Riscos no Desenvolvimento
Seguro de Aplicações Móveis]
Instituto Politécnico de Viana do Castelo
Escola Superior de Tecnologia e Gestão
Open Days do Curso de Engenharia Informática
5.Maio.2016