owasp mobile top 10
TRANSCRIPT
Aplicação
Client-Side Client-Side
HardwarePlataforma
Rede
Server-Side
Servidor Datacenter
Cloud
Ameaças e Vulnerabilidades
Mobile Security ProjectComeç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
M1 - Weak Server-Side Controls
M3 - Insufficient Transport Layer Security
M5 - Poor Authorization and Authentication
M7 - Client Side Injection
M9 - Improper Session Handling
M2 - Insecure Data Storage
M6 - Broken Cryptography
M4 - Unintended Data Leakage
M8 - Security Decisions Via Untrusted Inputs
M10 - Lack of Binary Protections
Riscos do Top 10Independente da plataforma
Focada em áreas de risco do em vez de vulnerabilidades individuais
Definida usando a Metodologia de Risco da OWASP
Contribuido pela comunidade
M3 - Insufficient Transport Layer Security
M5 - Poor Authorization and Authentication
M7 - Client Side Injection
M9 - Improper Session Handling
M2 - Insecure Data Storage
M6 - Broken Cryptography
M4 - Unintended Data Leakage
M8 - Security Decisions Via Untrusted Inputs
M10 - Lack of Binary Protections
M1 - Weak Server-Side Controls
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
M1 - Weak Server-Side Controls
M1 - Weak Server-Side Controls
M3 - Insufficient Transport Layer Security
M5 - Poor Authorization and Authentication
M7 - Client Side Injection
M9 - Improper Session Handling
M6 - Broken Cryptography
M4 - Unintended Data Leakage
M8 - Security Decisions Via Untrusted Inputs
M10 - Lack of Binary Protections
M2 - Insecure Data Storage
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 aplicadas às comunidades
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)
M2 - Insecure Data Storage
M1 - Weak Server-Side Controls
M5 - Poor Authorization and Authentication
M7 - Client Side Injection
M9 - Improper Session Handling
M2 - Insecure Data Storage
M6 - Broken Cryptography
M4 - Unintended Data Leakage
M8 - Security Decisions Via Untrusted Inputs
M10 - Lack of Binary Protections
M3 - Insufficient Transport Layer Security
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
Impacto:
MITM
Alteração de dados em transito
Perda de confidencialidade de dados
M3 - Insufficient Transport Layer Security
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 provedor de serviço, WiFi e até NFC
Quando ocorrem exceções de segurança é uma boa prática NÃO AS IGNORAR
M3 - Insufficient Transport Layer Security
M1 - Weak Server-Side Controls
M3 - Insufficient Transport Layer Security
M5 - Poor Authorization and Authentication
M7 - Client Side Injection
M9 - Improper Session Handling
M2 - Insecure Data Storage
M6 - Broken Cryptography
M4 - Unintended Data Leakage
M8 - Security Decisions Via Untrusted Inputs
M10 - Lack of Binary Protections
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.)
Impacto:
Retenção de dados de forma infinita
Violações de privacidade
M4 - Unintended Data Leakage
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 cuidados todas as bibliotecas de terceiros usadas na aplicação
Testar a aplicação em múltiplas plataformas (o mais possível)
M4 - Unintended Data Leakage
M1 - Weak Server-Side Controls
M3 - Insufficient Transport Layer Security
M7 - Client Side Injection
M9 - Improper Session Handling
M2 - Insecure Data Storage
M6 - Broken Cryptography
M4 - Unintended Data Leakage
M8 - Security Decisions Via Untrusted Inputs
M10 - Lack of Binary Protections
M5 - Poor Authorization and Authentication
EM parte relacionada com a parte móvel, outra relacionada com a arquitectura
Algumas “apps” dependem em exclusivo de valores imutáveis 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
Impacto:
Escalar privilégios
Acesso não-autorizado
M5 - Poor Authorization and Authentication
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
M5 - Poor Authorization and Authentication
M1 - Weak Server-Side Controls
M3 - Insufficient Transport Layer Security
M5 - Poor Authorization and Authentication
M7 - Client Side Injection
M9 - Improper Session Handling
M2 - Insecure Data Storage
M4 - Unintended Data Leakage
M8 - Security Decisions Via Untrusted Inputs
M10 - Lack of Binary Protections
M6 - Broken Cryptography
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
Impacto:
Perda da confidencialidade dos dados
Escalara privilégios
Ultrapassar a lógica de negócio
M6 - Broken Cryptography
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!
M6 - Broken Cryptography
M1 - Weak Server-Side Controls
M3 - Insufficient Transport Layer Security
M5 - Poor Authorization and Authentication
M9 - Improper Session Handling
M2 - Insecure Data Storage
M6 - Broken Cryptography
M4 - Unintended Data Leakage
M8 - Security Decisions Via Untrusted Inputs
M10 - Lack of Binary Protections
M7 - Client Side Injection
Aplicações que usam bibliotecas de browsers
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”
Impacto:
Compromisso do dispositivo
Escalar privilégios
M7 - Client Side Injection
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 com a parte da funcionalidade Web
M7 - Client Side Injection
M1 - Weak Server-Side Controls
M3 - Insufficient Transport Layer Security
M5 - Poor Authorization and Authentication
M7 - Client Side Injection
M9 - Improper Session Handling
M2 - Insecure Data Storage
M6 - Broken Cryptography
M4 - Unintended Data Leakage
M10 - Lack of Binary Protections
M8 - Security Decisions Via Untrusted Inputs
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
Impacto:
Consumir recursos pagos
Extração de dados
Escalar privilégios
M8 - Security Decisions Via Untrusted Inputs
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
M8 - Security Decisions Via Untrusted Inputs
M1 - Weak Server-Side Controls
M3 - Insufficient Transport Layer Security
M5 - Poor Authorization and Authentication
M7 - Client Side Injection
M2 - Insecure Data Storage
M6 - Broken Cryptography
M4 - Unintended Data Leakage
M8 - Security Decisions Via Untrusted Inputs
M10 - Lack of Binary ProtectionsM9 - Improper Session Handling
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
Impacto:
Escalar privilégios
Acesso não-autorizado
Ultrapassar licenciamentos e pagamentos
M9 - Improper Session Handling
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
M9 - Improper Session Handling
M1 - Weak Server-Side Controls
M3 - Insufficient Transport Layer Security
M5 - Poor Authorization and Authentication
M7 - Client Side Injection
M9 - Improper Session Handling
M2 - Insecure Data Storage
M6 - Broken Cryptography
M4 - Unintended Data Leakage
M8 - Security Decisions Via Untrusted Inputs
M10 - Lack of Binary Protections
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 pp
Pode alguém modificar o binário da aplicação usando um editor e mesmo assim efectuar bypass do do controlo de segurança
Impacto:
Confidencialidade e privacidade
Roubo de propriedade intelectual
Comportamento malicioso da aplicação.
M10 - Lack of Binary Protections
Prevenção:
Deteção de jailbreak, controlos de checksum, deteção de debuggers, etc.
Ter a certeza que vamos o binário não foi modificado e que as proteções da plataforma garantem a integridade do mesmo.
M10 - Lack of Binary Protections