Foto de Kevin Ku no Unsplash

Desenvolvimento com Segurança

Danilo D Soncini
gb.tech
Published in
4 min readOct 27, 2023

--

Atualmente o trabalho do desenvolvedor vai muito além de escrever o código, estamos em um momento dinâmico e temos muitas preocupações com performance, qualidade, testes unitários, testes de carga e quase não olhamos para um ponto importante do sistema que é a segurança, talvez pela falta de conhecimento e por achar que é um departamento separado do desenvolvimento.

Queria falar pra vocês de como eu comecei a entender mais sobre segurança e de como o desenvolvimento seguro começou a fazer parte do meu dia-a–dia, transformando uma atividade que era muito complexa em algo simples e muito mais aplicável.

Um termo já bem usado nas empresas é o DevOps que visa a aproximar o time de desenvolvimento ao time de operações dando mais autonomia e dinâmica no desenvolvimento. Esse modelo segurança ainda é um tema separado que por vezes é esquecido e em outras se torna um gargalo no processo de entrega de software, uma evolução desse modelo é o chamado DevSecOps em que o processo de segurança está dentro dos times gerando mais autonomia e conhecimento, permitindo ciclos mais curtos e com mais segurança, mas como aplicar esse modelo?

Para que o DevSecOps tenha sucesso é necessário que a equipe tenha a cultura onde todos são responsáveis pela segurança e para assim devemos tornar mais claro as consequências que são geradas por falhas de segurança em um sistema que podem ser indisponibilidades, vazamento de dados, perdas financeiras, multas, perda de reputação, entre outras, fornecer essa visão aos times permite que eles tomem melhores decisões ainda em tempo de planejamento e desenvolvimento.

Entender as consequências é o primeiro passo, mas não seria o suficiente, pois o time tem que estar pronto para agir! E é aqui que está um ponto chave que gostaria de destacar: os times precisam receber treinamentos que os permitam saber como evitar os riscos, é importante que não só o desenvolvedor tenha essa expertise, mas também o time de produto, pois nem sempre a vulnerabilidade está em código, às vezes pode ser uma “regra de negócio” que permita alguma exploração. O treinamento pode ser de várias formas, porém é bom que esse conteúdo esteja sempre disponível para o que os times possam consultá-los a cada nova dúvida, o time de segurança também deve estar disponível para apoiar nas dúvidas mais complexas.

Para gerar enraizar essa cultura podemos trazer multiplicadores dessa visão para dentro dos times, formando um grupo de referência com as pessoas que possuem interesse em comum em segurança, formando uma guilda de desenvolvimento seguro. Essas pessoas devem pertencer a diferentes times e um ponto legal na experiência que tenho é uma formalização de que todos os times deveriam ter um membro participando dessa guilda, isso garante um todos os times participando trazendo ferramentas, discussões e boas práticas, para a empresa.

Agora vou falar um pouco sobre alguns processos e ferramentas que podem nos ajudar a proporcionar isso aos times, mais visão dos vulnerabilidades no dia-a-dia

  • SAST — Static Analysis Security Test — Analisa o código-fonte para encontrar vulnerabilidades de segurança, essa solução pode estar vinculada ao seu versionador de código e a cada Pull-request fazer o scan e apontar eventuais vulnerabilidades.O OWASP lista algumas ferramentas que fornecem essa solução e pode aqui buscar a que mais de adequa ao seu sistema .
  • SCA — Software Composition Analysis — Identifica componentes de código aberto em seu sistema para detectar possíveis problemas de segurança, a grande arma do desenvolvimento moderno é poder aproveitar módulos de terceiros para garantir velocidade no desenvolvimento, porém esse módulos podem conter vulnerabilidades e ferramentas SCA analisam esse tipo de dependências e alertam vulnerabilidade, uma ferramenta bem conhecida e gratuita nesse caso é o DependaBot do Github, que fornece apontamentos sobre a vulnerabilidade e instruções de como corrigir, em alguns casos consegue até criar pull requests com a solução.
  • DAST — Dynamic Analysis Security Test — Analisa um aplicativo em execução em busca de vulnerabilidades de segurança, esse tipo de ferramenta explora seu sistema sem um conhecimento do código fonte (teste de caixa preta), explorando as principais ações como injeção, negação de serviço etc, o OWASP também divulga uma lista de ferramentas, esse tipo de solução é mais complexo de se configurar e automatizar, porém com apoio correto é possível dar essa visão também para o time

O desenvolvimento seguro vai depender de um esforço coletivo de todos dentro da empresa, e ao gerar essa cultura onde olhamos para segurança do que produzimos no nosso dia-a-dia entregaremos sistemas com maior qualidade e menor risco para quem o utiliza, o importante é ir dando pequenos passos na direção onde todos possam saber sobre segurança de software.

Agora eu queria saber como vocês cuidam da segurança de software nos seus projetos ou na empresa em que trabalham?

--

--

Danilo D Soncini
gb.tech
Writer for

Tech Lead no Grupo Boticário, Formado em Análise e Desenvolvimento de Sistemas pela UFPR, apaixonado por desenvolvimento de software, começando a escrever