Por que desenvolver com segurança?
Seria muito bom se não precisássemos ter antivírus, que consomem nosso poder de processamento; se não precisássemos de firewalls caros para proteger nossa infraestrutura; e se não tivéssemos que escolher entre segurança ou melhor experiência do usuário. Tudo seria muito mais simples.
Você também pode ouvir a versão em áudio deste artigo:
Contudo, nossa realidade é outra. Por diversos motivos, é comum existir alguém querendo prejudicar ou tirar proveito de nossas aplicações. Assim como são diversas as motivações – seja ela vender informações, ganhar reputação, ou mesmo vinganças pessoais – também são diversos os tipos de ataques.
Portanto, precisamos desenvolver aplicações com segurança para proteger o nosso negócio contra as inúmeras ameaças do cotidiano. Agora, como colocar o “S” no nosso ciclo de desenvolvimento?
Falando em projeto de software, herdamos o clássico modelo cascata, “waterfall”, que entende o projeto em fases ou etapas. Logo, existe um paradigma de que desenvolver com segurança é nada mais do que acrescentar uma etapa de segurança ao projeto. Mas isso significa desenvolver de maneira segura? Não.
Precisamos romper com este paradigma de que segurança é uma fase do projeto. Afinal, esta forma não é eficiente, gera retrabalho e o risco continua alto por conta de prazos e afins.
Como fazer desenvolvimento seguro da maneira certa?
Quando falamos das melhores práticas de desenvolvimento seguro, estamos falando em aplicar segurança em todo o fluxo de desenvolvimento. Assim como ter um software de qualidade não é só responsabilidade de uma área – por exemplo Q.A – ter um software seguro é responsabilidade de todos os envolvidos no projeto.
Vamos ver como fica o ciclo de desenvolvimento com segurança em cada etapa. A boa notícia é que não estamos sozinhos nesta jornada, em cada etapa teremos referências para nos aprofundarmos no assunto.
Treinamento
Sem conhecimento não temos mudança. Portanto, o primeiro passo é promover treinamentos relacionados aos temas de segurança para o time do projeto. Assim, com conhecimento, a jornada de desenvolvimento seguro terá suas bases sólidas.
Uma das estratégias bem sucedidas e por isso muito utilizada para treinamentos é a implementação do programa de Security Champion. Não deixe de ler mais sobre como formar seu time de secutity champion e as vantagens de se investir em treinamentos de appsec.
Requisitos de segurança
Na etapa de levantar requisitos funcionais e não funcionais da aplicação, é necessário obter também os requisitos de segurança, enriquecendo assim, os casos de uso com um viés de segurança. Uma lista de verificação que pode colaborar para os requisitos de segurança é o ASVS (OWASP Application Security Verification Standard).
Design Seguro
Projetar a aplicação com uma arquitetura segura. Levantar as possíveis ameaças e implementar as proteções adequadas. Neste sentido, a dinâmica da análise de ameaças (Threat Modeling) é muito interessante na prática de trazer segurança à esquerda do ciclo de desenvolvimento, Shift-Left.
Codificação Segura
Escrever códigos seguros. Mas seguros contra o quê? É importante conhecer as vulnerabilidades das quais nossas aplicações podem sofrer ataques. O OWASP Top Ten é uma lista das vulnerabilidades mais críticas que acontecem nas aplicações web, e conhecendo podemos nos proteger delas. Outra fonte a considerar é a série Cheat Sheets, que coleciona as melhores práticas, inclusive para algumas tecnologias específicas.
Testes de segurança
A aplicação pode ser testada manualmente. Neste caso, estamos falando de revisão de código, “Code Review”, e Pentest, o teste de invasão e que pode ser White, Gray e Black Box. Enquanto o Code Review analisa o código fonte da aplicação para conferir as melhores práticas, o Pentest valida a aplicação desenvolvida a fim de explorar alguma possível falha de segurança. Podemos ainda fazer os testes automatizados. Hoje temos a análise estática do código (SAST), a análise dinâmica da aplicação (DAST) e ainda classificamos outra forma de teste que é a interativa o IAST.
Confira também:
Gestão de vulnerabilidades ferramentas de Sast e Dast
Testes de segurança aplicando ao pipeline
Mais sobre Segurança de aplicações
Ainda para auxiliar na jornada de desenvolvimento seguro podemos contar também com as seguintes referências:
O Owasp Proactive Controls, da OWASP, possui dez controles que podemos implementar para deixar nosso produto de software mais seguro contra diversas vulnerabilidades.
A ISO/IEC 27001 provê um modelo para melhorar um Sistema de Gestão de Segurança em seu controle A.14 possuir normas a serem implementadas no ciclo de desenvolvimento.
O NIST, The National Institute of Standards and Technology apresenta um framework para diminuir riscos de cibersegurança.
O que podemos concluir sobre desenvolver com segurança?
É importante desenvolver com segurança para que nosso negócio não seja prejudicado pelas séries de ameaças que hoje compõem nossa realidade na web.
AppSec é cultura, portanto leva tempo para a transformação do mindset dos colaboradores.
Não há uma solução mágica, mas para cada etapa no ciclo de desenvolvimento é possível trazer as melhores práticas de segurança para entregar aplicações mais robustas que dificultam as invasões e vazamento de dados, assim como indisponibilidade sistêmica.
Há 13 anos, a Conviso vem ajudando empresas na implementação de programas de desenvolvimento seguro. Para isso, conta com a Conviso Platform, que suporta todas as fases do desenvolvimento seguros.

Muito bom o artigo, é claro e objetivo.
Devemos pensar em segurança antes mesmo de desenvolver as aplicações, levar essa cultura para as empresas e equipes. O artigo conseguiu passar esse mindset de maneira sucinta.