· Droidwatch Security Research team · 8 min de leitura · Static Analysis Deep-Dives MASVS MASTG Segurança móvel
🌐 Read in English → 🌐 Leer en español →

O que MASVS e MASTG realmente medem

Os padrões móveis da OWASP avaliam controles de segurança, não intenções. Entender essa diferença separa um relatório útil de um enganoso.

O que MASVS e MASTG realmente medem

Um pedido recorrente na compra de segurança móvel é uma nota única para um aplicativo: uma letra, um percentual, algo que caiba em um slide. Os padrões móveis da OWASP parecem fornecer exatamente isso, e são frequentemente apresentados como se fornecessem.

Não fornecem, e a distância entre o que medem e o que se supõe que medem é grande o bastante para produzir a decisão errada.

Dois documentos, dois trabalhos

MASVS — Mobile Application Security Verification Standard — é uma lista de requisitos de segurança agrupados em categorias. Descreve o que um aplicativo bem construído deve fazer: criptografar o que armazena, validar o que recebe, resistir à adulteração.

MASTG — Mobile Application Security Testing Guide — é o manual de procedimento. Para cada requisito estabelece como verificá-lo: o que procurar, com qual ferramenta e o que constitui evidência.

O MASVS enuncia o requisito. O MASTG enuncia como a conformidade é demonstrada. Uma auditoria que cita o MASVS sem o MASTG enunciou uma conclusão sem o método que a produziu.

O teste prático dessa distinção é a reprodutibilidade. Um achado registrado como «falha em MASVS-NETWORK» não pode ser verificado por um terceiro. Um achado registrado como «falha em MASVS-NETWORK: networkSecurityConfig permite tráfego em texto claro para api.exemplo.com, observado no manifesto mesclado da build 4.2.1, SHA-256 …» pode ser reproduzido, contestado e confirmado como corrigido.

As oito categorias

O MASVS organiza os requisitos em oito grupos:

Categoria Do que trata Falha típica
MASVS-STORAGE O que o aplicativo grava em disco, e como Tokens de sessão em preferências compartilhadas
MASVS-CRYPTO Algoritmos, manejo de chaves, aleatoriedade Chaves embutidas; um gerador não criptográfico
MASVS-AUTH Autenticação e gestão de sessão Sessões que nunca expiram no servidor
MASVS-NETWORK Segurança de transporte, manejo de certificados Tráfego em texto claro permitido; sem pinning em pagamentos
MASVS-PLATFORM Interação com o sistema: IPC, WebViews, permissões Componentes exportados sem permissão que os proteja
MASVS-CODE Entrada, higiene de dependências, configuração de build debuggable sobrevivendo à release
MASVS-RESILIENCE Antiadulteração, antidepuração, ofuscação Sem verificações de integridade em app financeiro
MASVS-PRIVACY Coleta e divulgação de dados Rastreadores não declarados no manifesto de privacidade

O Droidwatch atribui cada achado à sua categoria e produz uma pontuação por categoria de 0 a 100, mais uma nota em letra. As penalizações são ponderadas por severidade: um achado crítico pesa 40 pontos, um alto 25, um médio 10 e um baixo 3. Os informativos não descontam. Indicadores de malware, como correspondências de assinaturas YARA ou padrões de sobreposição de trojan bancário, não pontuam em nenhuma categoria MASVS: pertencem ao veredito de risco.

Vale percorrer a aritmética uma vez, porque ela determina como uma nota deve ser lida. Um achado sozinho deixa sua categoria em 100 menos o seu peso: 60 se for crítico, 75 se for alto, 90 se for médio. Quando uma categoria acumula vários, o mesmo defeito repetido conta uma vez — cinco activities exportadas são um defeito, não cinco — e os defeitos distintos são ordenados do pior para o menor, cada um pesando metade do anterior, de modo que a penalização total nunca passa do dobro do pior achado. Uma categoria com um achado crítico pontua, portanto, 60 (D), e uma com quatro achados médios distintos pontua 81 (B). Não são problemas equivalentes: o primeiro é um defeito grave que provavelmente tem uma única correção, o segundo é um padrão de defeitos menores. A nota os ordena de um jeito; a lista de achados é o que mostra qual das duas situações está em jogo, e por isso a pontuação de categoria fica ao lado da lista de achados e não no lugar dela.

MASVS-RESILIENCE é pontuada de forma diferente das outras sete. Ela mede as proteções que o aplicativo tem, em quatro famílias — integridade da plataforma, antiadulteração, antianálise estática e antianálise dinâmica —, com 0, 40, 65, 85 ou 100 pontos conforme estejam presentes de zero a quatro famílias. Aparece no boletim, mas não entra na nota global, porque corresponde ao perfil R do MASVS, exigível de bancos e pagamentos e não de qualquer aplicativo.

Atenção à direção da escala, porque ela inverte a do outro número do mesmo relatório. A pontuação MASVS vai de 0 a 100 onde mais alto é melhor. A pontuação de risco vai de 0 a 100 onde mais alto é pior. Dois números, mesma faixa, significado oposto — confundi-los em um relatório é um erro frequente e caro.

A limitação que importa

Esta é a frase que deveria acompanhar toda nota MASVS, e que o Droidwatch embute nos próprios dados do boletim e não apenas na interface:

O MASVS mede controles de segurança, não intenções. Um aplicativo malicioso bem construído pode pontuar alto.

