Prefácio¶
As revoluções tecnológicas podem acontecer rapidamente. Há menos de uma década, os smartphones eram dispositivos desengonçados com pequenos teclados - brinquedos caros para usuários empresariais tecnologicamente experientes. Hoje, os smartphones são uma parte essencial de nossas vidas. Passamos a depender deles para informação, navegação e comunicação, e eles são onipresentes tanto nos negócios quanto em nossa vida social.
Toda nova tecnologia introduz novos riscos de segurança, e acompanhar essas mudanças é um dos principais desafios que a indústria de segurança enfrenta. O lado defensivo está sempre alguns passos atrás. Por exemplo, o reflexo padrão de muitos foi aplicar as antigas formas de fazer as coisas: smartphones são como pequenos computadores, e aplicativos móveis são como softwares clássicos, então certamente os requisitos de segurança são similares? Mas não funciona assim. Os sistemas operacionais de smartphones são diferentes dos sistemas operacionais de desktop, e os aplicativos móveis são diferentes dos aplicativos web. Por exemplo, o método clássico de verificação de vírus baseada em assinatura não faz sentido em ambientes modernos de sistemas operacionais móveis: não só é incompatível com o modelo de distribuição de aplicativos móveis, como também é tecnicamente impossível devido às restrições de sandbox. Além disso, algumas classes de vulnerabilidades, como estouro de buffer e problemas de XSS, são menos relevantes no contexto de aplicativos móveis comuns do que em, digamos, aplicativos de desktop e aplicações web (há exceções).
Com o tempo, nossa indústria obteve um melhor entendimento do panorama de ameaças móveis. Como se vê, a segurança móvel tem tudo a ver com proteção de dados: aplicativos armazenam nossas informações pessoais, fotos, gravações, notas, dados de conta, informações de negócios, localização e muito mais. Eles atuam como clientes que nos conectam a serviços que usamos diariamente e como centros de comunicação que processam cada mensagem que trocamos com outras pessoas. Comprometa o smartphone de uma pessoa e você terá acesso irrestrito à vida dessa pessoa. Quando consideramos que os dispositivos móveis são mais facilmente perdidos ou roubados e que o malware móvel está em ascensão, a necessidade de proteção de dados se torna ainda mais evidente.
Um padrão de segurança para aplicativos móveis deve, portanto, focar em como os aplicativos móveis manipulam, armazenam e protegem informações sensíveis. Embora sistemas operacionais móveis modernos como iOS e Android ofereçam APIs maduras para armazenamento seguro de dados e comunicação, estes devem ser implementados e usados corretamente para serem eficazes. Armazenamento de dados, comunicação entre aplicativos, uso adequado de APIs criptográficas e comunicação segura de rede são apenas alguns dos aspectos que requerem consideração cuidadosa.
Uma questão importante que precisa de consenso da indústria é até que ponto exatamente se deve ir para proteger a confidencialidade e integridade dos dados. Por exemplo, a maioria de nós concordaria que um aplicativo móvel deve verificar o certificado do servidor em uma troca TLS. Mas e o pinning de certificado ou chave pública? Não fazê-lo resulta em uma vulnerabilidade? Isso deveria ser um requisito se um aplicativo manipula dados sensíveis, ou talvez seja até contraproducente? Precisamos criptografar dados armazenados em bancos de dados SQLite, mesmo que o sistema operacional coloque o aplicativo em sandbox? O que é apropriado para um aplicativo pode ser irreal para outro. O MASVS é uma tentativa de padronizar esses requisitos usando perfis que se adequam a diferentes cenários de ameaças.
Além disso, o aparecimento de malware de root e ferramentas de administração remota criou a consciência do fato de que os sistemas operacionais móveis em si têm falhas exploráveis, então estratégias de conteinerização são cada vez mais usadas para proporcionar proteção adicional a dados sensíveis e prevenir adulteração no lado do cliente. É aqui que as coisas ficam complicadas. Recursos de segurança baseados em hardware e soluções de conteinerização em nível de sistema operacional, como Android Enterprise e Samsung Knox, existem, mas não estão consistentemente disponíveis em diferentes dispositivos. Como uma solução paliativa, é possível implementar medidas de proteção baseadas em software - mas, infelizmente, não há padrões ou processos de teste para verificar esses tipos de proteções.
Como resultado, os relatórios de teste de segurança de aplicativos móveis são muito variados: por exemplo, alguns testadores relatam a falta de ofuscação ou detecção de root em um aplicativo Android como "falha de segurança". Por outro lado, medidas como criptografia de strings, detecção de depurador ou ofuscação de fluxo de controle não são consideradas obrigatórias. No entanto, essa forma binária de ver as coisas não faz sentido porque a resiliência não é uma proposição binária: depende das ameaças específicas do lado do cliente que se pretende defender. As proteções de software não são inúteis, mas podem ser contornadas, portanto, nunca devem ser usadas como substituto para controles de segurança.
O objetivo geral do MASVS é oferecer uma base para a segurança de aplicações móveis, permitindo também a inclusão de medidas de defesa em profundidade e proteções contra ameaças do lado do cliente. O MASVS pretende alcançar o seguinte:
- Fornecer requisitos para arquitetos de software e desenvolvedores que buscam desenvolver aplicativos móveis seguros;
- Oferecer um padrão da indústria que possa ser testado em revisões de segurança de aplicativos móveis;
- Esclarecer o papel dos mecanismos de proteção de software na segurança móvel e fornecer requisitos para verificar sua eficácia;
- Fornecer recomendações específicas sobre qual nível de segurança é recomendado para diferentes casos de uso.
Estamos cientes de que 100% de consenso da indústria é impossível de alcançar. No entanto, esperamos que o MASVS seja útil para fornecer orientação em todas as fases de desenvolvimento e teste de aplicativos móveis. Como um padrão de código aberto, o MASVS evoluirá com o tempo e damos as boas-vindas a quaisquer contribuições e sugestões.
Por Bernhard Mueller