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
Dispositivos MóveisComputaçã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
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.
FakePlayerFirst malware for Android makes money by sending SMS messages to premium line numbers in Russia.
DroidDreamFirst large attack to Google Play market. Over 50 apps containing a root exploit published to Android Market.
ZitmoPopular Windows bot and banking malware Zeus improved with its Android component designed to steal banking mTANs.
MasterkeyA vulnerability in Android discovered exploiting certificate validation in Android which allows malware to disguise as a legitimate app.
DownAPKWindows 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 20141000 new Androidmalware samples
discovered every day
2000 new Androidmalware samples
discovered every day
10 years of malware for mobile devices
Fonte: Vanja Svajcer, “Sophos Mobile Security Threat Report”, Sophos Labs, 2014
Aplicação
Client-Side Client-Side
HardwarePlataforma
Rede
Server-Side
Servidor Datacenter
Cloud
Ameaças e Vulnerabilidades
4
Privacy Issues
With dozens of consumer applications, personal information and enterprise mobile apps on the same device, they appear to act independently; however, without proper security built-in to mobile applications, hidden integration and communication may exist. Should the newest version of the game Mad Mallards have access to text your contact list or sent email? Or actually be able to call a telephone number? What if it wanted to send your contact list to a third party website? We found that a whopping 97% of applications had access to and were able to share this type of data. Worst of all, most of this data is sent off to third party companies over HTTP. In our research, we found banking apps that integrated with social media, chat apps that sent chat logs to be analyzed for future purchasing trends, and many, many applications that track you via geo-location.
OWASP Mobile Top Ten Categories: M4—Unintended Data Leakage & M1—Weak Server Side Controls
Research Findings
HP Research tested more than 2,000 mobile applications from 600+ companies
97% of applications tested could access at least one private information source
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%
Report | Mobile Application Security Study
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
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 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
Riscos do MTop 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
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
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
OWASP Top 10 OWASP Cloud Top 10
M1 - Weak Server-Side Controls
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
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)
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
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
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
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)
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
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
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
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!
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
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
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
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
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
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
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
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.
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 Protectionsversã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 Functionalityversão de 2016
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.
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.
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.
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.
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.
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.)
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.
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.
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.
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).
Análise a mais de 400,000 aplicações na Google Play Store (NowSecure).
12
Connect with us: [email protected]© 2016 NowSecure. All rights reserved.
Ourautomatedappsecuritytestingsystemalsoallowsustogathermetadataaboutanapp
includingitscategoryandnumberofdownloads,whichallowedustofilterandgroupthe
informationaswehavebelow.
Weexaminedtheresultsofsecuritytesting400,000mobileappsandrecordedthe
followingprevalenceofhighrisksecurityissuesinthoseapps.
Weidentifiedatleastonehighriskissueinalmostoneinfourmobileapps.Outofallthe
mobileappswetested,13.3percenthadfilesystemissues.Theprevalenceofsensitivedata
leakandnetworkissuesinallmobileappswerelowerthanotherissuesat10.7percentand
3.8percentrespectively.
OVERVIEW OF APP SECURITY WEAKNESSES
We identified at least one high risk issue in almost one in four mobile apps
13
Connect with us: [email protected]© 2016 NowSecure. All rights reserved.
Thechartbelowillustratesthequantityofissuesfoundbytypeforthemostpopularapps
ontheGooglePlaystore.We’vedefinedpopularappsasthosewithmorethan1million
downloads.Intotal,wefound16,036highriskissuesamongthesepopularapplications.
Thischartillustratesthatmobileappscontinuetoleakusernames,passwords,andemail
addresses.Thisisparticularlyconcerningbecausemanyusersreusethesameusername
andpasswordfordifferentapplications.Thecompromiseofauser’scredentialsforoneapp
couldeasilyleadtothecompromiseofanotherapporwebaccount.
16,036high risk issues were found in the most popular apps
Fonte: NowSecure, “2016 NowSecure Mobile Security Report”, 2016
GOOD
www.owasp.org
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