Compreendendo o SAMM
Tags: owasp, samm, appsec
Published: 2024-07-12 21:13:38

Quem trabalha com desenvolvimento de aplicações ou segurança cibernética possivelmente já ouviu falar da OWASP e seus principais projetos. Nesse artigo vou falar um pouco sobre o Software Assurance Maturity Model - SAMM. 


**OWASP**

Se essa é a primeira vez que escuta sobre a OWASP, convido-o a visitar o [site oficial](https://owasp.org/) e ler um [rápido artigo](https://dev.to/brmartin/eu-me-associei-a-owasp-3jb1) que escrevi há um tempo. Uma breve descrição seria: 

A OWASP (Open Web Application Security Project) é uma fundação sem fins lucrativos dedicada ao aprimoramento da segurança de software. Por meio de projetos de código aberto colaborativos, uma vasta rede de comunidades locais globais, dezenas de milhares de membros e conferências educacionais de destaque, a OWASP Foundation se destaca como uma referência para desenvolvedores e profissionais de tecnologia que buscam proteger a web. 

Portanto, a OWASP é conhecida por seus recursos, ferramentas e documentações, que são amplamente utilizados por profissionais de segurança da informação. 


**Projeto SAMM**

Sobre o SAMM eu diria que o objetivo desse framework é entender o ponto de maturidade que a empresa avaliada se encontra no momento da entrevista e em qual ponto se deseja chegar, em termos de práticas de segurança. A partir desse entendimento, formular ou melhorar, e implementar uma estratégia com processos definidos adaptados ao apetite de riscos da Organização, que pode ser integrada ao Software Development Lifecycle (SDLC) existente. 

Essa avaliação pode ser realizada de forma externa, através de um avaliador externo, ou através de uma autoavaliação realizada por uma equipe interna de segurança. A representação de todos os stakeholders é fundamental para o sucesso da atividade. 

A estrutura do framework é dividida em 5 áreas de negócios com cada uma subdividida em três práticas de segurança: Governança (Estratégia e Métricas / Política e Conformidade / Educação e Orientação), Design ( Avaliação de Ameaça / Requisitos de Segurança / Arquitetura Segura), Implementação (Construção Segura / Implantação Segura / Gestão de Defeitos), Verificação (Avaliação de Arquitetura / Testes Orientados a Requisitos / Teste de Segurança), Operações (Gestão de Incidentes / Gestão Ambiental / Gestão Operacional). 

Por fim, para cada prática de segurança, o SAMM define dois fluxos (stream) e três níveis de maturidade.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nlcp29e4oj41iec4czj0.png)

É importante destacar, que este modelo necessita de reavaliações contínuas. O monitoramento e ajustes das práticas é um ponto crucial para a melhoria contínua. 

A planilha de Assessment Interview 
Na primeira aba, estão os campos que deverão ser respondidos com base nas respostas dadas na entrevista. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lfqajd598r29fpn05tiq.png)

A segunda aba apresenta o Scorecard. Facilitando a visualização da pontuação atingida e quais pontos necessitam de melhorias.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fck7m27vbs83pe001c0a.png)

Na terceira aba encontramos o Roadmap, onde são descritas as ações e iniciativas a serem implementadas em cada fase do processo de maturidade, com base na avaliação inicial de maturidade (scorecard) e nos objetivos de segurança da organização. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/leir79h2ewy6oqrxp7bp.png)

E por fim, na última aba o Roadmap Chart é a representação visual do roadmap. 

**Como busquei o entendimento**

