Provavelmente você já deve ter ouvido falar em squad, sprint, crescimento exponencial, security by design, security by default, entre outros, não importa as terminologias nesse momento, porém a grande maioria delas, ou talvez todas, se referem a nosso principal tópico nesse artigo: Desenvolvimento Seguro.
Com a evolução da tecnologia, as ameaças também ficaram mais “sofisticadas”. Por isso, olhar para o desenvolvimento de seu software ficou cada vez mais importante.
Porém, muitas vezes, a segurança da informação para produtos é vista como um atraso para entregas e como uma barreira para os desenvolvedores. No entanto, a segurança de aplicações é um recurso a mais para os times de desenvolvimento e pode inclusive economizar retrabalho e principalmente evitar risco para o negócio de sua empresa.
O que é Desenvolvimento Seguro?
A evolução e aceleramento tecnológico dentro das empresas tem feito com que muitas aplicações sejam criadas no que chamamos de “toque caixa”. Em outras palavras, a sprint precisa ser acelerada, porque houve uma demanda de acelerar o projeto por parte do cliente ou porque surgiu um novo projeto para ser entregue e por consequência disso foi necessário acelerar tudo.
Com isso, vemos que muitos desafios surgem no desenvolvimento de software como, por exemplo, problemas de escalabilidade, problemas de vulnerabilidades, problemas de vazamentos de credenciais, dificuldade de encontrar a biblioteca ideal para meu projeto ou mesmo ferramentas e muito mais.
Com isso surgem diversas perguntas: Como conseguimos endereçar alguns desses desafios? Como construir um software de uma maneira mais “safe”, sem expor em meus códigos design de arquiteturas que deveriam ser privadas? Como posso evitar de expor credenciais de acesso?
Para responder essa e outras questões precisamos entender um pouco das diferenças entre as análises que podem ser feitas em nossos códigos.
Tipos de Análise (SAST, DAST e IAST)
As siglas até podem ser parecidas, mas há muitas diferenças entre elas! Vamos lá?
SAST (Static Application Security Testing) é um acrônimo que em português significa, Teste Estático de Segurança de Aplicação. Ele se refere às ferramentas que analisam o código fonte dos sistemas. Geralmente, estes testes são realizados antes que o sistema esteja em produção e somente no código fonte.
Já DAST (Dynamic Application Security Testing), em português, Teste Dinâmico de Segurança de Aplicação, se refere às ferramentas que testam interfaces expostas em busca de vulnerabilidades.
A DAST é recomendada para encontrar vulnerabilidades visíveis externamente. Para isso, a URL já é suficiente para o teste ser realizado ou o binário ser executado.
A desvantagem é que a DAST depende de especialistas para escrever. Por isso, ela acaba sendo um pouco difícil de ser escalada nas organizações. Apesar de que, uma vez escrito, pode ser 100% automatizada.
Enquanto isso, a IAST (Interactive Application Security Testing), em português, Teste Interativo de Segurança de Aplicação – é basicamente a combinação dos modelos de testes estáticos e dinâmicos (ou seja, SAST e DAST) e é a ferramenta que apresenta os melhores resultados.
Uma das vantagens da IAST é que existe a opção dela ser feita em conjunto com uma pessoa analista de segurança. Com isso, ela se torna o melhor tipo de teste em questão de taxa de falso positivo, pois conta uma interação humana.
Horusec
Mas afinal o que é o Horusec? Onde e como ele pode ajudar no desenvolvimento seguro?
O Horusec é uma ferramenta open source desenvolvida pelo time de segurança da Zup que realiza análise estática de códigos para identificar falhas de segurança durante o processo de desenvolvimento.
A ferramenta também conta com o Leaks, que é a busca de vazamentos de chaves e falhas de segurança em todos os arquivos do seu projeto e no histórico do Git. O Horusec pode ser usado pela pessoa desenvolvedora através da CLI e pela equipe de DevSecOps em esteiras de CI/CD.
Hoje o Horusec utiliza três tipos de análises:
- Análise SAST;
- Análise de Leaks (Vazamento de chaves);
- Análise de Auditoria de dependência.
Agora, vamos ver como cada uma dessas análises funciona!
Análise SAST
O Horusec realiza análise SAST (Static Application Security Testing ou Teste Estático de Segurança de Aplicação) seguindo como referência OWASP TOP Ten para encontrar possíveis vulnerabilidades em sua base de código:
Suporte a linguagens e ferramentas:
- Python
- Ruby
- Javascript/Typescript
- GoLang
- C#
- Java
- Kotlin
- Kubernetes
- Terraform
- Leaks
- Leaks(optional search in git history)
- PHP
- C/C++
- HTML
- JSON
- Dart
- Shell Script
- Elixir
Análise de Leaks (Vazamento de chaves)
O Horusec realiza procura por Leaks no código fonte sobre possíveis vazamentos de credenciais, chaves privadas ou senhas Hard coded. Suporte:
- Certificados;
- Chaves AWS;
- Chaves Google Cloud;
- Chaves Privadas.
Análise de Auditoria de dependência
O Horusec realiza uma auditoria de dependência para verificar a possibilidade de vulnerabilidades em bibliotecas de terceiros.
Importante: O Horusec não realiza sua análise SAST nas dependências, ele verifica por meio de auditoria para indicar se uma dependência tem alguma vulnerabilidade.
Melhores Práticas de desenvolvimento seguro
Realizar um desenvolvimento seguro não é algo tão simples. Muitas vezes as empresas não sabem muito bem por onde deveriam começar.
Então por onde poderíamos começar? A seguir vamos ver algumas dessas melhores práticas para desenvolvimento seguro:
- Fique atento com dados sensíveis;
- Adote padrões de mercado no seu desenvolvimento;
- Tenha especial atenção a teste e processos de qualidade;
- Automatize o máximo que puder e se livre de possíveis falhas humanas.
Agora, vamos ver essas práticas de forma detalhada.
1- Fique atento com dados sensíveis
Fique atento quando você está trabalhando com dados sensíveis, ou seja, informações que não deveriam vir a público jamais. Por exemplo, dados pessoais de usuários e/ou organizações.
Esses dados podem se tornar portas significativas para atacantes mal intencionados invadirem e explorarem sua empresa.
Além disso, há legislações específicas que devem ser respeitadas, como a LGPD – Lei Geral de Proteção de Dados.
2 – Adote padrões de mercado no seu desenvolvimento
Faça uso de padrões de desenvolvimento já conhecidos no mercado como, por exemplo, utilizar frameworks famosos para integração em seus projetos. O uso deles na forma correta pode prevenir os ataques mais conhecidos pela OWASP TOP TEN.
Inclusive, recomendamos fortemente que acompanhe as dicas da OWASP, Open Web Application Security Project, conhecida em português como: Projeto de Segurança de Aplicativos da Open Web.
3 – Tenha especial atenção a testes e processos de qualidade
Faça muitos testes na sua aplicação antes de enviar para seu ambiente produtivo. Busque abordar vários cenários e formas de enviar conteúdo para sua aplicação para encontrar falhas de segurança.
Quer conhecer boas práticas de testes? Então confira os artigos sobre testes do blog da Zup!
4 – Automatize o máximo que puder e se livre de possíveis falhas humanas
E o principal: tente automatizar o máximo de processos! Atualmente, devido ao aceleramento da tecnologia, cada vez mais precisamos acelerar o desenvolvimento de código. Com isso pode acontecer o erro humano durante algum processo, algo que se for automatizado pode ser evitado.
Porém, tenha atenção aos dados das automatizações. Afinal, geralmente quando se automatiza processos, se trabalha com senhas, tokens e integrações com ferramentas. Por isso, sempre utilize um cofre de senhas para que seus dados não sejam expostos.
Usando Horusec para Desenvolvimento Seguro
Existem duas principais tarefas no Horusec: acessar o Dashboard e gerar as análises. Vamos acompanhar esses passos agora!
1. Acesso ao Dashboard
Para acessar o Horusec, é preciso criar um login e senha. Depois disso, você pode navegar no dashboard e realizar ações como, por exemplo:
- Definir permissões para outros usuários;
- Criar repositórios;
- Gerar tokens para realizar a análise de um projeto.
2. Processo de Análises
Para realizar a análise, você deve utilizar o CLI (Command Line Interface ou Interface de Linha de Comando, em português). Caso queira conferir o resultado, você também pode acessar uma interface web, que garante uma visão mais analítica e detalhada.
Se existir alguma falha de segurança no código, o Horusec aponta o arquivo, o nível de gravidade e, em seguida, informa a melhor maneira de correção.
Veja o Horusec em ação no exemplo a seguir:
Conclusão
Durante nosso artigo vimos que hoje em dia com a evolução da tecnologia, as ameaças também ficaram mais “sofisticadas”. Por isso, adotar um desenvolvimento seguro de software ficou cada vez mais importante.
Também vimos que as empresas, por demanda do mercado, têm solicitado que muitas das aplicações sejam criadas no que chamamos de “toque caixa”, ou seja, a sprint precisa ser acelerada. Isso porque, ou houve uma demanda de acelerar o projeto por parte do cliente, ou porque surgiu um novo projeto para ser entregue.
Com essa aceleração do processo a grande consequência negativa disso são as vulnerabilidades, que muitas vezes deixamos passar em nossos códigos, problemas de vazamentos de credenciais, problemas em encontrar a bibliotecas ideias para seu projeto ou mesmo ferramentas.
Seguindo referência OWASP TOP Ten, o Horusec vem para aplicar a lógica Security By Design, rodando um scan em seu código facilmente e entregando informações relevantes como, por exemplo: em uma linha de código vulnerável, aponta o arquivo, o nível de gravidade e, em seguida, informa a melhor maneira de corrigir.
Assim, o Horusec ajuda a garantir segurança em várias camadas para proteger sua organização de ataques e falhas de seguranças. O Horusec está aqui para te ajudar!
Espero que com as dicas acima você consiga adotar as melhores práticas de desenvolvimento seguro de aplicações, evitando assim vulnerabilidades e zelando pelos seus usuários.
Referências
- Site oficial do Horusec;
- Artigo “Segurança da Informação: o que é e dicas para se defender de ataques” do blog da Zup;
- Artigo “SSDLC | Esteira de Desenvolvimento de Software Seguro – Entenda” do blog da Zup;
- Artigo “Desenvolvimento Seguro – Segurança em todo o pipeline” do blog da Conviso;
- Artigo “Os maiores desafios em segurança de aplicações” do blog da Conviso;
- Glossário com os principais conceitos do Horusec.