
brakeman v8.0.6
Un escáner de vulnerabilidades de seguridad de análisis estático para aplicaciones Ruby on Rails
Brakeman
Brakeman es una herramienta de análisis estático que verifica las aplicaciones Ruby on Rails en busca de vulnerabilidades de seguridad.
Instalación
Usando RubyGems:
gem install brakeman
Usando Bundler:
group :development do
gem 'brakeman', require: false
end
Usando Docker:
docker pull presidentbeef/brakeman
Usando Docker para compilar desde el código fuente:
git clone https://github.com/presidentbeef/brakeman.git
cd brakeman
docker build . -t brakeman
Uso
Ejecución local
Desde el directorio raíz de una aplicación Rails:
brakeman
Fuera de la raíz de Rails:
brakeman /path/to/rails/application
Ejecución con Docker
Desde el directorio raíz de una aplicación Rails:
docker run -v "$(pwd)":/code presidentbeef/brakeman
Con un color un poco más bonito:
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 la raíz de Rails (nota que el archivo de salida es relativo a path/to/rails/application):
docker run -v 'path/to/rails/application':/code presidentbeef/brakeman -o brakeman_results.html
Compatibilidad
Brakeman debería funcionar con cualquier versión de Rails desde 2.3.x hasta 8.x.
Brakeman puede analizar código escrito con sintaxis de Ruby 2.0 o posterior, pero requiere al menos Ruby 3.2.0 para ejecutarse.
Opciones básicas
Para una lista completa de opciones, usa brakeman --help o consulta el archivo OPTIONS.md.
Para especificar un archivo de salida para los resultados:
brakeman -o output_file
El formato de salida se determina por la extensión del archivo o usando la opción -f. Las opciones actuales son: text, html, tabs, json, junit, markdown, csv, codeclimate, github, sarif y sonar.
Se pueden especificar múltiples archivos de salida:
brakeman -o output.html -o output.json
Para generar salida tanto a un archivo como a la consola, con color:
brakeman --color -o /dev/stdout -o output.json
Para suprimir las advertencias informativas y solo generar el informe:
brakeman -q
Nota: toda la salida de Brakeman excepto los informes se envía a stderr, lo que facilita redirigir stdout a un archivo y obtener solo el informe.
Para ver todo tipo de información de depuración:
brakeman -d
Se pueden omitir comprobaciones específicas si se desea. El nombre debe tener las mayúsculas correctas. Por ejemplo, para omitir la búsqueda de rutas predeterminadas (DefaultRoutes):
brakeman -x DefaultRoutes
Varias comprobaciones deben separarse por comas:
brakeman -x DefaultRoutes,Redirect
Para hacer lo contrario y solo ejecutar un conjunto específico de pruebas:
brakeman -t SQL,ValidationRegex
Si Brakeman está funcionando un poco lento, prueba
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 pase por alto algunas vulnerabilidades.
Por defecto, Brakeman devolverá un código de salida distinto de cero si se encuentra alguna advertencia 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 pueda tener problemas para analizar, usa:
brakeman --skip-files file1,/path1/,path2/
Para comparar los resultados de un escaneo con un escaneo anterior, usa la opción de salida JSON y luego:
brakeman --compare old_report.json
Esto generará JSON con dos listas: una de advertencias corregidas y otra de advertencias nuevas.
Brakeman ignorará las advertencias si está configurado para hacerlo. Por defecto, busca un archivo de configuración en config/brakeman.ignore.
Para crear y gestionar este archivo, usa:
brakeman -I
Si quieres ver temporalmente las advertencias que ignoraste sin afectar el código de salida, usa:
brakeman --show-ignored
Información de advertencias
Consulta warning_types para más información sobre las advertencias reportadas por esta herramienta.
Contexto de advertencias
El formato de salida HTML proporciona un extracto del código fuente original de la aplicación donde se activó una advertencia. Debido al procesamiento realizado al buscar vulnerabilidades, es posible que el código fuente no se parezca a la advertencia reportada y que los números de línea reportados sean ligeramente inexactos. Sin embargo, el contexto aún proporciona una vista rápida del código que generó la advertencia.
Niveles de confianza
Brakeman asigna un nivel de confianza a cada advertencia. Esto proporciona una estimación aproximada de cuán seguro está la herramienta de que una advertencia determinada es realmente un problema. Naturalmente, estas calificaciones no deben tomarse como verdad absoluta.
Hay tres niveles de confianza:
- Alto - Ya sea que esta sea una advertencia simple (valor booleano) o que la entrada del usuario se esté usando muy probablemente de formas inseguras.
- Medio - Esto generalmente indica un uso inseguro de una variable, pero la variable puede o no ser entrada del usuario.
- Bajo - Generalmente significa que la entrada del usuario se usó indirectamente de una manera potencialmente insegura.
Para obtener solo advertencias por encima de un nivel de confianza dado:
brakeman -w3
El modificador -w toma un número del 1 al 3, siendo 1 bajo (todas las advertencias) y 3 alto (solo las advertencias de mayor confianza).
Archivos de configuración
Las opciones de Brakeman se pueden almacenar y leer desde archivos YAML.
Para simplificar el proceso de escribir un archivo de configuración, la opción -C mostrará las opciones actualmente establecidas:
$ 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 a usar.
Integración continua
Hay un plugin disponible para Jenkins/Hudson.
Para aún más pruebas continuas, prueba el plugin Guard.
Hay un par de GitHub Actions disponibles.
Compilación
git clone git://github.com/presidentbeef/brakeman.git
cd brakeman
gem build brakeman.gemspec
gem install brakeman*.gem
¿Quién está usando Brakeman?
Página principal/Noticias
Sitio web: http://brakemanscanner.org/
Twitter: https://twitter.com/brakeman
Chat: https://gitter.im/presidentbeef/brakeman
Licencia
Brakeman es gratuito para uso no comercial.
Consulta COPYING para obtener detalles.