Venho estudando muitos assuntos importantes para os profissionais de AppSec e o tema atual tem sido o SAMM. Dentro desse tópico, o conteúdo em vídeo (em português) do Eduardo B. Santos, MSc com teoria e demonstração prática como também o [curso oficial](https://owaspsamm.thinkific.com/courses/samm) (em inglês) do SAMM têm me ajudado bastante a consolidar conceitos que venho aplicando nas aulas do Luiz Henrique Custódio, onde tivemos a oportunidade de colocar a mão na massa e praticar em estudos de caso. 

**Prática**

Durante o treinamento da Conviso, o Luiz Henrique Custódio nos desafiou a realizar um assessment utilizando o SAMM.  O SAMM disponibiliza uma [planilha Assessment Interview](https://github.com/owaspsamm/core/releases/download/v2.0.8/SAMM_spreadsheet.xlsx), para ser utilizada como guia da entrevista de assessment. Estudos de caso e uma documentação extensa também estão disponíveis no site oficial do projeto OWASP SAMM.  

Divididos em grupos, nossa tarefa era ler a documentação do estudo de caso e fazer perguntas pontuais ao cliente imaginário. 

Esta atividade consistia em analisar uma empresa fictícia chamada CNVS BANKING, uma empresa especializada em serviços bancários com um quadro de 500 colaboradores, sendo 50 profissionais na equipe de TI. 

Lembrando que não existem respostas certas ou erradas, fomos analisando o texto do estudo de caso e, na falta de informações, questionávamos o Luiz, nosso cliente imaginário, para maiores entendimentos. 

Em situações reais, é aconselhável que se realize uma entrevista por área de negócio, mas com participantes plurais, ou seja, de áreas distintas que estejam envolvidas naquele ponto. Dessa forma, começamos não apenas a avaliar, mas entender a dor de cada um. 

Embora a atividade de preencher a planilha seja muito simples, ela se torna desafiadora quando obter as informações do ambiente o mais fidedignas possíveis é algo muito complexo. Aqui não se buscam evidências. 

O propósito principal não é auditar, mas gerar um autoconhecimento, buscando autonomia e aprendizado para elevação da maturidade do ambiente. Como consequência, cria-se uma cultura de proximidade entre equipes de desenvolvedores, de segurança e demais áreas envolvidas, onde uma enxerga a dor da outra, e o entendimento do propósito de se buscar uma elevação da maturidade.  

Não trarei todas as avaliações de maturidade para não me estender muito, mas durante essa atividade alguns pontos me chamaram atenção, como o fato do time de DevOps afirmar que a modelagem de ameaças está em elaboração, porém o time de desenvolvimento não saber do que se trata. Notei uma falta de proximidade e comunicação entre as equipes, a qual levará a uma entrega que possivelmente criará atritos e ausência de engajamento. Assim, uma baixa pontuação foi atingida em Design.  

Pelo lado positivo, as documentações de boas práticas de gerenciamento de secrets e o processo de priorização, realizado pelo analista de Appsec responsável pelo squad, garantindo que as particularidades de cada projeto sejam tratadas de acordo, no meu entendimento elevaram o nível de maturidade das práticas de segurança na Implementação. 

Pude constatar após a atividade prática, a importância da realização das entrevistas e o uso do SAMM para a elevação da maturidade de segurança no desenvolvimento de software. Ele nos traz uma visão mais clara do ambiente de uma determinada empresa e ajuda no planejamento dos próximos passos para tornar uma aplicação mais segura possível. 

A melhor maneira de entender o SAMM é começar a usá-lo. 


**SAMMwise**

O readme do repositório do projeto assim o define: 

“SAMMwise é um Web App de código aberto para calcular a pontuação de Maturidade de um indivíduo, empresa ou projeto usando o modelo SAMM. O aplicativo o orienta pela avaliação, permite que você salve e reutilize avaliações concluídas anteriormente e apresenta os resultados em um estilo semelhante à planilha.” 

Seria então uma forma mais “moderna” de adoção do SAMM. Se desejar saber um pouco mais sobre a ferramenta, aconselho a leitura do artigo do Diego Pereira, [Utilizando SAMMWise](https://www.linkedin.com/pulse/utilizando-sammwise-diego-pereira-vwdff/). 


**OpenCRE**

Nesse período de estudo tive a grata surpresa de descobrir o [OpenCRE](https://www.opencre.org/).  

O projeto Open Source "OpenCRE" integra todos os padrões e diretrizes de segurança no nível de requisitos em um recurso unificado e harmonizado. Usar o OpenCRE com o SAMM oferece benefícios como acesso a recursos adicionais, comparação com outros padrões de segurança e eliminação de lacunas entre diferentes estruturas de segurança. 

Para quem já está surfando a onda das IAs, eles oferecem também um [chatbot](https://www.opencre.org/chatbot). 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c6qdyz12qp0uwaam8zcu.png)

Em um cenário onde a cibersegurança é vital, o SAMM é um guia valioso para proteger aplicações de forma eficaz. 

Em meus estudos não encontrei a planilha em português, porém quem tiver ou souber da existência de uma tradução do material seria interessante compartilhar nos comentários. Afinal, esse é o propósito de comunidades como a OWASP, ambientes colaborativos em prol da evolução da segurança da web. 

Aproveito para deixar como sugestão de leitura, uma série de artigos que explicam ponto a ponto a estrutura do framework SAMM. 

[Programa de segurança de aplicações baseado no OWASP SAMM](https://blog.convisoappsec.com/implementando-um-programa-de-seguranca-de-aplicacoes-baseado-no-owasp-samm/)    


**Aproveitem!**