DevSecOps: Aprenda a Desenvolver de uma Forma mais Segura

É nítido o crescimento exponencial da utilização de desenvolvimento interno de softwares, aplicações, plugins, scripts, APIs entre outros. Cada vez mais, as empresas necessitam internalizar suas customizações para obter resultados cada vez mais direcionados aos seus objetivos e necessidades.


Porquê preocupar-se com segurança no desenvolvimento?


Em paralelo a isso, um estudo realizado pelo SERPRO (Serviço Federal de Processamento de Dados do Brasil) aponta que a maior parte das vulnerabilidades ocorre na camada da aplicação e pode comprometer até as permissões de acesso do sistema por parte dos utilizadores. Atualmente, é possível afirmar que a quantidade de vulnerabilidades em aplicações já é maior que as encontradas em Sistemas Operacionais.

Isso mostra que, cada vez mais, os sistemas não são construídos seguindo um processo de desenvolvimento seguro e boas práticas de programação. Por isso, é sempre importante o programador ter em mente a preocupação com esse tema, principalmente disponibilizar medidas de segurança desde a criação da primeira linha de código. Dessa forma, será possível mitigar problemas clássicos de segurança de forma eficiente e muito mais econômica.


Ações preventivas, em um contexto geral, tendem a ser mais baratas e eficientes do que ações corretivas.


A realidade que temos hoje em dia, principalmente após a pandemia que, de certa forma, afetou muito a maneira das empresas trabalharem, é que os ataques migraram. Alguns anos atrás, os ataques eram muito mais direcionados para infraestrutura. Era muito comum ver ataques realizados em Apache, IIS, Sistemas Operacionais e outras plataformas de infraestrutura e seguimentos de perímetro. Em resposta a isso foi, naturalmente, a aperfeiçoar-se os níveis de segurança nesse segmento e o crescimento de produtos voltados ao combate desses meios que estavam a ser atacados constantemente.

img-3

Fonte: SERPRO (Serviço Federal de Processamento de Dados do Brasil)


Percebendo esse novo cenário, os atacantes começam a visar o universo das aplicações.

As vulnerabilidades de aplicações mal desenvolvidas sempre existiram, mas nunca foram o foco de ataque. Porém, isso mudou, e as aplicações são alvos tanto quanto a infraestrutura. Principalmente, quando estamos a falar de desenvolvimento interno e desenvolvimento ágil onde as equipas internas criam as aplicações, scripts, entre outros “dentro de casa”. Talvez por não ser o “Core” de algumas empresas, o investimento e visibilidade com a segurança no desenvolvimento não é priorizado.

Outro fator importante a ser destacado é a facilidade de encontrar formas de ataques prontas na internet, conhecido popularmente como “Receita de bolo”. Não é mais necessário um grande conhecimento para conseguir explorar vulnerabilidades. Com uma simples pesquisa no Google, consegue-se um cardápio com variedades de exploits, scripts, malwares, fóruns, etc.

A imagem abaixo ilustra um pouco da diferença do século passado para o início do atual:

img-5


Implementar Segurança… O que é preciso?


Assim como no processo de desenvolvimento, o desenvolvimento seguro também deve ser abordado de forma a combinar os seus principais pilares: Pessoas, Processos e Tecnologia.

O âmbito de Pessoas ainda é o principal pilar para eficiência (ou não) de um desenvolvimento seguro.

Muitas vezes, o tempo, a pressão, o SLA, o deadline e outros fatores fazem com que o desenvolvedor priorize a entrega da aplicação e não se preocupe com a segurança do código. Por outro lado, é comum encontrarmos desenvolvedores que não tenham o conhecimento adequado de um desenvolvimento seguro. Talvez por não ser um tema muito abordado nas escolas de desenvolvimento, escolas, faculdades, etc.

Em relação ao Processo, é necessário constar na estratégia de desenvolvimento um nível de controlos de segurança, mesmo que simplificados, mas que no final do código vai minimizar os impactos que podem ser causados por uma ameaça.

