Atualmente termos como “segurança em código” ou mesmo “segurança por design” são termos que estão ficando cada vez mais conhecidos pelos atores das áreas de desenvolvimento seguro e segurança de aplicações.
Prefere ouvir a versão em áudio deste blogpost? Utilize o player abaixo
No entanto, para que isso seja realmente verdade em nossos processos de desenvolvimento precisamos entender verdadeiramente o conceito do termo, e como Application Security está ligado a eles.
Em um artigo denominado “A call to arms for devs: Get revolutionary about security as code” Daniel Cuthbert, defende que devemos focar não nos ataques, mas sim nas defesas de nosso software, o que estamos completamente de acordo, pois de forma geral ao se focar em defesas não estamos efetivamente resolvendo o problema, estamos apenas mascarando e colocando uma solução paliativa.
Entendendo o processo de desenvolvimento seguro de software
Em muitos casos observamos que ao tentar implementar um processo de desenvolvimento seguro muitas equipes esquecem inicialmente de buscar entender o que verdadeiramente é o conceito de desenvolvimento seguro. O entendimento desse processo pode ajudar a você e a sua equipe a colocar segurança em suas aplicações.
Um dos conceitos fundamentais para quem deseja colocar segurança dentro do processo de desenvolvimento é o de shift left onde como base temos o deslocamento das iniciativas de segurança dos estágios mais finais do processo para os estágios mais iniciais.
Este movimento ajuda a cada vez mais identificarmos as fragilidades do código de forma mais rápida, proporcionando à equipe de desenvolvimento uma oportunidade de iniciar mais cedo às correções no código.
Descubra como você está

O OWASP SAMM é um modelo de maturidade mantido pelo OWASP e visa ajudar as empresas que querem implementar um processo de desenvolvimento seguro de forma mais eficiente. Mesmo que alguns entendam que este modelo do SAMM possa ser um modelo um pouco complexo, podemos ajudar colocando algumas perguntas que podem auxiliar a avaliar rapidamente o grau de maturidade de sua atual modelo de desenvolvimento, e depois com mais entendimento sobre o SAMM, você poderá ajustar o seu modelo.
- Requisitos – Durante o momento de construção do seu software sua equipe tem como princípio realizar o levantamento das necessidades de segurança e privacidade?
- Design – Sua equipe ao iniciar um novo projeto de software realiza ações para identificar as ameaças a quais seu software podem estar expostos? De forma mais direta, realizam Modelagem de Ameaças?
- Codificação – Durante o processo de criação do seu código, existe algum tipo de avaliação do código, como, por exemplo, Code Review?
- Testes – Durante a fase de testes de sua aplicação são realizados testes estáticos ou mesmo verificação de segurança dos requisitos identificados?
- Operação – Quando da operacionalização do seu software, há a realização de um pentest para garantir que sua aplicação está protegida?
Se você respondeu com não para a maioria destas perguntas isso quer dizer que o seu processo de desenvolvimento seguro ainda se encontra em um estágio de maturidade muito baixo, e precisa ser fortalecido com as melhores práticas de desenvolvimento seguro.
É natural que a grande maioria das empresas foque os seus esforços de segurança nas fases finais do processo de desenvolvimento. Esse tipo de postura torna o projeto ainda mais caro, pois leva para as últimas etapas a responsabilidade de descoberta de vulnerabilidades que deveriam ser resolvidas nas suas fases mais iniciais. A descoberta tardia de uma vulnerabilidade pode obrigar as equipes de desenvolvimento a realizarem retrabalhos em cima de um código que supostamente já deveria estar seguro.
Quando implementamos um conceito de shift left temos a chance de descobrir estas vulnerabilidades nas fases iniciais do ciclo de desenvolvimento e por isso a chance de aplicar as correções mais cedo, tendo assim uma economia em todo o processo.
Modelagem de Ameaças o mais cedo possível
A realização de Modelagem de Ameaças pode ajudar a equipe de desenvolvimento a já construir o seu código tendo como base uma lista de possíveis ameaças a que o software pode estar exposto.
Sabendo destas possíveis ameaças os desenvolvedores podem buscar por soluções que evitam que as vulnerabilidades encontradas estejam presentes no código a ser implementado. Essa simples ação pode trazer uma incrível economia de tempo e esforço para todo o projeto.
No entanto, muitos ainda tem dúvidas do que é uma Modelagem de Ameaças e uma das melhores definições que podemos colocar é a dada por Adam Shostack em seu livro “Threat Modeling: Designing for Security”, onde ele descreve Modelagem de Ameaças como:
“Threat modeling is the use of abstractions to aid in thinking about risks.”
Se pensarmos sobre sua afirmação vamos entender que modelagem de ameaças é principalmente identificar e priorizar os riscos aos quais nossa aplicação pode se expor e em essência é isso que queremos evitar.
Pense muito cedo nos seus requisitos de segurança
Quanto mais cedo for a sua visão sobre os requisitos de segurança, melhor será. Quando começamos a pensar em segurança nos estágios mais iniciais do processo de desenvolvimento podemos nos dar ao luxo de avaliar com mais calma as possíveis soluções que serão usadas para tornar o software mais seguro.
Por isso é importante que os requisitos de segurança sejam avaliados o mais cedo possível. Uma possibilidade de modelo de requisitos seja o uso do OWASP ASVS.

