Como usar um utilitário simples para encontrar vulnerabilidades no código do programa

Graudit suporta muitas linguagens de programação e permite que você integre testes de segurança de base de código diretamente no processo de desenvolvimento.





Fonte: Unsplash (Markus Spiske) O



teste é uma parte importante do ciclo de vida de desenvolvimento de software. Existem muitos tipos de teste, cada um dos quais resolve seu próprio problema. Hoje eu quero falar sobre como encontrar problemas de segurança no código.



Obviamente, nas realidades modernas de desenvolvimento de software, é importante garantir a segurança do processo. Ao mesmo tempo, o termo especial DevSecOps foi até introduzido. Este termo se refere a vários procedimentos destinados a identificar e eliminar vulnerabilidades em um aplicativo. Existem soluções especializadas de código aberto para verificação de vulnerabilidades de acordo com os padrões OWASP , que descrevem os diferentes tipos e comportamentos de vulnerabilidades no código-fonte.





Existem diferentes abordagens para resolver problemas de segurança, por exemplo, teste de segurança de aplicativo estático (SAST), teste de segurança de aplicativo dinâmico (DAST), teste de segurança de aplicativo interativo (IAST), análise de componente de software (Análise de Composição de Software) e assim por diante.



O teste de segurança de aplicativo estático detecta bugs no código já escrito. Essa abordagem não requer a execução do aplicativo, por isso é chamada de análise estática.



Vou me concentrar na análise de código estático e usar uma ferramenta simples de código aberto para demonstrar tudo na prática.



Por que escolhi uma ferramenta de análise de segurança de código estático de código aberto



Há uma série de razões para isso: primeiro, é gratuito, porque você está usando uma ferramenta desenvolvida por uma comunidade de pessoas que pensam da mesma forma que querem ajudar outros desenvolvedores. Se você tem uma equipe pequena ou uma startup, tem uma grande oportunidade de economizar dinheiro usando um software de código aberto para testar a segurança de sua base de código. Em segundo lugar, você evita o aborrecimento de contratar uma equipe DevSecOps separada, reduzindo ainda mais seus custos.



Boas ferramentas de código aberto são sempre construídas com maior flexibilidade em mente. Portanto, eles podem ser usados ​​em quase qualquer ambiente, cobrindo uma ampla gama de tarefas. É muito mais fácil para os desenvolvedores fazer amizade com essas ferramentas com o sistema que já construíram enquanto trabalhavam em seus projetos.



Mas pode haver situações em que você precise de um recurso que não está disponível na ferramenta escolhida. Nesse caso, você tem a oportunidade de bifurcar seu código e desenvolver sua própria ferramenta com a funcionalidade necessária com base nela.



Como na maioria dos casos o desenvolvimento de software de código aberto é influenciado ativamente pela comunidade, a decisão de fazer mudanças é feita de forma bastante rápida e direta: os desenvolvedores do projeto de código aberto contam com feedback e sugestões de usuários, em seus relatórios de bugs e outros problemas.



Usando Graudit para analisar a segurança do código



Para análise de código estático, você pode usar várias ferramentas de código aberto, não existe uma ferramenta universal para todas as linguagens de programação. Alguns deles seguem as diretrizes do OWASP e tentam abranger o máximo de idiomas possível.



Aqui, usaremos o Graudit , um utilitário de linha de comando simples que nos permitirá encontrar vulnerabilidades em nossa base de código. Suporta diferentes idiomas, mas ainda assim seu conjunto é limitado. Graudit é desenvolvido com base no utilitário grep, que foi lançado sob a licença GNU.



Existem ferramentas semelhantes para análise de código estático - Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder e assim por diante. Mas Graudit é muito flexível e tem requisitos técnicos mínimos. No entanto, você pode ter problemas que o Graudit não consegue resolver. Depois, você pode procurar outras opções aqui nesta lista .



Podemos integrar esta ferramenta em um projeto específico, ou disponibilizá-la para um usuário selecionado, ou utilizá-la simultaneamente em todos os nossos projetos. É aqui também que o Graudit é flexível. Então, vamos clonar o repo primeiro:



$ git clone https://github.com/wireghoul/graudit


Agora vamos criar um link simbólico para Graudit para usá-lo no formato de comando



$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit


Adicione um alias a .bashrc (ou qualquer arquivo de configuração que você esteja usando):



#------ .bashrc ------
alias graudit="~/bin/graudit"


Reinicializar:



$ source ~/.bashrc # OR
$ exex $SHELL


Vamos verificar se a instalação foi bem-sucedida:



$ graudit -h




Se você vir algo semelhante, então está tudo bem.







Vou testar um dos meus projetos existentes. Antes de executar a ferramenta, ela precisa passar o banco de dados correspondente ao idioma em que meu projeto está escrito. Os bancos de dados estão localizados na pasta ~ / gradit / signatures:



$ graudit -d ~/gradit/signatures/js.db


Então, testei dois arquivos js do meu projeto e Graudit imprimiu informações sobre vulnerabilidades em meu código para o console:











Você pode tentar testar seus projetos da mesma maneira. A lista de bancos de dados para diferentes linguagens de programação pode ser encontrada aqui .



As vantagens e desvantagens do Graudit



Graudit suporta muitas linguagens de programação. Portanto, é adequado para uma ampla gama de usuários. Ele pode competir com quaisquer contrapartes gratuitas ou pagas. E é muito importante que melhorias ainda estejam sendo feitas no projeto, e a comunidade não apenas ajude os desenvolvedores, mas também outros usuários que estão tentando descobrir a ferramenta.



Esta é uma ferramenta útil, mas até agora nem sempre é capaz de indicar exatamente qual é o problema, associado a um trecho de código suspeito. Os desenvolvedores continuam a refinar o Graudit.



Mas, em qualquer caso, é útil prestar atenção a possíveis problemas de segurança em seu código usando essas ferramentas.



Começar...



Neste artigo, considerei apenas uma das muitas maneiras de encontrar vulnerabilidades - o teste estático de segurança de aplicativos. A análise de código estático é fácil, mas isso é apenas o começo. Para saber mais sobre a segurança de sua base de código, você precisa integrar outros tipos de teste no ciclo de vida de desenvolvimento de software.






Publicidade



Um VPS confiável e a escolha certa de um plano tarifário permitirão que você se distraia menos do desenvolvimento por problemas desagradáveis ​​- tudo funcionará perfeitamente e com um tempo de atividade muito alto!






All Articles