Para Tecnologia, já existem muitos softwares designados ao desenvolvimento seguro. Esses softwares possuem mecanismos dos principais métodos de testes que, além de maximizar a segurança das aplicações, diminuem grandemente os custos de problemas relacionados a segurança. Os métodos de testes mais utilizados são:

  • SAST (Static Application Security Testing) – Realiza testes de segurança estático do código em tempo de desenvolvimento, pré-produção ou integração.
  • DAST (Dynamic Application Security Testing) – Também conhecido como análise dinâmica, destina-se à análise das aplicações já em tempo de execução, em ambiente de desenvolvimento, pré-produção ou integração.
  • IAST (Interactive Application Security Testing) – Essa análise permite combinar as melhores vantagens do SAST e DAST, e analisar o código e a aplicação de forma automatizada.


DevSecOps – o que é?


É bem verdade que a preocupação com o desenvolvimento seguro vem crescendo nos últimos anos. É comum ouvirmos o termo “DevSecOps” em empresas de desenvolvimento ou até entre as áreas de programação das empresas de outros segmentos.

DevSecOps é a abreviação de Developer(Dev) Security(Sec) Operations(Op). Trata-se de uma estrutura de colaboração que expande o impacto de DevOps adicionando práticas de segurança ao desenvolvimento de software e ao processo de entrega. Em resumo, é adicionar a esteira de desenvolvimento ágil, ações de segurança, garantindo uma entrega não apenas rápida, mas também segura.


Mas, como adicionar o “Sec” ao “DevOps”?


Incluir práticas de segurança na esteira de desenvolvimento não é algo estático. Deve-se adequar ao ambiente, tipo de aplicação a ser desenvolvida, equipa, tecnologia, entre outros.

img-7


O mais comum é incluir um ciclo que contempla vasculhar, analisar e remediar possíveis vulnerabilidades em toda fase do DevOps adequando-se a um processo de melhoria contínua, a monitorar e a gerenciar as ameaças e vulnerabilidades encontradas.

Veja alguns controlos que podem ser implementados:

img-9


Algumas dicas de melhores práticas para seu código


Eis algumas dicas que podem auxiliar no desenvolvimento seguro:


1. Ferramentas de desenvolvimento seguro

Se tiver a possibilidade de ter uma ferramenta de desenvolvimento seguro, será um grande avanço para que seu código seja feito com as melhores práticas de segurança. Hoje em dia, é possível verificar softwares que analisam o código em tempo real, enquanto está a programar.


2. Gestão de código

Ter o gerenciamento do seu código é muito importante para se organizar e interagir com outros desenvolvedores. Além disso, ganha-se em garantir a integridade e versionamento do seu código. Uma ferramenta muito usada hoje em dia é o GitHub. Temos um artigo publicado em nosso blog que diz mais sobre esse tema.


3. Testar

Realizar testes em pequenos trechos de código simplificam e ajudam em uma avaliação no resultado final.


4. Documentar

Realizar uma documentação clara e mais detalhada de seu código e arquitetura utilizada, além de aumentar a qualidade de seu software também facilita na correção de bugs e brechas de segurança.


5. Criar checklists

Durante as principais ações e revisões de sua aplicação, crie checklists que incluem itens de segurança para sempre estar a analisar essas questões.


Aprenda a desenvolver de uma forma mais segura: considerações finais


Garantir a segurança da sua empresa, de sua casa, de seus dados ou de qualquer sítio que utilize tecnologia, não é uma tarefa fácil e não pode ser designado a apenas uma pessoa ou uma equipa. A segurança depende de todos, desde o programador ao utilizador.

Sabemos que o desenvolvimento de software é uma área em constante evolução e estudo. Entretanto, a segurança não pode ser negligenciada. Implantar controlos de segurança ao desenvolvimento transforma-te em um desenvolvedor mais responsável e colaboracionista. Tenho certeza de que esse hábito vai trazer apenas benefícios à sua carreira e sua empresa.