Não é uma ressalva por prudência. Decorre diretamente do que o padrão pede. Considere um trojan bancário que fixa seus certificados, criptografa seu banco de dados local com uma chave guardada no Keystore do Android, ofusca as próprias strings e detecta dispositivos com root.

Diante do MASVS esse aplicativo é exemplar. Implementa a segurança de transporte corretamente, trata o armazenamento corretamente e satisfaz os requisitos de resiliência melhor do que a maioria dos aplicativos legítimos, porque seu autor tem um interesse operacional direto em resistir à análise.

O propósito dele é sobrepor-se à tela de acesso de um banco e encaminhar as credenciais interceptadas. O MASVS nunca foi desenhado para notar isso.

O erro inverso também está disponível. Um aplicativo legítimo de banco de varejo que guarda um token de sessão em preferências legíveis por qualquer um e permite tráfego em texto claro para um endpoint de log produzirá um veredito de risco benigno, porque nada nele é hostil. Tampouco é seguro para publicar. Nenhum dos dois números está errado; cada um responde a uma pergunta que não foi feita ao outro.

Onde cada número se encaixa

A consequência prática é que um relatório de segurança móvel precisa dos dois números, usados para perguntas diferentes.

O veredito de risco responde a: este aplicativo é hostil? Apoia-se em sinais de comportamento — capacidade de sobreposição combinada com abuso de acessibilidade, interceptação de SMS, padrões de dropper, infraestrutura de comando e controle — e em reputação e correspondências de regras.

A nota MASVS responde a: este aplicativo é bem construído? É o instrumento correto para um aplicativo próprio que vai ser publicado, ou para um componente de terceiros que entra na cadeia de suprimentos.

Fazer a primeira pergunta a uma nota MASVS produz o trojan descrito acima: malware com nota máxima. Fazer a segunda a um veredito de risco produz um veredito benigno sobre um aplicativo que não deveria passar na revisão.

Pergunta Instrumento Destinatário
É hostil? Veredito de risco e achados SOC, resposta a incidentes, fraude
É bem construído? Boletim MASVS Segurança de aplicações, revisão de release
Podemos depender dele? Ambos, mais cadeia de suprimentos Compras, risco de terceiros

A ausência de evidência

Há mais uma distinção que muda como um boletim deve ser lido.

Uma categoria sem achados não é uma categoria aprovada. Pode ser uma categoria que nunca foi avaliada, porque a análise correspondente não rodou, porque o aplicativo não exercita aquela superfície, ou porque a evidência necessária fica fora do que o próprio pacote consegue mostrar.

Este último caso é o habitual, e é estrutural, não acidental. MASVS-AUTH pergunta sobre gestão de sessão, boa parte da qual é comportamento de servidor que um pacote não revela, e é a categoria que com mais frequência fica sem avaliar. Uma análise estática de um .ipa — que é tudo o que existe no iOS, ao longo dos seus sete módulos — deixará mais categorias sem avaliar do que uma análise de Android que possa ser acompanhada de instrumentação.

O Droidwatch marca essas categorias como sin_evaluar (não avaliada) em vez de pontuá-las, registra o motivo no próprio dado e informa quantas das oito foram efetivamente avaliadas. Um boletim com seis de oito sem avaliar é um documento diferente de um com oito de oito aprovadas, e confundir os dois é como «fizemos uma avaliação MASVS» vira uma garantia que ninguém verificou.

É o mesmo princípio que rege o restante do relatório: uma ferramenta forense precisa distinguir olhamos e não havia nada de não olhamos.

Como usar isso na prática

Para um aplicativo de terceiros sob suspeita, comece pelo veredito e pelos achados de comportamento. Cite o MASVS onde uma falha de controle concreta sustente o caso: a transmissão de credenciais em texto claro, por exemplo, é ao mesmo tempo uma falha de MASVS-NETWORK e evidência de intenção quando combinada com um endpoint de exfiltração.

Para um aplicativo próprio antes da publicação, comece pelo MASVS. Percorra as categorias de pior pontuação e use os procedimentos MASTG correspondentes para reproduzir cada achado antes de corrigi-lo. Um achado que não se consegue reproduzir é um achado que ninguém pode confirmar como corrigido.

Para uma avaliação de cadeia de suprimentos, leia os dois e trate as categorias sem avaliar como perguntas em aberto, não como aprovações. É o contexto em que mais importa a contagem de categorias avaliadas, porque um componente é frequentemente aceito pela força de um boletim que ninguém leu além da nota.

Para um portão de publicação recorrente, as categorias MASVS são a medida estável e o veredito de risco é o detector de anomalias. As pontuações por categoria de um aplicativo próprio deveriam se mover devagar e de forma previsível; uma queda súbita em MASVS-CODE entre duas builds costuma significar que uma dependência mudou. Automatizar essa comparação é para o que serve um portão de pipeline.

Os dois números aparecem no mesmo relatório, ao lado do mapeamento MITRE ATT&CK Mobile e da evidência por achado. O percurso do relatório explica onde cada um está e como o restante do documento se organiza.


Para ver os dois números sobre um aplicativo real, envie um APK. Não é necessário meio de pagamento.

Threat Research

Droidwatch's research team analyzes Android & iOS malware — banking trojans, spyware, droppers and overlay kits — and writes up the static and dynamic signals that give them away. Every post is grounded in real platform output.

Analise seu primeiro app grátis — arraste um APK ou um .ipa de iOS para a página inicial e em poucos minutos terá um relatório estático completo. Comece grátis