OpenSAMM o que é e para que serve?
O SAMM[1] é um framework aberto para ajudar as organizações a formular e implementar uma estratégia para a segurança de software, foi originalmente desenvolvido por Pravir Chandra, um consultor independente de segurança de software. Após o seu lançamento ele foi integrado a OWASP (Open Web Application Security Project) que ficou conhecido como Open SAMM.
O Open SAMM foi projetado para ser bem flexível assim podendo ser utilizado em pequenas, médias e grandes empresas e utilizando qualquer estilo de desenvolvimento, podendo ser aplicado para projetos individuais ou para toda uma organização.
Ele possui recursos que o ajudarão em:
- Avaliar as práticas de segurança da organização
- Elaborar um programa de segurança de software balanceado
- Definir e medir atividades relacionadas a segurança na organização
O Open SAMM especifica quatro funções de negócios críticos, cada um com três práticas de
segurança, são elas:
Governança
São as atividades da gerência, que seria examinar os grupos de desenvolvimento e também gerenciar os níveis dos negócios estabelecidos pela empresa.
.
Estratégia e Métricas: Definição da estratégia que será utilizada para a garantia de software ou seja criar definições de metas de segurança e também estudar os riscos da empresa.
Políticas e Conformidade: Entender as diretrizes/políticas e regulamentá-las nos padrões de seguranças, também fazer auditorias para descobrir se algum projeto não está dentro das expectativas.
Orientação e Educação: Ensinar as pessoas que estão envolvidas no desenvolvimento do software como desenvolver e implementar um software mais seguro, o OpenSAMM também indica que uma boa alternativa para melhorar o desempenho é através de objetivos para cada funcionário.
Construção
Definir metas e criar os software dentro dos padrões. Isso inclui o gerenciamento do produto, a especificação do nível da arquitetura, design e implementação.
.
Modelagem de Ameaças: Identificar e entender os níveis de risco na funcionalidade do software no ambiente em que ele será executado, a partir dos detalhes conseguidos ficara mais fácil tomar decisões.
Requisitos de Segurança: Definir qual será o comportamento esperado a respeito da segurança do software, definindo cada processo por níveis e fazer auditorias para garantir que todas as especificações de segurança estão sendo utilizadas.
Arquitetura Segura: Projetar softwares seguros por padrões, reutilizando os componentes assim os riscos de segurança do software serão drasticamente reduzidos.
Verificação
Verificações e testes nos produtos durante o desenvolvimento do software, garantindo uma boa qualidade do software.
Revisão de Arquitetura: Avaliar a segurança da arquitetura do software, permitindo assim detectar problemas logo no inicio. Quando se resolve o problema no inicio se reduz também o tempo e dinheiro que seria gasto a procura desse problema.
Revisão de Código: Inspecionar os códigos fontes a fim de encontrar potenciais falhas no software que ocorreu no desenvolvimento. O Code Review seria uma revisão mais profunda já que na hora do desenvolvimento também acontece algumas revisões, outra função é estabelecer uma base para uma codificação mais segura.
Testes de Segurança: Testar o software a procura de vulnerabilidades, para garantir que os resultados serão os esperados quando estiver em execução, basicamente seria a fase de teste a procura de qualquer tipo de erro.
Implantação
Gerenciar a liberação do software, ou seja, essa função serve para saber se o produto vai chegar de acordo com o que foi especificado para o usuário final.
Gerenciamento de Vulnerabilidades: Gerenciar os relatórios de vulnerabilidades e incidentes operacionais ganhando assim uma base de dados dos problemas que já ocorreu, se por acaso acontecer novamente ficará mais fácil resolver.
Proteção de Ambiente: Garantir que o software será executado corretamente no ambiente de produção, reforçar a segurança da infraestrutura e implementar atualizações de segurança.
Capacitação Operacional: Procurar todo tipo de informação que possa afetar a segurança do software e comunicar aos desenvolvedores, assim detalhando os impactos que possam ocorrer para os usuários e operadores.
Comparação entre SAMM e a ISO / IEC 27034
A ISO/IEC 27034[2] é um padrão internacional para ajudar as organizações a implementar mecanismos de segurança durante todo o ciclo de vida do seu desenvolvimento. A tabela abaixo mostra o relacionamento dos recursos do SDL (Secure Development Lifecycle) com as 12 práticas de segurança do OpenSAMM. O losango grande indica um forte relacionamento com um tópico da ISO/IEC 27034 enquanto o losango pequeno indica um fraco relacionamento:
De acordo com o Colin Watson, autor da comparação, a ISO/IEC 27034 está mais relacionada com a ideia de um programa de segurança de software específico para organizações, junto com uma abordagem baseada em risco para aplicar segurança em diferentes aplicações.
Referências
- [1] http://www.opensamm.org/downloads/SAMM-1.0.pdf
- [2] http://www.opensamm.org/2012/04/mapping-samm-to-isoiec-27034/