A princípio, o ritmo de ataques que temos acompanhado nos leva a entender que algo muito rápido deve ser feito para proteger as aplicações de forma eficiente. É natural para muitas empresas que o primeiro pensamento seja o de criar e estruturar equipes de segurança, munir estas equipes com ferramentas e técnicas. Mas, no final do dia, quem realmente deve ter o foco para mitigar tais vulnerabilidades? Imagino que muitos podem ter pensado no desenvolvedor, sendo assim qual seria então, o papel do desenvolvedor em segurança de aplicações?
Bom, no final do dia o que temos que fazer é proporcionar ao dev o conhecimento necessário para que ele possa construir códigos cada vez mais seguros, é o que realmente acontece no dia a dia de uma empresa que tem seu negócio sustentado por aplicações.
Do mesmo modo, antes de seguirmos para falar um pouco sobre o papel do dev no contexto de segurança de aplicação e como a capacitação e educação são importantes, vamos primeiro entender o contexto que hoje temos e tentar colocar em poucas palavras o que vemos todos os dias no mercado.
O mercado de segurança de aplicações
Por uma questão comercial, o que mais encontramos no mercado são empresas que vendem seus produtos como a bala de prata para a segurança das aplicações, trazendo a ilusão de que apenas a utilização deste componente é a solução para todos os problemas das equipes de desenvolvimento e segurança. Sabemos que estas ferramentas são componentes de um grande processo e, portanto, precisam estar trabalhando com vários outros componentes para entregar o que se espera no final do processo que é uma aplicação mais segura.
Neste artigo quero trazer uma luz sobre um dos projetos mais interessantes da OWASP, pelo menos em minha opinião. Quero falar um pouco sobre o SAMM e como ele pode ajudar a você a entender inicialmente que segurança de aplicações é um processo, e é muito maior que usar ferramentas, e segundo a entender que o grande diferencial de empresas que têm mais segurança é entender todo o seu processo e como o dev pode ser um dos pontos mais importantes de todo o processo.
Entendendo o OWASP SAMM
Em primeiro lugar, vamos fazer um resumo sobre o que é o SAMM, e para isso vou colocar aqui a minha definição, mas, que tem como base a própria definição da OWASP.
“SAMM, que já tratamos em vários artigos aqui no nosso blog, é um conjunto de práticas, agnósticas, que apresentam uma estrutura de processos que ao serem seguidas podem ajudar no desenho, na construção e na entrega de aplicações mais seguras”
Bom, com essa definição espero ter ajudado a demonstrar que mesmo que tenhamos uma vontade muito grande de colocar somente ferramentas em nossa esteira de desenvolvimento, outros aspectos devem ser abordados.
Assim também temos que pensar e colocar o fator humano no centro desse processo, pois no final do dia é uma pessoa que gera o código, assim como também é uma pessoa que usa o código e também é uma pessoa que tenta comprometer este mesmo código. Ou seja, pessoas devem ser entendidas como foco principal do processo.
O papel do desenvolvedor
Focando agora no papel do desenvolvedor, ele é uma figura chave no processo de segurança de aplicações, pois ele é responsável por escrever o código que irá compor a aplicação, assim como também é ele o principal responsável por mitigar as vulnerabilidades que podem surgir durante o processo de desenvolvimento.
Em contrapartida, muitas vezes, o desenvolvedor não recebe a capacitação necessária para compreender como escrever um código seguro, ou seja, ele não possui o conhecimento técnico para aplicar as melhores práticas de segurança durante o processo de desenvolvimento. É aí que entra a importância da capacitação e educação para os desenvolvedores, já falamos sobre isso em outros artigos aqui no blog da Conviso, vale à pena buscar por estes outros artigos.
Só para lembrar, quando tratamos de capacitação e guias no SAMM o foco é entregar a seus times o conhecimento necessário que possa ajudar no processo de planejamento, ou design, de codificação e entrega de aplicações mais seguras. Esse não deve ser entendido como um processo com uma importância nem maior e nem menor que os outros relacionados no SAMM, todos são parte de um grande contexto.
Além disso, o desenvolvedor deve estar ciente de que ele é um dos principais responsáveis por garantir a segurança da aplicação, por meio da implementação de práticas seguras de programação, como validação de entrada de dados, uso de criptografia, controle de acesso e verificação de vulnerabilidades conhecidas.
Outra prática interessante do SAMM é a “Revisão de Código Seguro”, cujo objetivo é garantir que o código escrito pelos desenvolvedores atenda a determinados padrões de segurança. Essa prática é extremamente importante, pois muitas vulnerabilidades podem ser encontradas durante a revisão de código, reduzindo assim a probabilidade de falhas de segurança na aplicação. Vamos lembrar, quanto mais no início do processo de desenvolvimento a vulnerabilidade for identificada, melhor o resultado no final do processo.
Como falamos, todas as práticas do SAMM tem sua importância dentro do conjunto do Programa de Desenvolvimento Seguro, mas, se focarmos no objetivo deste artigo, acredito que as práticas de capacitação e de realização de testes manuais dentro do processo podem mostrar ainda mais a importância que o desenvolvedor tem para a construção de uma aplicação mais segura.
Segurança de aplicações como um processo contínuo
Por fim, é importante destacar que a segurança de aplicações é um processo contínuo e que deve ser constantemente revisado e atualizado, para garantir que as vulnerabilidades sejam identificadas e corrigidas o mais rápido possível. E o desenvolvedor é peça-chave nesse processo, pois é ele quem está mais próximo do código e tem maior capacidade de entender e implementar as práticas de segurança necessárias.
Em resumo, a segurança de aplicações deve ser tratada como um processo contínuo, que envolve toda a equipe de desenvolvimento e não apenas as equipes de segurança. O desenvolvedor deve estar ciente da sua responsabilidade nesse processo e buscar constantemente se capacitar e adotar boas práticas de segurança, para garantir que a aplicação entregue ao usuário final seja segura e confiável. A adoção de frameworks e bibliotecas seguras, a realização de testes automatizados e a gestão de configuração também são práticas importantes que podem contribuir para a segurança da aplicação.
Portanto, com o uso do SAMM e a conscientização de todos os envolvidos no processo de desenvolvimento, podemos criar aplicações mais seguras e confiáveis para nossos usuários, protegendo a nossa empresa de possíveis ataques e perda de dados sensíveis.
