Neste artigo vamos trabalhar um pouco com os conceitos de Secure by Design em ASPM e como as plataformas de Application Security Posture Manegement estão influenciando na postura de segurança das aplicações.
Em um momento onde continuamos a ver problemas de vazamentos de dados e vulnerabilidades em aplicações serem cada vez mais impactantes a negócios e empresas, precisamos olhar mais uma vez para os conceitos básicos e entender se estamos extraindo o melhor deles, e se conseguimos ainda mais uma visão de como está a maturidade de nossa aplicação.
Sendo assim, olhar para o processo de desenvolvimento e entender alguns conceitos básicos é um passo importante para estruturar o processo de forma a garantir que houve a aplicação dos conceitos de desenvolvimento seguro em toda a sua jornada de criação da aplicação.
Secure by Design – Modelagem de Ameaças
Sempre que falamos sobre segurança de aplicações é importante, sempre que possível, olharmos para os conceitos básicos e fundamentais para o desenvolvimento. Um destes fundamentos é o de Secure by Design, e entendo que vale para este artigo revermos quais os principais pontos que podemos aprender.
Nesse sentido, o ponto mais importante e básico quando falamos de Secure by Design é entendermos que o objetivo primário é que o pensamento de segurança seja colocado em todo o processo de desenvolvimento de aplicações, desde o início do processo. Com essa visão, o que se espera é criar um software mais resiliente e seguro, reduzindo a possibilidade de que o software possa ter vulnerabilidades.
Um dos primeiros conceitos que podemos extrair é o de Modelagem de Ameaças, e já falamos sobre esse tema algumas vezes no nosso blog, vale a leitura. Mas vamos novamente colocar aqui alguns pontos sobre modelagem e como ela impacta no processo de desenvolvimento.
Conceitualmente o processo de executar uma modelagem de ameaças deve ser realizado nas fases iniciais da aplicação, ainda quando estamos desenhando a solução e isso ajuda os times de desenvolvimento a identificar cenários onde a aplicação pode estar exposta a ameaças. Conseguindo desenhar estes cenários e entender quais seriam estas possíveis ameaças, conseguimos identificar requisitos, neste caso de segurança, que vão ser importantes para garantir a segurança da aplicação.
Secure by Design – Testes de Segurança
Outro conceito importante dentro de Secure by Design é o de testes de segurança. Dentro do processo de desenvolvimento testes devem ser realizados de forma contínua e ao longo de todo o ciclo de desenvolvimento, esse ponto é importante para a construção de uma aplicação segura. Na sua prática de Verification o SAMM nos mostra a necessidade de executarmos testes para Validar a Arquitetura, bem como testes Baseado em Requisitos e também Testes de Segurança. O objetivo básico desses testes é o de garantir a construção segura da aplicação.
Do mesmo modo, e de modo complementar a todos os outros testes, testes podem ser realizados de forma manual, é um modelo mais eficiente para se identificar vulnerabilidades ou mesmo melhorias no código. Isso não quer dizer que testes utilizando ferramentas não sejam adequados, muito pelo contrário as ferramentas vão oferecer a possibilidade de escalar toda a estrutura de testes, garantindo assim a eficácia do processo de testes.
Secure by Design – Treinamento e Conscientização
Outro conceito importante que quero trazer aqui, e que já falamos em alguns outros artigos aqui no blog, é sobre treinamentos e conscientização. Sim, isso é um conceito de Secure by Design e você já vai entender o porquê.
Já falamos que os times de desenvolvimento precisam usar as melhores práticas de mercado para o desenvolvimento de suas aplicações, também já falamos que precisamos estar atentos e informados das novas técnicas tanto de codificação quanto de exploração, e isso pode ser um dos grandes diferenciais entre um time reativo e um time proativo no desenvolvimento de software.
Além disso, garantir aos times de desenvolvimento a possibilidade de aprender e entender o que pode ser melhorado na aplicação é um dos investimentos mais importantes que um gestor de times de desenvolvimento pode ter, isso poderá garantir melhores resultados, e se alinhado com outras iniciativas, pode ser um ponto de virada para muitos times.
Poderíamos ficar aqui um tempo falando mais sobre outros conceitos presentes no tópico de Secure by Design, mas quero ficar com estes três e depois mostrar como ele pode e é integrado ao conceito de ASPM, que vamos ver logo a seguir.
ASPM: Entenda o que é e o que não é
Primordialmente, vamos entender o que não é ASPM. Acredito que assim ficará mais simples o entendimento do conceito.
Quando falamos de ASPM não falamos de uma ferramenta ou mesmo de um produto. ASPM não pode ser confundido com um produto, está muito além disso e pensar desta forma além de ser errado é bem simplista do ponto de vista de maturidade da postura de segurança.
Também, ASPM não é uma metodologia, nem mesmo um conjunto de práticas. ASPM não pode ser confundido com uma metodologia que deve ser aplicada a uma estrutura ou um processo para estruturar de uma forma entendida como adequada. Não é isso.
Bem, tiramos do caminho dois grandes pontos que são considerados hoje como ASPM, mas afinal de contas, o que é ASPM?
ASPM: O que é e como isso impacta no desenvolvimento de software?
Sobre tudo, se entendemos os pontos anteriores, vamos focar no que realmente é o ASPM, ou Application Security Posture Management.
ASPM é um conceito que plataformas e ferramentas utilizam para estruturar e organizar a postura de segurança de aplicações. Seguindo este princípio, podemos olhar para ferramentas e entender se o que elas nos entregam é uma visão
O Gartner, em seu artigo chamado “Innovation Insight for Application Security Posture Management” nos trás uma documentação rica em detalhes que nos ajudam a entender o que vem a ser e como trabalham ferramentas ou plataformas que usam os conceitos de ASPM.
Como podemos ver, Orquestrar, Correlacionar, Priorizar e Selecionar além de Gestão de Riscos são pontos que fazem parte de uma ferramenta ASPM. Mas aqui é importante deixarmos claro alguns pontos que podem confundir.
Contudo, pela sua capacidade integradora, ferramentas ASPM podem ser usadas como ferramentas que ajudam a orquestrar ferramentas de testes por todo o ciclo de desenvolvimento. Também ajudam no correlacionamento dos resultados de testes, por exemplo.
Aqui o termo “correlacionar” não pode ser entendido como analisar logs e aponta sequência de ações, como por exemplo ferramentas de SIEM fazem, aqui o termo correlacionar tem como finalidade entender de forma inteligente que eventos, sobre riscos e vulnerabilidades, identificados em várias fontes pode ser o mesmo.
Vamos a um cenário. Uma mesma vulnerabilidade foi identificada em dois momento diferentes, por fontes diferentes, ferramentas de ASPM devem ser inteligentes o suficiente para mostrar que está é a mesma vulnerabilidade, apenas identificada em fontes diferentes.
Todavia, ajudar e estruturar a possibilidade de priorizar e selecionar componentes ou vulnerabilidades mais críticas é também uma das características de tais ferramentas, e isso permite que vulnerabilidades sejam tratadas de forma adequada e no momento adequado dentro do processo de gestão de vulnerabilidades.
Isso liga com a última parte que é permitir gerir os riscos identificados de forma correta, atribuindo a criticidade adequada.
Esse tipo de visão é o que torna as ferramentas de ASPM uma ferramenta muito importante dentro do contexto de segurança de aplicações.
Qual o papel de ferramentas ASPM para Secure by Design?
Para trazer este entendimento, vou mostrar como nossa plataforma integra estes conceitos, mas para não ser muito extenso vou buscar mostrar alguns conceitos sendo trabalhados dentro da plataforma.
Requisitos de Segurança
De antemão, o primeiro ponto que quero tratar é a possibilidade de garantir aos times a possibilidade de construir um conjunto de requisitos baseados em um resultado de modelagem. Como falamos, a Modelagem de Ameaças vai proporcionar aos desenvolvedores a possibilidade de, ao identificar cenários de ameaça, escolher requisitos que possam mitigar estas ameaças.
Em nosso módulo de Secure by Design é possível aos times estruturarem um projeto de Modelagem de Ameaças, usando como base a estrutura de cenários de ataques já bem conhecida do CAPEC, o que facilita e muito a construção de cenários que podem afetar a aplicação sendo modelada.
Neste sentido, sendo estes cenários já criados, e os requisitos identificados, a própria plataforma já gera um estrutura de Requirements, que servirá de base para que os times de desenvolvimento possam planejar a implementação dos requisitos de forma prática e estruturada.
Aquisição de conhecimento
Um segundo ponto muito importante em ferramentas ASPM é permitir aos times a manutenção e aquisição de conhecimento. Nossa plataforma proporciona isso por meio de nosso módulo de People and Culture. O módulo permite ao desenvolvedor a possibilidade de praticar seus conhecimentos em situações que podem ajudar a entender uma vulnerabilidade e a como esta pode ser resolvida.
O que é importante aqui é entender que o módulo não tem como finalidade entregar aos times de desenvolvimento uma ferramenta de CTF (Capture the Flag) é muito mais do que isso. Esse módulo tem como objetivo proporcionar de forma prática e ativa a aquisição de conhecimento.
Visibilidade
Centralizar informações e permitir sua visualização facilitada é outra característica de ferramentas ASPM, aqui temos um exemplo disso.
Ao garantir a visibilidade dos dados, é possível entregar a todos os envolvidos no processo de desenvolvimento uma visão geral da postura de segurança e de como estamos garantindo a segurança das aplicações.
Integrações
A possibilidade de integrarmos várias ferramentas de testes nos permitem manter o fluxo contínuo testes de códigos, além de entregar aos analistas que farão testes de code review, informações importantes sobre a possibilidade de existência de vulnerabilidades em partes específicas do código. Com estas informações, é possível aos analistas realizarem uma análise de código muito mais focada e com a possibilidade de resultados mais eficientes.
Em conclusão, ferramentas de ASPM devem facilitar aos times de desenvolvimento e a todos os envolvidos no processo, a criação de aplicações mais seguras, e que conceitos e boas práticas de desenvolvimento podem, e devem, ser integradas à novas plataformas que tem como objetivo facilitar a atuação do desenvolvedor.
E você o que acha importante em ferramentas ASPM?
