O que é segurança padrão (L1)? É seguro o suficiente? O MASVS (Móvel Esteira Application Security Padrão de Verificação) de OWASP é o padrão de fato para qualquer pessoa que analise a segurança de um aplicativo, sejam eles testadores, engenheiros de segurança ou proprietários de aplicativos.
A fim de projetar um aplicativo seguro, você deve confiar na base na qual o aplicativo foi criado. Seja um aplicativo e seu sistema operacional, firmware e hardware ou uma página da Web em um navegador – o que acontece quando a própria base não é segura?
R – A resiliência é um tema importante no MASVS, e alguns veem o “R” como uma recomendação. No Digital.ai acreditamos que a resiliência é a base segura real em um ambiente inseguro. O nível “R” é fundamental para proteger o nível L1 “Standard Security”. Por que? Porque as medidas de segurança padrão descritas em L-1 são quebradas com muita facilidade quando os aplicativos são executados em ambientes inseguros. Ambientes inseguros incluem dispositivos móveis com jailbreak ou com root, emuladores e até mesmo dispositivos infectados por malware. Todos esses ambientes são comuns. Na verdade, em uma meta-análise dos milhões de instâncias de aplicativos que Digital.ai protege, descobrimos que em qualquer semana mais da metade dos aplicativos que protegemos são colocados em unsafe ambientes.
Na postagem de blog a seguir, discutiremos os requisitos de resiliência e como atendê-los usando ofuscação de código, monitoramento e ferramentas RASP. Também compartilharemos percepções e opiniões sobre as recomendações de L1 – Segurança Padrão, seus vetores de ataque correspondentes e as maneiras pelas quais você pode mitigá-los. Por fim, discutiremos alguns desafios que ocorrem quando os engenheiros de aplicação seguem apenas as recomendações L-1. Começaremos com os requisitos de nível superior ou "Resiliência" discutidos no MASVS.
O que é MASVS?
A Móvel Esteira Application Security Padrão de Verificação, ou “MASVS”, é uma lista compilada de diferentes recomendações espalhadas por várias áreas, como rede, armazenamento, integridade e muito mais. Estas 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 de código, manipulação de dados sensíveis e interação com o ambiente móvel.
- MASVS-L2 – Defesa em Profundidade: Este modelo tem tudo incluído no MASVS-L1, além de recomendações adicionais baseadas no modelo de ameaças para setores como bancos e saúde, que lidam com dados particularmente confidenciais.
- MASVS-R – Resiliência contra engenharia reversa e adulteração: Proteção contra ataques específicos do lado do cliente, como adulteração, modding, ou engenharia reversa.
Como atender aos requisitos de resiliência
MSTG-RESILIÊNCIA-1
O aplicativo detecta e responde à presença de um dispositivo com root ou desbloqueado, alertando o usuário ou encerrando o aplicativo.
Digital.ai Application Security detecta muitos métodos sofisticados de detecção de root e jailbreak. Somos capazes até 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 a um depurador sendo anexado. Todos os protocolos de depuração disponíveis devem ser cobertos.
Digital.ai O App Security oferece proteção total contra depuradores.
MSTG-RESILIÊNCIA-3
O aplicativo detecta e responde à adulteração de arquivos executáveis e dados críticos em sua própria caixa de proteção.
As bibliotecas de criptografia de código aberto, como OpenSSL e Mbed-TLS, são facilmente detectadas pelos invasores. Como nossas proteções fornecem um arsenal de criptografia de caixa branca algoritmos usando implementação proprietária, Digital.ai os clientes podem implementar verificações de integridade com eficiência sem deixar rastros que possam ser identificados pelos invasores.
MSTG-RESILIÊNCIA-4
O aplicativo detecta e responde à presença de ferramentas e estruturas de engenharia reversa amplamente usadas 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 ao ser executado em um emulador.
Digital.ai Application Security pode detectar emuladores como o QEMU testando a CPU na qual o aplicativo protegido está sendo executado.
MSTG-RESILIÊNCIA-6
O aplicativo detecta e responde à adulteração do código e dos 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ção. Além disso, podemos detectar tentativas de desviar a detecção de adulteração. Também detectamos editores de memória como GameGuardian e iGameGod – e podemos detectar varreduras de memória quando atos de adulteração são suspensos.
MSTG-RESILIÊNCIA-7
O aplicativo implementa vários mecanismos em cada categoria de defesa (8.1 a 8.6). Observe que a resiliência escala com a quantidade, a diversidade da originalidade dos mecanismos usados.
Digital.ai Application Security os clientes escolhem quando e como implementar e invocar um variedade de métodos de detecção. Por exemplo, sempre que um evento de violação for detectado, seja por um processo oculto em segundo plano ou por uma simples violação de integridade, o cliente pode escolher o que deseja. (GROSA) resposta. O cliente poderia encerrar o aplicativo, forçar o usuário final a autenticar novamente usando autenticação de dois fatores ou inverter a configuração de gravidade em um jogo para zero, arruinando assim a jogabilidade do trapaceiro, sem deixar vestígios da adulteração originária. código de detecção.
MSTG-RESILIÊNCIA-8
Os mecanismos de detecção desencadeiam respostas de diferentes tipos, incluindo respostas atrasadas e furtivas.
Digital.ai Application Security permite que o cliente controle quando e onde as proteções são invocadas com manipuladores personalizados e agendadores furtivos. Nós até fornecemos uma função 'crash' que encerra abruptamente o aplicativo sem revelar a origem do código que causou a falha.
MSTG-RESILIÊNCIA-9
A ofuscação é aplicada a 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. Possuímos 6 patentes relacionadas à ofuscação de código, incluindo a primeira patente já concedida para ofuscação de código. Digital.ai Application Security fornece uma solução de nivelamento de código que ofusca fortemente o código. Além disso, nossas variáveis e constantes de criptografia de caixa branca são ofuscadas e “vivem” na memória por curtos períodos de tempo, de modo que o despejo de processo ou os scanners de criptografia automáticos não possam gerar nenhum benefício. Também fornecemos proteção de ofuscação de cadeia de caracteres em tempo de execução, bem como ofuscação total para tempos 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 no nível do arquivo e/ou códigos importantes e segmentos de dados dentro dos executáveis são criptografados ou compactados. A análise estática trivial não revela códigos ou dados importantes.
Oferecemos diferentes soluções de criptografia para códigos e dados. Por exemplo, no Android, Digital.ai Application Security suporte a criptografia DEX e criptografia nativa de biblioteca compartilhada, emparelhados com nossa criptografia de caixa branca e nossos recursos de antidepuração e instrumentação cobririam o produto estática e dinamicamente, deixando o invasor sem noção.
MSTG-RESILIÊNCIA-12
Se o objetivo da ofuscação é proteger computações sensíveis, é usado um esquema de ofuscação que seja apropriado para a tarefa e robusto contra métodos de desofuscação manuais e automatizados, considerando pesquisas publicadas atualmente. A eficácia do esquema de ofuscação deve ser verificada por meio de testes manuais. Observe que os recursos de isolamento baseados em hardware são preferíveis à ofuscação sempre que possível.
Toda ofuscação pode eventualmente ser derrotada, mas bons ofuscadores não podem ser desofuscados automaticamente. Nossas técnicas de ofuscação incluem muitas proteções ativas contra desofuscadores e emuladores e são testados contra todas as soluções publicamente disponíveis, incluindo descompiladores JEB.
MSTG-RESLIÊNCIA-13
Como uma defesa em profundidade, além de ter proteção sólida das partes que se comunicam, a criptografia de carga útil no nível do aplicativo pode ser aplicada para impedir ainda mais a espionagem.
Para espionar as comunicações, um invasor tem 3 métodos principais:
- Realize um ataque Man in the Middle (MITM) (por exemplo, removendo a fixação de certificado)
- Adulterar as funções de criptografia
- Adulterar a função de rede
Nosso Application Security A solução detecta qualquer tipo de adulteração, inclusive adulteração do próprio código do sistema operacional. Nosso produto de proteção de dados e chaves não pode ser detectado automaticamente usando ferramentas disponíveis publicamente. Juntas, essas duas soluções evitam os três métodos descritos acima.
Requisitos L1
MSTG-ARCH-1
Todos os componentes do aplicativo são identificados e conhecidos como 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, a remoção de código desnecessário pode aumentar sua superfície de ataque. Com aplicativos móveis, o código enxuto pode ser uma coisa ruim. Componentes identificáveis menores são um jackpot para os invasores. A ofuscação de código é a primeira linha de defesa contra a engenharia reversa estática e a codificação de maneira enxuta e lógica, infelizmente, torna a vida mais fácil para os invasores.
MSTG-ARCH-10
A segurança é abordada em todas as partes do ciclo de vida de desenvolvimento de software. É muito fácil marcar um cheque e passar para o próximo.
A segurança é realmente uma questão de conscientização e sempre leva você a lugares que você menos esperava. Digital.ai Application Security protege seu aplicativo como uma caixa preta que não pode ser adulterada, ao mesmo tempo em que fornece recursos estratégicos para você confiar em ambientes corrompidos.
MSTG-ARMAZENAMENTO-1
As instalações de armazenamento de credenciais do sistema precisam ser usadas para armazenar dados confidenciais, como PII, credenciais do usuário, ou chaves criptográficas.
Idealmente, as instalações de credenciais do sistema são a única maneira confiável de armazenar dados confidenciais. Mas quando o sistema operacional foi adulterado, suas instalações de armazenamento podem não ser confiáveis. Você não deve confiar cegamente em tais lojas seguras para armazenar segredos. Dadas muitas técnicas diferentes para identificar enraizamento e JB, emulação e muito mais – e dadas ações personalizadas por ameaça – um invasor pode se encontrar lutando com o alvo enquanto a próxima versão é lançada, com mecanismos de proteção totalmente diferentes, frustrando o invasor.
MSTG-ARMAZENAMENTO-10
O aplicativo não mantém dados confidenciais na memória por mais tempo do que o necessário e a memória é limpa explicitamente após o uso.
Nossa criptografia de caixa branca oferece gerenciamento automático de chave de sessões e sua evacuação. Além da criptografia, Digital.ai Application Security também pode monitorar acessos de memória não permitidos de todo o sistema operacional, permitindo que o cliente reaja com uma lógica personalizada.
MSTG-CRYPTO-2
O aplicativo usa implementações comprovadas de primitivas criptográficas.
As implementações de criptografia têm muitas armadilhas potenciais, e é preciso ser um especialista de campo para implementar tais algoritmos com o cuidado certo em mente. Felizmente, Digital.ai Application Security oferece muitos algoritmos criptográficos diferentes nos quais você pode confiar e usar imediatamente. Existem alguns problemas com bibliotecas de criptografia conhecidas e comprovadas. Algumas bibliotecas como OpenSSL, Mbed-TLS e aquelas fornecidas pelos sistemas operacionais Android e iOS possuem assinaturas binárias identificáveis, permitindo que invasores identifiquem áreas sensíveis no código e até mesmo automatizem alguns processos, como a liberação de certificados. Nosso anti-adulteração A solução protege contra cenários de adulteração em que o código alvo usa essas bibliotecas públicas, ao mesmo tempo que oferece uma solução de criptografia totalmente incorporada, protegida e oculta dentro do código, o que evita que invasores visualizem vestígios de nossa solução criptográfica.
MSTG-PLATAFORMA-1
O aplicativo solicita apenas o conjunto mínimo de permissões necessárias.
Nossa tecnologia concede muitos recursos de segurança sem exigir nenhuma permissão especial.
MSTG-CÓDIGO-1
O aplicativo é assinado e fornecido com um certificado válido, cuja chave privada está devidamente protegida.
Além dos próprios mecanismos de integridade do 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 mais alimentos para reflexão
O MASVS é um verdadeiro documento escrito por voluntários e indispensável para fornecedores de segurança de software móvel, seus prospects e clientes. Esperamos que o texto acima forneça aos nossos leitores um guia para as recomendações nas seções L1 e R do documento. A seguir, alguns comentários sobre algumas das posições que o MASVS assume no “Forward”, particularmente nas seções que distinguem entre “proteções de segurança” e “controles de segurança” que acreditamos merecer uma discussão mais aprofundada.
Conforme mencionado na introdução, os requisitos L1 especificados pelo MASVS formam uma base para application security e, em particular, segurança no que se refere à privacidade. Acreditamos que a base que o MASVS identifica pode ser essencialmente abalada por agentes de ameaças que se valem de alguns emuladores, depuradores e kits de ferramentas de instrumentação dinâmica comumente disponíveis e usados com frequência. Por exemplo, quando o MASVS “Forward” declara: “As proteções de software não são inúteis, mas podem ser contornadas, portanto, nunca devem ser usadas como um substituto para os controles de segurança” respondemos que, mesmo que os codificadores dependam do sistema operacional para segurança e sigam todos os requisitos L-1 à risca, os requisitos L-1 não fornecerão funcionalidade básica de segurança se o sistema operacional subjacente estiver quebrado (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 que este seja o caso? Veja, por exemplo, seu Keystore. Se o Keystore estiver totalmente exposto, a caixa de proteção do aplicativo também estará. Nesse caso, o aplicativo e seus arquivos podem ser adulterados, reempacotados e instrumentados – o que pode automatizar alguns processos, como liberação de certificados e extração de recursos. Além disso, há casos em que L-1 não protege adequadamente a privacidade. O malware de dispositivos móveis, por exemplo, pode quebrar o sistema operacional móvel e tornar mais fácil para os invasores espionar mensagens instantâneas ou aplicativos VOIP, conectando APIs estratégicas ou estruturas públicas por meio da identificação de suas assinaturas binárias.
Ainda no Forward, o MASVS afirma que “Segurança móvel tem tudo a ver com proteção de dados”. Muitas vezes isso é verdade, mas nem sempre. Ao lidar com informações confidenciais, como tokens de curta duração, você deve garantir que essas informações estejam inacessíveis. A segurança é mais do que privacidade – geralmente está associada à continuidade dos negócios e à receita. Os 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 forçam o servidor a confiar na entrada do usuário por motivos de latência. Por exemplo, tiros em um jogo FPS envolvem muitas otimizações devido à frequência inerente daquele evento específico – geralmente um evento por bala.
A segurança do lado do cliente é um jogo contínuo de gato e rato, quando os desenvolvedores/codificadores de aplicativos fornecem proteções suficientes, o invasor passará para um alvo diferente por frustração. Além disso, liberar atualizações frequentes do cliente com ofuscação polimórfica torna inútil a pesquisa contínua dos aplicativos atuais, frustrando ainda mais os invasores.
Para mais informações sobre Digital.ai Application Security, clique em SUA PARTICIPAÇÃO FAZ A DIFERENÇA.
Sobre Digital.ai
Digital.ai é uma empresa de tecnologia líder do setor, dedicada a ajudar as empresas Global 5000 a atingir metas de transformação digital. A empresa Alimentado por AI DevSecOps plataforma unifica, protege e gera insights preditivos em todo o ciclo de vida do software. Digital.ai capacita as organizações a dimensionar equipes de desenvolvimento de software, fornecer continuamente software com maior qualidade e segurança, ao mesmo tempo em que descobre novas oportunidades de mercado e aumenta o valor comercial por meio de investimentos em software mais inteligentes.
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