Brakeman es una herramienta de análisis estático que verifica las aplicaciones de Ruby en Rails para vulnerabilidades de seguridad.
Usando Rubygems:
gem install brakeman
Usando Bundler:
group :development do
gem 'brakeman' , require : false
endUsando Docker:
docker pull presidentbeef/brakeman
Uso de Docker para construir desde la fuente:
git clone https://github.com/presidentbeef/brakeman.git
cd brakeman
docker build . -t brakeman
Desde el directorio raíz de una aplicación Rails:
brakeman
Fuera de la raíz de los rieles:
brakeman /path/to/rails/application
Desde el directorio raíz de una aplicación Rails:
docker run -v "$(pwd)":/code presidentbeef/brakeman
Con un poco de mejor color:
docker run -v "$(pwd)":/code presidentbeef/brakeman --color
Para un informe HTML:
docker run -v "$(pwd)":/code presidentbeef/brakeman -o brakeman_results.html
Fuera de Rails Root (tenga en cuenta que el archivo de salida es relativo a ruta/a/rieles/aplicación):
docker run -v 'path/to/rails/application':/code presidentbeef/brakeman -o brakeman_results.html
Brakeman debe trabajar con cualquier versión de Rails de 2.3.x a 7.x.
Brakeman puede analizar el código escrito con sintaxis Ruby 2.0 y más nuevo, pero requiere al menos Ruby 3.0.0 para ejecutarse.
Para obtener una lista completa de opciones, use brakeman --help o consulte el archivo Options.md.
Para especificar un archivo de salida para los resultados:
brakeman -o output_file
El formato de salida está determinado por la extensión del archivo o utilizando la opción -f . Las opciones actuales son: text , html , tabs , json , junit , markdown , csv , codeclimate y sonar .
Se pueden especificar varios archivos de salida:
brakeman -o output.html -o output.json
Para emitir tanto a un archivo como a la consola, con color:
brakeman --color -o /dev/stdout -o output.json
Para suprimir las advertencias informativas y simplemente generar el informe:
brakeman -q
Tenga en cuenta que toda la producción de Brakeman, excepto los informes, se envían a Stderr, lo que hace que sea fácil redirigir a StDOut a un archivo y simplemente obtener el informe.
Para ver todo tipo de información de depuración:
brakeman -d
Se pueden omitir los controles específicos, si lo desea. El nombre debe ser el caso correcto. Por ejemplo, para omitir en busca de rutas predeterminadas ( DefaultRoutes ):
brakeman -x DefaultRoutes
Múltiples controles deben estar separados por una coma:
brakeman -x DefaultRoutes,Redirect
Para hacer lo contrario y solo ejecutar un cierto conjunto de pruebas:
brakeman -t SQL,ValidationRegex
Si Brakeman está corriendo un poco lento, intente
brakeman --faster
Esto deshabilitará algunas características, pero probablemente será mucho más rápido (actualmente es lo mismo que --skip-libs --no-branching ). Advertencia : Esto puede hacer que Brakeman se pierda algunas vulnerabilidades.
Por defecto, Brakeman devolverá un código de salida distinto de cero si se encuentran advertencias de seguridad o se encuentran errores de escaneo. Para deshabilitar esto:
brakeman --no-exit-on-warn --no-exit-on-error
Para omitir ciertos archivos o directorios que Brakeman puede tener problemas para analizar, usar:
brakeman --skip-files file1,/path1/,path2/
Para comparar los resultados de un escaneo con un escaneo anterior, use la opción de salida JSON y luego:
brakeman --compare old_report.json
Esto generará JSON con dos listas: una de advertencias fijas y una de nuevas advertencias.
Brakeman ignorará las advertencias si se configuran para hacerlo. Por defecto, busca un archivo de configuración en config/brakeman.ignore . Para crear y administrar este archivo, use:
brakeman -I
Si desea ver temporalmente las advertencias que ignoró sin afectar el código de salida, use:
brakeman --show-ignored
Consulte Warning_Types para obtener más información sobre las advertencias reportadas por esta herramienta.
El formato de salida HTML proporciona un extracto de la fuente de aplicación original donde se activó una advertencia. Debido al procesamiento realizado mientras busca vulnerabilidades, la fuente puede no parecerse a la advertencia informada y los números de línea reportados pueden estar ligeramente apagados. Sin embargo, el contexto aún proporciona una mirada rápida al código que planteó la advertencia.
Brakeman asigna un nivel de confianza a cada advertencia. Esto proporciona una estimación aproximada de cuán segura de la herramienta es que una advertencia dada es en realidad un problema. Naturalmente, estas calificaciones no deben tomarse como verdad absoluta.
Hay tres niveles de confianza:
Para obtener solo advertencias por encima de un nivel de confianza dado:
brakeman -w3
El interruptor -w toma un número del 1 al 3, siendo 1 bajo (todas las advertencias) y 3 son altos (solo advertencias de confianza más alta).
Las opciones de Brakeman se pueden almacenar y leer a partir de archivos YAML.
Para simplificar el proceso de redacción de un archivo de configuración, la opción -C emitirá las opciones establecidas actualmente:
$ brakeman -C --skip-files plugins/
---
:skip_files:
- plugins/Las opciones pasadas en la línea de comandos tienen prioridad sobre los archivos de configuración.
Las ubicaciones de configuración predeterminadas son ./config/brakeman.yml , ~/.brakeman/config.yml y /etc/brakeman/config.yml
La opción -c se puede usar para especificar un archivo de configuración para usar.
Hay un complemento disponible para Jenkins/Hudson.
Para pruebas aún más continuas, pruebe el complemento Guard.
Hay un par de acciones de GitHub disponibles.
git clone git://github.com/presidentbeef/brakeman.git
cd brakeman
gem build brakeman.gemspec
gem install brakeman*.gem
.. y más!
Sitio web: http://brakemanscanner.org/
Twitter: https://twitter.com/brakeman
Chat: https://gitter.im/presidentbeef/brakeman
Brakeman es gratuito para uso no comercial.
Vea la copia de detalles.