
brakeman v8.0.6
Um scanner de vulnerabilidades de segurança de análise estática para aplicações Ruby on Rails
Brakeman
Brakeman é uma ferramenta de análise estática que verifica aplicações Ruby on Rails em busca de vulnerabilidades de segurança.
Instalação
Usando RubyGems:
gem install brakeman
Usando Bundler:
group :development do
gem 'brakeman', require: false
end
Usando Docker:
docker pull presidentbeef/brakeman
Usando Docker para construir a partir da fonte:
git clone https://github.com/presidentbeef/brakeman.git
cd brakeman
docker build . -t brakeman
Uso
Executando localmente
A partir do diretório raiz de uma aplicação Rails:
brakeman
Fora da raiz do Rails:
brakeman /caminho/para/aplicação/rails
Executando com Docker
A partir do diretório raiz de uma aplicação Rails:
docker run -v "$(pwd)":/code presidentbeef/brakeman
Com uma cor um pouco mais agradável:
docker run -v "$(pwd)":/code presidentbeef/brakeman --color
Para um relatório HTML:
docker run -v "$(pwd)":/code presidentbeef/brakeman -o brakeman_results.html
Fora da raiz do Rails (note que o arquivo de saída é relativo a /caminho/para/aplicação/rails):
docker run -v '/caminho/para/aplicação/rails':/code presidentbeef/brakeman -o brakeman_results.html
Compatibilidade
Brakeman deve funcionar com qualquer versão do Rails de 2.3.x a 8.x.
Brakeman pode analisar código escrito com sintaxe Ruby 2.0 ou superior, mas requer pelo menos Ruby 3.2.0 para executar.
Opções Básicas
Para uma lista completa de opções, use brakeman --help ou veja o arquivo OPTIONS.md.
Para especificar um arquivo de saída para os resultados:
brakeman -o arquivo_saida
O formato de saída é determinado pela extensão do arquivo ou usando a opção -f. As opções atuais são: text, html, tabs, json, junit, markdown, csv, codeclimate, github, sarif e sonar.
Vários arquivos de saída podem ser especificados:
brakeman -o output.html -o output.json
Para enviar a saída para um arquivo e para o console, com cores:
brakeman --color -o /dev/stdout -o output.json
Para suprimir avisos informativos e apenas exibir o relatório:
brakeman -q
Note que toda a saída do Brakeman, exceto os relatórios, é enviada para stderr, facilitando o redirecionamento do stdout para um arquivo e obtendo apenas o relatório.
Para ver todos os tipos de informações de depuração:
brakeman -d
Verificações específicas podem ser ignoradas, se desejado. O nome precisa estar com a capitalização correta. Por exemplo, para ignorar a busca por rotas padrão (DefaultRoutes):
brakeman -x DefaultRoutes
Várias verificações devem ser separadas por vírgula:
brakeman -x DefaultRoutes,Redirect
Para fazer o oposto e executar apenas um determinado conjunto de testes:
brakeman -t SQL,ValidationRegex
Se o Brakeman estiver um pouco lento, tente
brakeman --faster
Isso desativará alguns recursos, mas provavelmente será muito mais rápido (atualmente é o mesmo que --skip-libs --no-branching). AVISO: Isso pode fazer com que o Brakeman perca algumas vulnerabilidades.
Por padrão, o Brakeman retornará um código de saída diferente de zero se algum aviso de segurança for encontrado ou ocorrerem erros de varredura. Para desabilitar isso:
brakeman --no-exit-on-warn --no-exit-on-error
Para ignorar certos arquivos ou diretórios que o Brakeman pode ter dificuldade em analisar, use:
brakeman --skip-files arquivo1,/caminho1/,caminho2/
Para comparar os resultados de uma varredura com uma varredura anterior, use a opção de saída JSON e então:
brakeman --compare relatorio_antigo.json
Isso produzirá JSON com duas listas: uma de avisos corrigidos e outra de novos avisos.
O Brakeman ignorará avisos se configurado para isso. Por padrão, ele procura um arquivo de configuração em config/brakeman.ignore. Para criar e gerenciar este arquivo, use:
brakeman -I
Se você quiser ver temporariamente os avisos ignorados sem afetar o código de saída, use:
brakeman --show-ignored
Informações sobre avisos
Veja warning_types para mais informações sobre os avisos reportados por esta ferramenta.
Contexto do aviso
O formato de saída HTML fornece um trecho do código-fonte original da aplicação onde um aviso foi acionado. Devido ao processamento realizado durante a busca por vulnerabilidades, o código-fonte pode não se assemelhar ao aviso reportado e os números de linha reportados podem estar ligeiramente incorretos. No entanto, o contexto ainda fornece uma visão rápida do código que gerou o aviso.
Níveis de confiança
O Brakeman atribui um nível de confiança a cada aviso. Isso fornece uma estimativa aproximada de quão certo a ferramenta está de que um determinado aviso é realmente um problema. Naturalmente, essas classificações não devem ser consideradas como verdade absoluta.
Existem três níveis de confiança:
- Alto - Ou é um aviso simples (valor booleano) ou é muito provável que a entrada do usuário esteja sendo usada de maneiras inseguras.
- Médio - Isso geralmente indica um uso inseguro de uma variável, mas a variável pode ou não ser entrada do usuário.
- Fraco - Normalmente significa que a entrada do usuário foi usada indiretamente de maneira potencialmente insegura.
Para obter apenas avisos acima de um determinado nível de confiança:
brakeman -w3
A opção -w aceita um número de 1 a 3, sendo 1 baixo (todos os avisos) e 3 alto (apenas avisos de maior confiança).
Arquivos de configuração
As opções do Brakeman podem ser armazenadas e lidas a partir de arquivos YAML.
Para simplificar o processo de escrever um arquivo de configuração, a opção -C exibirá as opções atualmente configuradas:
$ brakeman -C --skip-files plugins/
---
:skip_files:
- plugins/
As opções passadas na linha de comando têm prioridade sobre os arquivos de configuração.
As localizações padrão de configuração são ./config/brakeman.yml, ~/.brakeman/config.yml e /etc/brakeman/config.yml
A opção -c pode ser usada para especificar um arquivo de configuração a ser usado.
Integração Contínua
Existe um plugin disponível para Jenkins/Hudson.
Para testes contínuos ainda mais, experimente o plugin Guard.
Existem algumas GitHub Actions disponíveis.
Construindo
git clone git://github.com/presidentbeef/brakeman.git
cd brakeman
gem build brakeman.gemspec
gem install brakeman*.gem
Quem está usando Brakeman?
Site/Notícias
Site: http://brakemanscanner.org/
Twitter: https://twitter.com/brakeman
Chat: https://gitter.im/presidentbeef/brakeman
Licença
Brakeman é gratuito para uso não comercial.
Veja COPYING para detalhes.