Bruno Dantas
Segurança da Informação | Cybersecurity | AppSec | DevSecOps
https://www.linkedin.com/in/bdantas/
Exemplos de abordagens de teste de segurança e padrões de desenvolvimento seguro
Exemplos de abordagens de teste de segurança e padrões de desenvolvimento seguro

Há na indústria de segurança de software diversos modelos de teste:

EHT (Ethical Hacking Test) ou pentest (teste de penetração) é uma abordagem de teste de segurança onde um especialista por meio de técnicas manuais e com apoio de ferramentas, tenta subverter o funcionamento de um software a fim de encontrar vulnerabilidades. O profissional que realiza essa atividade é conhecido como pentester.

DAST (Dynamic Application Security Testing) é um teste automatizado de segurança dinâmico. Isso significa que aplicação é testada em tempo de execução. O DAST também é conhecido como caixa preta (blackbox), pois quem ataca não tem conhecimento prévio de como funciona o software. Nesse tipo de teste em aplicações web, as vulnerabilidades mais comuns de se encontrar são SQLi (SQL Injection) e XSS (Cross Site Scripting).

SAST (Static Application Security Testing) é uma forma automática de teste onde se verifica o código fonte da aplicação. Dependendo da ferramenta pode ser ou não necessário compilá-lo para uma linguagem intermediária (bytecode). Esse teste pode ser chamado de caixa branca (whitebox), já que quem testa tem acesso a lógica de programação da aplicação. É comum nos resultados desse teste ser encontrado falhas como senha fixa no código, estouro de buffer e inspeção de variáveis sensíveis.

IAST (Interactive Application Security Testing) é uma combinação dos testes DAST e SAST, que visa diminuir a incidência de falsos-positivos.

RASP (Runtime Application Self-Protection) é um mecanismo que adiciona a aplicação formas de autodefesa contra ações de engenharia reversa e subversão de funcionamento.

Modelos de processo de desenvolvimento seguro de software

Segurança em software não é apenas realizar testes para saber se ele está vulnerável. Para evitar que essas falhas se materializem, há diversos modelos de implementação de processo de desenvolvimento seguro, onde desde a concepção pensa-se em segurança, o chamado sSDLC (Security Software Development Lifecycle). Tradicionalmente as empresas que utilizam algum processo de desenvolvimento seguro seguem algum dos modelos abaixo:

OpenSAMM (Software Assurance Maturity Model) criado e mantido de forma aberta pelo OWASP, é um modelo de avaliação de maturidade, que auxilia a definir e priorizar quais pontos no processo de desenvolvimento seguro devem ser seguidos pela empresa que o adota.

BSIMM (Building Security in Maturity Model) criado e mantido por diversas empresas da indústria de software, também é um modelo de avaliação de maturidade, porém baseado na experiência de diversas companhias.

Microsoft SDL (Security Development Lifecycle) é o modelo de desenvolvimento seguro adotado internamente pela Microsoft. É disponibilizado ao púbico para quem desejar segui-lo. Também existe uma versão voltada para práticas ágeis (SDL for agile).

ISO/IEC 27034 é uma norma que objetiva conduzir as empresas a adicionarem segurança dentro do processo de desenvolvimento de software.

A iniciativa SAFECode e a ISO/IEC 15408 podem auxiliar na adoção de um modelo de desenvolvimento seguro.

Artigo de Bruno Dantas, publicado em 15 de Outubro de 2018.

Papo de SysAdmin  e #OWASP-SP

Aprenda. Compartilhe. Evolua.