Quando tiver os seus requisitos estabelecidos, coloque-os como prioridades dentro do planejamento de sua solução, pois durante a fase de codificação estes serão fundamentais para garantir a segurança do software.
Avalie, meça e melhore o seu processo
Um processo de desenvolvimento seguro precisa ser constantemente avaliado.
Esta avaliação precisa acontecer baseada em dados e informações que possam entregar relevância, no entanto, somente dados e informações não são suficientes para que o resultado traga realmente melhora ao processo, estes dados devem ser avaliados por alguém que tenha um background de segurança para poder avaliar da melhor forma possível.
Onde for possível realize um code review
Sempre falamos que garantir a segurança de uma aplicação é muito mais sobre processos e culturas do que sobre manter uma equipe de desenvolvedores grande e sempre atualizada.
Para garantir que uma aplicação esteja segura precisamos de um conjunto de coisas, algumas de processos, outras de cultura e outras ainda de automação. No entanto, uma das etapas que pode trazer um resultada extremos para a segurança é a realização de um processo bem definido e planejado de code review.
Lembrando que um processo de desenvolvimento seguro não é e nem pode ser confundido apenas com a realização de code review nas aplicações, envolve muitas outras etapas que devem ser observadas.
Monitore o que é seu
Depois que você tenha estruturado melhor o seu processo e/ou mesmo pensando em como pode ser melhor estruturado, precisa garantir que mesmo que o aplicativo esteja seguro no caso de algo dar errado, como algum vazamento, dos dados ou mesmo de código, precisamos ter alguns mecanismos de monitoramento.
Monitorar o seu código ou os seus dados é importante, pois garante uma resposta mais rápida em caso de vazamento, e isso é importante visto que somente 13% dos vazamentos são descobertos pela equipe interna da empresa, uma boa solução seja a adoção de uma ferramenta de monitoramento como a Data Leakage Discovery, oferecido pela Axur uma empresa especializada em monitoramento e acreditamos que a leitura deste artigo pode ajudar.

Fechando os pontos
Quando observamos empresas que empregam o conceito de shift left em seus processos de desenvolvimento podemos observar que estas são muito mais eficientes em identificar e avaliar possíveis vulnerabilidades em seus códigos.
Isso também garante a estas empresas o conhecimento necessário para de forma correta avaliar o custo de correção destas vulnerabilidades dentro do seu projeto, tendo no final o resultado de um menor custo geral.
No entanto, observamos que o desejo por soluções sendo entregues cada vez mais cedo colocam sobre o processo de desenvolvimento seguro um peso que muitas vezes as empresas não conseguem equacionar. Para isso, o conceito de Security as Code tem uma importância enorme dentro do processo, e isso ajuda às empresas a criarem uma estrutura de entrega de produtos muito mais robusta e segura.
A visão deste texto buscou apresentar a você uma possibilidade e uma oportunidade para pensar em como está estruturado o seu processo e mostrar um possível início dessa caminhada.

1 Comment