Salve galera! Como vocês estão?! Faz um bom tempo que não escrevo aqui, né?
Brakeman Scanner: https://brakemanscanner.org/
Que tal praticarmos?!
Ferramenta | Versão | Observações |
---|---|---|
Ruby | 3.0.1.64 | - |
Rails | 6.1.4 | - |
Gem Beakeman | - | - |
Gem Hakiri | - | - |
Vamos preparar o ambiente e criar o projeto, utilizando o Rails, para isso, execute os passos a seguir:
$rails new my_security_app
Vamos para a pasta que foi criada para o projeto:
$cd my_security_app
Vamos subir a aplicação uma primeira vez para nos certificar de que o Rails fez tudo certinho:
$rails s
Se tudo ocorreu bem até aqui, você deve vizualisar algo como a imagem abaixo:
Maravilha, nosso app está funcionando! Mas, será que ele está seguro? É o que vamos descobrir a seguir.
Instalando a gem Brakeman
Não é necessário adicionar a gem no Gemfile, neste caso, estando na pasta do projeto, basta rodar o comando abaixo:
$gem install brakeman
A partir daqui não é necessário muita coisa, basta apenas, após instalar a gem, executá-la:
$brakeman
Ou, caso queira que o scanner gere um relatório html, rode-o da seguinte maneira:
$brakeman -o my_security_app_report.html
Dando aquele check no relatório final
Conforme podemos ver nas próximas imagens, o brakeman gera um relatório bem completo e detalhado quando encontra alguma vulnerabilidade:
Aqui, rodei com a opção de criar um arquivo html, na imagem abaixo vemos para o nosso app criado para este tutorial, e notamos que aplicações criadas com ruby 3 rails 6 praticamente não apresentam vulnerabilidades.
E na próxima imagem, rodei o brakeman em um projeto mais antigo, e que neste caso, detectou duas vulnerabilidades:
Instalando e usando a gem hakiri
Vamos dar uma rápida olhada na gem hakiri, como disse acima, ela verifica por vulnerabilidades no sistema operacional, linguagens e outras ferramentas instalada na máquina, servidor ou container onde rodamos o projeto.
Para instalá-la, também não é necessário adicionar a gem no Gemfile, porém ela instala algumas gems que são dependências para que ela possa funcionar corretamente.
Rode os comandos abaixo: (na pasta do projeto)
$gem install hakiri
A gem estando instalada, basta gerar o manifesto json e após rodar o scan propriamente dito:
$hakiri manifest:generate
Rodando o scan:
$hakiri system:scan
Conferindo o relatório gerado pelo hakiri
Como podemos ver na imagem acima, o hakiri não detectou muitas das ferramentas geralmente instaladas em servidores que rodam aplicações rails, afinal, estou rodando na minha máquina local, um WSL 2 rodando no Windows 10. Porém, conforme podemos ver na outra imagem, ele detectou diversas vulnerabilidades no sistema operacional, e isto é importante, pois precisamos estar atentos não só a segurança da nossa aplicação, mas também a segurança da nossa infra, seja ela local ou na nuvem.
Rodei os scanners! Meu Deus, e agora?!
Como podemos ver, estas são duas gems bem completas, e que fazem um bom trabalho. Sugiro que verifiquem as documentações e testem exaustivamente em seus sistemas. Existem outras ferramentas, porém ainda não testei, e assim que testar, volto aqui e atualizo.
Mas, e agora? O que vem depois?
Bom, o relatório gerado pela gem brakeman é bem detalhado, mostrando extamente em que linha do seu código está a possível vulnerabilidade, e como ela pode ser explorada. Neste caso, você pode seguir as boas práticas e refatorar, conforme indicado na documentação de boas práticas de segurança do rails, neste link:
Securing Rails Applications - v7.0.0: https://guides.rubyonrails.org/security.html
Já, no caso da gem hakiri, ela dá um relatório mais detalhado sobre as vulnerabilidades do sistema, e sendo assim, o melhor caminho é instalar os patches de segurança recomendados, e caso você não tenha permissão para executar certas tarefas, contate o administrador do sistema. Você terá feito um bom serviço.
Finalizando…
Bom, foi um tutorial bem simples, e direto ao ponto, e confesso que este pouco material me ajudou muito quando precisei checar a segurança das minhas aplicações RoR. Espero que seja útil para vocês também.
É isso pessoal!
Um ótimo final de 2021, e que 2022 venha com tudo, trazendo o que há de bom e do melhor para nós e nossas famílias!
Grande Abraço.
MadSantana! :-)