Brakeman é uma ferramenta de análise estática que verifica os aplicativos Ruby on Rails para vulnerabilidades de segurança.
Usando Rubygems:
gem install brakeman
Usando Bundler:
group :development do
gem 'brakeman' , require : false
endUsando Docker:
docker pull presidentbeef/brakeman
Usando o Docker para construir a partir da fonte:
git clone https://github.com/presidentbeef/brakeman.git
cd brakeman
docker build . -t brakeman
Do diretório raiz de um aplicativo Rails:
brakeman
Fora da raiz dos trilhos:
brakeman /path/to/rails/application
Do diretório raiz de um aplicativo Rails:
docker run -v "$(pwd)":/code presidentbeef/brakeman
Com um pouco mais agradável de cor:
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 do Rails Root (observe que o arquivo de saída é relativo ao caminho/para/trilhos/aplicação):
docker run -v 'path/to/rails/application':/code presidentbeef/brakeman -o brakeman_results.html
Brakeman deve trabalhar com qualquer versão do Rails de 2.3.x a 7.x.
O Brakeman pode analisar o código escrito com a sintaxe Ruby 2.0 e mais recente, mas requer pelo menos o Ruby 3.0.0 para ser executado.
Para uma lista completa de opções, use brakeman --help ou consulte o arquivo Options.md.
Para especificar um arquivo de saída para os resultados:
brakeman -o output_file
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 e sonar .
Vários arquivos de saída podem ser especificados:
brakeman -o output.html -o output.json
Para produzir para um arquivo e para o console, com cores:
brakeman --color -o /dev/stdout -o output.json
Para suprimir os avisos informativos e apenas produzir o relatório:
brakeman -q
Observe toda a saída do Brakeman, exceto que os relatórios são enviados para o Stderr, simplificando o redirecionamento para um arquivo e apenas obtém o relatório.
Para ver todos os tipos de informações de depuração:
brakeman -d
Verificações específicas podem ser ignoradas, se desejar. O nome precisa ser o caso correto. Por exemplo, para pular a procura de rotas padrão ( DefaultRoutes ):
brakeman -x DefaultRoutes
Vários cheques devem ser separados por uma vírgula:
brakeman -x DefaultRoutes,Redirect
Para fazer o oposto e executar apenas um certo conjunto de testes:
brakeman -t SQL,ValidationRegex
Se Brakeman estiver ficando 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 Brakeman perca algumas vulnerabilidades.
Por padrão, Brakeman retornará um código de saída diferente de zero se algum aviso de segurança for encontrado ou erros de digitalização forem encontrados. Para desativar isso:
brakeman --no-exit-on-warn --no-exit-on-error
Para pular certos arquivos ou diretórios que Brakeman pode ter problemas para analisar, use:
brakeman --skip-files file1,/path1/,path2/
Para comparar os resultados de uma varredura com uma varredura anterior, use a opção de saída JSON e depois:
brakeman --compare old_report.json
Isso produzirá JSON com duas listas: uma dos avisos fixos e um dos novos avisos.
Brakeman ignorará os avisos se configurado para fazê -lo. 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ê deseja ver temporariamente os avisos que você ignorou sem afetar o código de saída, use:
brakeman --show-ignored
Consulte Warning_Types para obter mais informações sobre os avisos relatados por esta ferramenta.
O formato de saída HTML fornece um trecho da fonte de aplicativo original em que um aviso foi acionado. Devido ao processamento feito enquanto procura vulnerabilidades, a fonte pode não se parecer com o aviso relatado e os números de linha relatados podem estar um pouco desativados. No entanto, o contexto ainda fornece uma rápida olhada no código que levantou o aviso.
Brakeman atribui um nível de confiança a cada aviso. Isso fornece uma estimativa aproximada de quão certa é a ferramenta de que um determinado aviso é realmente um problema. Naturalmente, essas classificações não devem ser tomadas como verdade absoluta.
Existem três níveis de confiança:
Para obter apenas avisos acima de um determinado nível de confiança:
brakeman -w3
O interruptor -w leva um número de 1 a 3, com 1 sendo baixo (todos os avisos) e 3 sendo altos (apenas avisos de confiança mais altos).
As opções Brakeman podem ser armazenadas e lidas nos arquivos YAML.
Para simplificar o processo de gravação de um arquivo de configuração, a opção -C produzirá as opções atualmente definidas:
$ brakeman -C --skip-files plugins/
---
:skip_files:
- plugins/As opções transmitidas na linha de comando têm prioridade sobre os arquivos de configuração.
Os locais de configuração padrã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 para usar.
Há um plug -in disponível para Jenkins/Hudson.
Para testes ainda mais contínuos, tente o plug -in de guarda.
Existem algumas ações do GitHub disponíveis.
git clone git://github.com/presidentbeef/brakeman.git
cd brakeman
gem build brakeman.gemspec
gem install brakeman*.gem
..e mais!
Site: http://brakemanscanner.org/
Twitter: https://twitter.com/brakeman
Chat: https://gitter.im/presidentbeef/brakeman
Brakeman é gratuito para uso não comercial.
Veja a cópia para obter detalhes.