Brakeman est un outil d'analyse statique qui vérifie Ruby sur les applications Rails pour les vulnérabilités de sécurité.
Utilisation de Rubygems:
gem install brakeman
Utilisation de Bundler:
group :development do
gem 'brakeman' , require : false
endUtilisation de Docker:
docker pull presidentbeef/brakeman
Utilisation de Docker pour construire à partir de la source:
git clone https://github.com/presidentbeef/brakeman.git
cd brakeman
docker build . -t brakeman
À partir du répertoire racine d'une application Rails:
brakeman
En dehors de Root Root:
brakeman /path/to/rails/application
À partir du répertoire racine d'une application Rails:
docker run -v "$(pwd)":/code presidentbeef/brakeman
Avec une petite couleur plus agréable:
docker run -v "$(pwd)":/code presidentbeef/brakeman --color
Pour un rapport HTML:
docker run -v "$(pwd)":/code presidentbeef/brakeman -o brakeman_results.html
En dehors de Root Root (notez que le fichier de sortie est relatif au chemin / vers / rails / application):
docker run -v 'path/to/rails/application':/code presidentbeef/brakeman -o brakeman_results.html
Brakeman devrait travailler avec n'importe quelle version de Rails de 2.3.x à 7.x.
Brakeman peut analyser le code écrit avec Ruby 2.0 Syntax et plus récent, mais nécessite au moins Ruby 3.0.0 pour s'exécuter.
Pour une liste complète des options, utilisez brakeman --help ou consultez le fichier OPTIONS.MD.
Pour spécifier un fichier de sortie pour les résultats:
brakeman -o output_file
Le format de sortie est déterminé par l'extension de fichier ou en utilisant l'option -f . Les options actuelles sont les suivantes: text , html , tabs , json , junit , markdown , csv , codeclimate et sonar .
Plusieurs fichiers de sortie peuvent être spécifiés:
brakeman -o output.html -o output.json
Pour sortir à la fois sur un fichier et sur la console, avec couleur:
brakeman --color -o /dev/stdout -o output.json
Pour supprimer les avertissements d'information et simplement sortir le rapport:
brakeman -q
Remarque Toute la sortie de Brakeman, sauf que les rapports sont envoyés à STDERR, ce qui facilite la redirection de STDOUT vers un fichier et d'obtenir simplement le rapport.
Pour voir toutes sortes d'informations de débogage:
brakeman -d
Des vérifications spécifiques peuvent être ignorées, si vous le souhaitez. Le nom doit être le bon cas. Par exemple, pour sauter à la recherche de routes par défaut ( DefaultRoutes ):
brakeman -x DefaultRoutes
Les vérifications multiples doivent être séparées par une virgule:
brakeman -x DefaultRoutes,Redirect
Pour faire le contraire et exécuter uniquement un certain ensemble de tests:
brakeman -t SQL,ValidationRegex
Si Brakeman fonctionne un peu lentement, essayez
brakeman --faster
Cela désactivera certaines fonctionnalités, mais sera probablement beaucoup plus rapide (actuellement c'est la même chose que --skip-libs --no-branching ). AVERTISSEMENT : Cela peut faire manquer des vulnérabilités.
Par défaut, Brakeman renvoie un code de sortie non nul si des avertissements de sécurité sont trouvés ou si des erreurs de numérisation sont rencontrées. Pour désactiver ceci:
brakeman --no-exit-on-warn --no-exit-on-error
Pour sauter certains fichiers ou répertoires que Brakeman peut avoir du mal à analyser, utilisez:
brakeman --skip-files file1,/path1/,path2/
Pour comparer les résultats d'une analyse avec une analyse précédente, utilisez l'option de sortie JSON puis:
brakeman --compare old_report.json
Cela sortira JSON avec deux listes: l'une des avertissements fixes et l'un des nouveaux avertissements.
Brakeman ignorera les avertissements s'ils sont configurés pour le faire. Par défaut, il recherche un fichier de configuration dans config/brakeman.ignore . Pour créer et gérer ce fichier, utilisez:
brakeman -I
Si vous souhaitez voir temporairement les avertissements que vous avez ignorés sans affecter le code de sortie, utilisez:
brakeman --show-ignored
Voir Warning_Types pour plus d'informations sur les avertissements rapportés par cet outil.
Le format de sortie HTML fournit un extrait de la source d'application d'origine où un avertissement a été déclenché. En raison du traitement effectué lors de la recherche de vulnérabilités, la source peut ne pas ressembler à l'avertissement signalé et les numéros de ligne signalés peuvent être légèrement désactivés. Cependant, le contexte donne toujours un aperçu du code qui a soulevé l'avertissement.
Brakeman attribue un niveau de confiance à chaque avertissement. Cela fournit une estimation approximative de la certaine mesure de l'outil qu'un avertissement donné est en fait un problème. Naturellement, ces notes ne doivent pas être considérées comme une vérité absolue.
Il y a trois niveaux de confiance:
Pour obtenir uniquement des avertissements au-dessus d'un niveau de confiance donné:
brakeman -w3
Le commutateur -w prend un nombre de 1 à 3, 1 étant faible (tous les avertissements) et 3 étant élevés (seulement des avertissements de confiance les plus élevés).
Les options Brakeman peuvent être stockées et lues à partir des fichiers YAML.
Pour simplifier le processus d'écriture d'un fichier de configuration, l'option -C publiera les options de définition actuellement:
$ brakeman -C --skip-files plugins/
---
:skip_files:
- plugins/Les options transmises sur la ligne de commande ont une priorité sur les fichiers de configuration.
Les emplacements de configuration par défaut sont ./config/brakeman.yml , ~/.brakeman/config.yml , et /etc/brakeman/config.yml
L'option -c peut être utilisée pour spécifier un fichier de configuration à utiliser.
Un plugin est disponible pour Jenkins / Hudson.
Pour des tests encore plus continus, essayez le plugin de garde.
Il y a quelques actions GitHub disponibles.
git clone git://github.com/presidentbeef/brakeman.git
cd brakeman
gem build brakeman.gemspec
gem install brakeman*.gem
..et plus!
Site Web: http://brakemanscanner.org/
Twitter: https://twitter.com/brakeman
Chat: https://gitter.im/presidentbeef/brakeman
Brakeman est gratuit pour une utilisation non commerciale.
Voir la copie pour plus de détails.