O que é segurança padrão (L1)? É suficientemente seguro? O MASVS (Mobile Application Security Padrão de Verificação) de OWASP É o padrão de facto para qualquer pessoa que analise a segurança de uma aplicação, sejam testadores, engenheiros de segurança ou proprietários da aplicação.
A fim de Projete um aplicativo seguroVocê precisa confiar na base sobre a qual o aplicativo foi construído. Seja um aplicativo e seu sistema operacional, um firmware e seu hardware ou uma página da web em um navegador, o que acontece quando a própria base não é segura?
R – Resiliência é um tópico importante no MASVS, e alguns veem o “R” como uma recomendação. Digital.ai Acreditamos que a resiliência é a base segura em um ambiente que, de outra forma, seria inseguro. O nível "R" é fundamental para proteger o nível de segurança padrão L1. Por quê? Porque as medidas de segurança padrão descritas no L1 são facilmente violadas quando os aplicativos são executados em ambientes inseguros. Ambientes inseguros incluem dispositivos móveis com jailbreak ou root, emuladores e até mesmo dispositivos infectados por malware. Todos esses ambientes são comuns. De fato, em uma meta-análise de milhões de instâncias de aplicativos que Digital.ai Descobrimos que, em qualquer semana, mais da metade dos aplicativos que protegemos são colocados em modo de segurança.safe ambientes.
Na postagem a seguir do blog, discutiremos os requisitos de resiliência e como atendê-los usando [inserir aqui a metodologia/ferramenta aqui]. ferramentas de ofuscação de código, monitoramento e RASPTambém compartilharemos insights e opiniões sobre as recomendações de segurança padrão de nível 1 (L1), seus respectivos vetores de ataque e as maneiras de mitigá-los. Por fim, discutiremos alguns desafios que surgem quando os engenheiros de aplicação seguem apenas as recomendações de nível 1. Começaremos com os requisitos de nível superior, ou de "Resiliência", discutidos no MASVS.
O que é MASVS?
O Mobile Application Security Padrão de VerificaçãoO MASVS, ou simplesmente MASVS, é uma lista compilada de diferentes recomendações distribuídas por diversas áreas, como redes, armazenamento, integridade e muito mais. Essas recomendações são classificadas em 3 modelos principais:
- MASVS-L1 – Segurança padrão: Consiste nas melhores práticas de segurança, como qualidade do código, tratamento de dados sensíveis e interação com o ambiente móvel.
- MASVS-L2 – Defesa em Profundidade: Este modelo inclui tudo o que está presente no MASVS-L1, além de recomendações adicionais baseadas no modelo de ameaças para setores como o bancário e o de saúde, que lidam com dados particularmente sensíveis.
- MASVS-R – Resiliência contra engenharia reversa e adulteração: Proteção contra ataques específicos do lado do cliente, como adulteração e modificação., ou engenharia reversa.
Como atender aos requisitos de resiliência
MSTG-RESILIÊNCIA-1
O aplicativo detecta e reage à presença de um dispositivo com root ou jailbreak, alertando o usuário ou encerrando o aplicativo.
Digital.ai Application Security Detecta diversos métodos sofisticados de root e jailbreak. Somos capazes até mesmo de detectar adulterações no próprio código do sistema operacional.
MSTG-RESILIÊNCIA-2
O aplicativo impede a depuração e/ou detecta e responde à conexão de um depurador. Todos os protocolos de depuração disponíveis devem ser cobertos.
Digital.ai O App Security oferece proteção completa contra depuradores.
MSTG-RESILIÊNCIA-3
O aplicativo detecta e reage à adulteração de arquivos executáveis e dados críticos dentro de seu próprio ambiente isolado (sandbox).
Bibliotecas de criptografia de código aberto, como OpenSSL e Mbed-TLS, são fáceis de serem detectadas por atacantes. Nossas proteções oferecem um arsenal de recursos. criptografia de caixa branca algoritmos usando implementação proprietária, Digital.ai Os clientes podem implementar verificações de integridade de forma eficiente, sem deixar rastros identificáveis por invasores.
MSTG-RESILIÊNCIA-4
O aplicativo detecta e reage à presença de ferramentas e estruturas de engenharia reversa amplamente utilizadas no dispositivo.
Digital.ai Application Security Detecta a presença de kits de ferramentas de instrumentação dinâmica, estruturas e ferramentas de engenharia reversa, como FRIDA, FRIDA-gadget e cycript.
MSTG-RESILIÊNCIA-5
O aplicativo detecta e responde quando está sendo executado em um emulador.
Digital.ai Application Security É possível detectar emuladores como o QEMU testando a CPU na qual o aplicativo protegido está sendo executado.
MSTG-RESILIÊNCIA-6
O aplicativo detecta e reage a adulterações no código e nos dados em seu próprio espaço de memória.
Digital.ai Application Security detecta e permite que os clientes Criar respostas personalizadas para eventos de adulteraçãoAlém disso, podemos detectar tentativas de burlar a detecção de adulteração. Também detectamos editores de memória como o GameGuardian e o iGameGod, e podemos detectar varreduras de memória quando as ações de adulteração são suspensas.
MSTG-RESILIÊNCIA-7
O aplicativo implementa múltiplos mecanismos em cada categoria de defesa (8.1 a 8.6). Observe que a resiliência é proporcional à quantidade, diversidade e originalidade dos mecanismos utilizados.
Digital.ai Application Security Os clientes escolhem quando e como implementar e ativar um variedade de métodos de detecçãoPor exemplo, sempre que uma adulteração for detectada, seja por um processo oculto em segundo plano ou por uma simples violação de integridade, o cliente poderá escolher a opção desejada. (GROSA) Em resposta, o cliente poderia encerrar o aplicativo, forçar o usuário final a se autenticar novamente usando autenticação de dois fatores ou alterar a configuração de gravidade em um jogo para zero, arruinando assim a experiência de jogo do trapaceiro sem deixar vestígios do código original de detecção de adulteração.
MSTG-RESILIÊNCIA-8
Os mecanismos de detecção desencadeiam respostas de diferentes tipos, incluindo respostas retardadas e furtivas.
Digital.ai Application Security Permite ao cliente controlar quando e onde as proteções são invocadas com manipuladores personalizados e agendadores discretos. Fornecemos até mesmo uma função de "travamento" que encerra abruptamente o aplicativo sem revelar a origem do código que causou a falha.
MSTG-RESILIÊNCIA-9
A ofuscação é aplicada às defesas programáticas, que por sua vez impedem a desofuscação por meio de análise dinâmica.
Ofuscação de código é a base original da nossa tecnologia. Detemos 6 patentes relacionadas à ofuscação de código, incluindo a primeira patente já concedida para ofuscação de código. Digital.ai Application Security Oferecemos uma solução de simplificação de código que ofusca o código de forma abrangente. Além disso, nossas variáveis e constantes criptográficas de caixa branca são ofuscadas e permanecem na memória por curtos períodos de tempo, de modo que a extração de dados do processo ou scanners criptográficos automáticos não consigam extrair qualquer benefício. Também fornecemos proteção contra ofuscação de strings em tempo de execução, bem como ofuscação completa para ambientes de execução textuais, como Java e Objective-C.
MSTG-RESILIÊNCIA-11
Todos os arquivos executáveis e bibliotecas pertencentes ao aplicativo são criptografados em nível de arquivo e/ou segmentos importantes de código e dados dentro dos executáveis são criptografados ou compactados. Uma análise estática trivial não revela código ou dados importantes.
Oferecemos diferentes soluções de criptografia tanto para código quanto para dados. Por exemplo, no Android, Digital.ai Application Security O suporte à criptografia DEX e à criptografia nativa de bibliotecas compartilhadas, juntamente com nossa criptografia de caixa branca e nossos recursos anti-depuração e instrumentação, protegeria o produto tanto estática quanto dinamicamente, deixando o invasor sem pistas.
MSTG-RESILIÊNCIA-12
Se o objetivo da ofuscação é proteger cálculos sensíveis, utiliza-se um esquema de ofuscação que seja apropriado para a tarefa e robusto contra métodos de desofuscação manual e automatizada, considerando as pesquisas publicadas atualmente. A eficácia do esquema de ofuscação deve ser verificada por meio de testes manuais. Observe que recursos de isolamento baseados em hardware são preferíveis à ofuscação sempre que possível.
Toda técnica de ofuscação pode eventualmente ser derrotada, mas boas técnicas de ofuscação não podem ser desofuscadas automaticamente. Nossas técnicas de ofuscação Incluem diversas proteções ativas contra desofuscadores e emuladores e são testadas em relação a todas as soluções disponíveis publicamente, incluindo descompiladores JEB.
MSTG-RESLIENCE-13
Como medida de defesa em profundidade, além de garantir a segurança das partes que se comunicam, a criptografia de carga útil em nível de aplicação pode ser aplicada para dificultar ainda mais a interceptação de comunicações.
Para interceptar comunicações, um atacante dispõe de 3 métodos principais:
- Realizar um ataque Man-in-the-Middle (MITM) (Ex.: remover o certificado fixado).
- Adulteração das funções criptográficas
- Manipulação da função de rede
Os nossos Application Security A solução detecta qualquer tipo de adulteração, incluindo a adulteração do próprio código do sistema operacional. Nosso produto de Proteção de Chaves e Dados não pode ser detectado automaticamente usando ferramentas disponíveis publicamente. Juntas, essas duas soluções impedem os três métodos descritos acima.
Requisitos de nível 1
MSTG-ARCH-1
Todos os componentes do aplicativo foram identificados e sabe-se que são necessários.
Como engenheiros de software, queremos que nosso código seja o mais enxuto e eficiente possível. No entanto, do ponto de vista da segurança, remover código desnecessário pode aumentar a superfície de ataque. Em aplicativos móveis, um código enxuto pode ser prejudicial. Componentes menores e identificáveis são um prato cheio para atacantes. A ofuscação de código é a primeira linha de defesa contra engenharia reversa estática e, infelizmente, codificar de forma enxuta e lógica facilita a vida dos atacantes.
MSTG-ARCH-10
A segurança é abordada em todas as etapas do ciclo de vida do desenvolvimento de software. É muito fácil marcar uma etapa e passar para a próxima.
Segurança tem tudo a ver com consciência, e sempre te leva a lugares que você menos espera. Digital.ai Application Security Protege seu aplicativo tanto como uma caixa preta inviolável quanto fornecendo recursos estratégicos para que você possa confiar em ambientes vulneráveis.
MSTG-ARMAZENAMENTO-1
É necessário utilizar instalações de armazenamento de credenciais do sistema para armazenar dados sensíveis, como informações pessoais identificáveis (PII) e credenciais de usuário., ou chaves criptográficas.
Idealmente, os recursos de credenciais do sistema são a única maneira confiável de armazenar dados sensíveis. Mas, quando o sistema operacional é adulterado, seus recursos de armazenamento podem não ser confiáveis. Você não deve confiar cegamente em armazenamentos tão seguros para guardar segredos. Dadas as diversas técnicas para identificar root, jailbreak, emulação e outras ameaças — e considerando as ações personalizadas para cada tipo de ameaça —, um invasor pode se ver em apuros enquanto a próxima versão do sistema é lançada, com mecanismos de proteção totalmente diferentes, o que frustra ainda mais o atacante.
MSTG-ARMAZENAMENTO-10
O aplicativo não armazena dados sensíveis na memória por mais tempo do que o necessário, e a memória é apagada explicitamente após o uso.
Nossa criptografia de caixa branca oferece gerenciamento automático de chaves de sessão e sua evacuação. Além da criptografia, Digital.ai Application Security Também poderia monitorar acessos não permitidos à memória em todo o sistema operacional, permitindo que o cliente reagisse com uma lógica personalizada.
MSTG-CRYPTO-2
O aplicativo utiliza implementações comprovadas de primitivas criptográficas.
As implementações de criptografia apresentam muitas armadilhas potenciais, e é preciso ser um especialista na área para implementar tais algoritmos com a devida cautela. Felizmente, Digital.ai Application Security Oferecemos diversos algoritmos criptográficos confiáveis e prontos para uso imediato. Existem alguns problemas com bibliotecas criptográficas conhecidas e comprovadas. Algumas bibliotecas, como OpenSSL, Mbed-TLS e as fornecidas pelos sistemas operacionais Android e iOS, possuem assinaturas binárias identificáveis, permitindo que invasores localizem áreas sensíveis no código e até automatizem alguns processos, como a remoção de certificados. anti-adulteração A solução protege contra cenários de adulteração em que o código alvo utiliza essas bibliotecas públicas, oferecendo também uma solução criptográfica totalmente incorporada, protegida e oculta dentro do código, que impede que os invasores visualizem vestígios da nossa solução criptográfica.
MSTG-PLATFORM-1
O aplicativo solicita apenas o conjunto mínimo de permissões necessárias.
Nossa tecnologia oferece diversos recursos de segurança sem exigir nenhuma permissão especial.
MSTG-CÓDIGO-1
O aplicativo é assinado e provisionado com um certificado válido, cuja chave privada está devidamente protegida.
Além dos mecanismos de integridade do próprio sistema operacional, Digital.ai Application Security Fornece técnicas para detectar e proteger contra reempacotamento e aplicação de patches na memória.
Conclusões e pontos para reflexão
O MASVS é um documento essencial, escrito por voluntários, e indispensável para fornecedores de segurança de software móvel, seus potenciais clientes e seus clientes atuais. Esperamos que o texto acima sirva como um guia para as recomendações nas seções L1 e R do documento. A seguir, apresentamos alguns comentários sobre as posições adotadas pelo MASVS na seção “Prefácio”, particularmente nas seções que distinguem entre “proteções de segurança” e “controles de segurança”, que acreditamos merecerem uma discussão mais aprofundada.
Como mencionado na introdução, os requisitos de camada 1 (L1) especificados pelo MASVS formam a base para a segurança de aplicações e, em particular, para a segurança relacionada à privacidade. Acreditamos que essa base, identificada pelo MASVS, pode ser abalada por agentes maliciosos que se aproveitem de alguns emuladores, depuradores e kits de ferramentas de instrumentação dinâmica comuns e frequentemente utilizados. Por exemplo, quando o MASVS declara: “As proteções de software não são inúteis, mas podem ser contornadas, portanto, nunca devem ser usadas como substitutas dos controles de segurança.” Argumentamos que, mesmo que os programadores confiem no sistema operacional para segurança e sigam rigorosamente todos os requisitos de nível 1, esses requisitos não garantirão a funcionalidade básica de segurança se o sistema operacional subjacente estiver comprometido (ou seja, com jailbreak ou root). Nesse caso, o oposto é verdadeiro: usar proteções de software, como detecção de adulteração, conforme descrito na seção "Resiliência", é o único caminho confiável para a segurança. Por que acreditamos nisso? Considere, por exemplo, seu Keystore. Se o seu Keystore estiver totalmente exposto, o mesmo acontecerá com o sandbox da sua aplicação. Nesse caso, a aplicação e seus arquivos podem ser adulterados, reempacotados e instrumentados – o que poderia automatizar alguns processos, como a remoção de certificados e a extração de recursos. Além disso, existem casos em que o nível 1 de segurança (L-1) não protege adequadamente a privacidade. Por exemplo, malwares para dispositivos móveis podem comprometer o sistema operacional do dispositivo e facilitar a espionagem de aplicativos de mensagens instantâneas ou VoIP por parte de invasores, que podem se conectar a APIs estratégicas ou frameworks públicos através da identificação de suas assinaturas binárias.
Ainda no preâmbulo, a MASVS afirma que “A segurança móvel tem tudo a ver com a proteção de dados”. Isso costuma ser verdade, mas nem sempre. Ao lidar com informações sensíveis, como tokens de curta duração, é fundamental garantir que essas informações sejam inacessíveis. Segurança vai além da privacidade – muitas vezes está atrelada à continuidade dos negócios e à receita. Jogos, por exemplo, onde ocorrem muitas transações dentro do jogo, podem afetar apenas o lado do cliente. Além disso, muitos eventos do jogo obrigam o servidor a confiar na entrada do usuário por questões de latência. Por exemplo, os disparos em um jogo de tiro em primeira pessoa (FPS) envolvem diversas otimizações devido à frequência inerente desse evento específico – geralmente um evento por projétil.
A segurança do lado do cliente é um jogo constante de gato e rato: quando os desenvolvedores/programadores de aplicativos fornecem proteções suficientes, o atacante, frustrado, passa a buscar outro alvo. Além disso, o lançamento frequente de atualizações de cliente com ofuscação polimórfica torna a pesquisa contínua de aplicativos atuais inútil, frustrando ainda mais os atacantes.
Para mais informações sobre Digital.ai Application Security, clique em aqui..
Sobre Digital.ai
Digital.ai é uma empresa de tecnologia líder do setor, dedicada a ajudar empresas da Global 5000 a atingirem seus objetivos de transformação digital. Alimentado por AI DevSecOps A plataforma unifica, protege e gera insights preditivos ao longo de todo o ciclo de vida do software. Digital.ai Capacita as organizações a expandir suas equipes de desenvolvimento de software, entregar software continuamente com maior qualidade e segurança, ao mesmo tempo que descobrem novas oportunidades de mercado e aumentam o valor comercial por meio de investimentos mais inteligentes em software.
Informações adicionais sobre Digital.ai pode ser encontrada em digital.ai e na Twitter, LinkedIn e Facebook.
Saiba mais em Digital.ai Application Security
