Torna agli aggiornamenti
New releaseAug 13, 2026

brakeman v8.0.6

Uno scanner di vulnerabilità di sicurezza tramite analisi statica per applicazioni Ruby on Rails

Condividi

Brakeman Logo

Stato Build Copertura del codice

Brakeman

Brakeman è uno strumento di analisi statica che controlla le applicazioni Ruby on Rails per vulnerabilità di sicurezza.

Installazione

Utilizzando RubyGems:

gem install brakeman

Utilizzando Bundler:

group :development do
  gem 'brakeman', require: false
end

Utilizzando Docker:

docker pull presidentbeef/brakeman

Utilizzando Docker per compilare dal sorgente:

git clone https://github.com/presidentbeef/brakeman.git
cd brakeman
docker build . -t brakeman

Utilizzo

Esecuzione in locale

Dalla directory principale di un'applicazione Rails:

brakeman

Al di fuori della directory principale di Rails:

brakeman /path/to/rails/application

Esecuzione con Docker

Dalla directory principale di un'applicazione Rails:

docker run -v "$(pwd)":/code presidentbeef/brakeman

Con colori un po' più belli:

docker run -v "$(pwd)":/code presidentbeef/brakeman --color

Per un report HTML:

docker run -v "$(pwd)":/code presidentbeef/brakeman -o brakeman_results.html

Al di fuori della directory principale di Rails (nota che il file di output è relativo a path/to/rails/application):

docker run -v 'path/to/rails/application':/code presidentbeef/brakeman -o brakeman_results.html

Compatibilità

Brakeman dovrebbe funzionare con qualsiasi versione di Rails dalla 2.3.x alla 8.x.

Brakeman può analizzare codice scritto con sintassi Ruby 2.0 e successivi, ma richiede almeno Ruby 3.2.0 per funzionare.

Opzioni di base

Per un elenco completo delle opzioni, usa brakeman --help o consulta il file OPTIONS.md.

Per specificare un file di output per i risultati:

brakeman -o output_file

Il formato di output è determinato dall'estensione del file o usando l'opzione -f. Le opzioni attuali sono: text, html, tabs, json, junit, markdown, csv, codeclimate, github, sarif e sonar.

Possono essere specificati più file di output:

brakeman -o output.html -o output.json

Per stampare sia su file che sulla console, con colori:

brakeman --color -o /dev/stdout -o output.json

Per sopprimere gli avvisi informativi e stampare solo il report:

brakeman -q

Nota: tutto l'output di Brakeman tranne i report viene inviato a stderr, rendendo semplice redirigere stdout su un file e ottenere solo il report.

Per vedere tutti i tipi di informazioni di debug:

brakeman -d

È possibile saltare specifici controlli, se desiderato. Il nome deve essere con le maiuscole corrette. Ad esempio, per saltare la ricerca di route predefinite (DefaultRoutes):

brakeman -x DefaultRoutes

Più controlli devono essere separati da una virgola:

brakeman -x DefaultRoutes,Redirect

Per fare l'opposto ed eseguire solo un determinato insieme di test:

brakeman -t SQL,ValidationRegex

Se Brakeman è un po' lento, prova

brakeman --faster

Questo disabiliterà alcune funzionalità, ma probabilmente sarà molto più veloce (attualmente è equivalente a --skip-libs --no-branching). ATTENZIONE: Potrebbe causare la mancata rilevazione di alcune vulnerabilità da parte di Brakeman.

Per impostazione predefinita, Brakeman restituirà un codice di uscita diverso da zero se vengono trovati avvisi di sicurezza o se si incontrano errori di scansione. Per disabilitarlo:

brakeman --no-exit-on-warn --no-exit-on-error

Per saltare determinati file o directory che Brakeman potrebbe avere difficoltà a analizzare, usa:

brakeman --skip-files file1,/path1/,path2/

Per confrontare i risultati di una scansione con una scansione precedente, usa l'opzione di output JSON e poi:

brakeman --compare old_report.json

Questo produrrà un JSON con due elenchi: uno di avvisi risolti e uno di nuovi avvisi.

Brakeman ignorerà gli avvisi se configurato per farlo. Per impostazione predefinita, cerca un file di configurazione in config/brakeman.ignore.

Per creare e gestire questo file, usa:

brakeman -I

Se vuoi vedere temporaneamente gli avvisi che hai ignorato senza influenzare il codice di uscita, usa:

brakeman --show-ignored

Informazioni sugli avvisi

Vedi warning_types per maggiori informazioni sugli avvisi riportati da questo strumento.

Contesto degli avvisi

Il formato di output HTML fornisce un estratto dal sorgente originale dell'applicazione dove è stato attivato un avviso. A causa dell'elaborazione effettuata durante la ricerca di vulnerabilità, il sorgente potrebbe non assomigliare all'avviso segnalato e i numeri di riga segnalati potrebbero essere leggermente imprecisi. Tuttavia, il contesto fornisce comunque una rapida occhiata al codice che ha generato l'avviso.

Livelli di confidenza

Brakeman assegna un livello di confidenza a ciascun avviso. Questo fornisce una stima approssimativa di quanto lo strumento sia certo che un dato avviso sia effettivamente un problema. Naturalmente, queste valutazioni non dovrebbero essere considerate come verità assolute.

Ci sono tre livelli di confidenza:

  • Alto - O è un avviso semplice (valore booleano) o è molto probabile che l'input dell'utente venga utilizzato in modo non sicuro.
  • Medio - Indica generalmente un uso non sicuro di una variabile, ma la variabile potrebbe o meno essere input dell'utente.
  • Debole - Tipicamente significa che l'input dell'utente è stato utilizzato indirettamente in modo potenzialmente non sicuro.

Per ottenere solo avvisi al di sopra di un dato livello di confidenza:

brakeman -w3

L'opzione -w accetta un numero da 1 a 3, dove 1 è basso (tutti gli avvisi) e 3 è alto (solo avvisi con la massima confidenza).

File di configurazione

Le opzioni di Brakeman possono essere salvate e lette da file YAML.

Per semplificare il processo di scrittura di un file di configurazione, l'opzione -C stamperà le opzioni attualmente impostate:

$ brakeman -C --skip-files plugins/
---
:skip_files:
- plugins/

Le opzioni passate da riga di comando hanno priorità sui file di configurazione.

Le posizioni predefinite per la configurazione sono ./config/brakeman.yml, ~/.brakeman/config.yml e /etc/brakeman/config.yml

L'opzione -c può essere usata per specificare un file di configurazione da utilizzare.

Integrazione Continua

È disponibile un plugin per Jenkins/Hudson.

Per test continui ancora più approfonditi, prova il plugin Guard.

Sono disponibili un paio di GitHub Actions.

Compilazione

git clone git://github.com/presidentbeef/brakeman.git
cd brakeman
gem build brakeman.gemspec
gem install brakeman*.gem

Chi usa Brakeman?

..e altri ancora!

Homepage/Novità

Sito web: http://brakemanscanner.org/

Twitter: https://twitter.com/brakeman

Chat: https://gitter.im/presidentbeef/brakeman

Licenza

Brakeman è gratuito per uso non commerciale.

Vedi COPYING per i dettagli.

Categorie