Voltar às atualizações
New releaseAug 13, 2026

brakeman v8.0.6

Um scanner de vulnerabilidades de segurança de análise estática para aplicações Ruby on Rails

Compartilhar

Brakeman Logo

Build Status Code Coverage

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?

..e mais!

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.

Categorias