Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Brakeman (Ruby)

devsecops

Définition

Brakeman est un scanner d'analyse statique de sécurité (SAST) open source spécialement conçu pour les applications Ruby on Rails. Développé par Justin Collins à partir de 2010, Brakeman analyse le code source Rails sans nécessiter son exécution et génère des rapports détaillant les vulnérabilités potentielles selon les standards OWASP. Sa spécialisation pour Rails lui permet de comprendre les patterns de framework et de détecter des vulnérabilités spécifiques à l'écosystème Rails que les scanners généralistes manqueraient. Brakeman couvre un large spectre de vulnérabilités Rails : les injections SQL (via ActiveRecord find_by_sql et requêtes en chaîne non paramétrées), les Cross-Site Scripting (XSS) via les vues Rails mal encodées, les injections de commandes via Open3 ou system(), les Mass Assignment (assignation de masse via params non filtrés dans les modèles), les vulnérabilités de redirection ouverte, les problèmes CSRF, les Session Fixation, les Insecure Direct Object References, et les problèmes spécifiques aux gems Rails connues pour être vulnérables. L'intégration de Brakeman dans un pipeline CI Rails est simple : brakeman -o /tmp/report.json retourne un code de sortie non-zéro en présence de vulnérabilités. Les options permettent de configurer les seuils de sévérité (--minimum-confidence), d'ignorer des avertissements spécifiques documentés (--ignore-config), et de générer des rapports en JSON, HTML, ou SARIF pour intégration dans les dashboards. Des gems d'intégration existent pour les pipelines GitHub Actions et les configurations Rake. Brakeman est particulièrement sensible au contexte Rails : il comprend les before_action, les concerns, les helpers de vues, et les associations ActiveRecord, permettant une analyse de flux de données inter-fichiers qui détecte des vulnérabilités que les scanners non-Rails-aware ne trouvent pas. Le taux de faux positifs de Brakeman est relativement faible pour un SAST grâce à cette connaissance profonde du framework.

Vulnérabilités Rails détectées par Brakeman

Brakeman détecte : SQL Injection (find_by_sql non paramétrés, where("name = #{params[:name]}"), String Interpolation dans les requêtes ActiveRecord), XSS (raw(), html_safe, interpolation dans les vues ERB/HAML), Mass Assignment (sans strong parameters ou avec permit!), Command Injection (system(), exec(), backtick interpolation), Redirection ouverte (redirect_to params[:url]), et Cross-Site Request Forgery (skip_before_action :verify_authenticity_token sans justification).

Intégration CI/CD et configuration

En CI, brakeman -q --no-progress -o /tmp/report.json -f json effectue le scan et retourne 0 (succès) ou 3 (vulnérabilités trouvées). Le Security Gate bloque si brakeman exit code != 0 pour les sévérités High/Critical. Le fichier .brakeman.ignore (généré par brakeman -I) permet de documenter les faux positifs acceptés avec justification. Des actions GitHub Marketplace (thesp0nge/brakeman-minuet) simplifient l'intégration dans les workflows CI.

Tuning et gestion des faux positifs

Brakeman génère des avertissements classifiés par confiance (High/Medium/Weak). Les warnings de faible confiance (Weak) sont souvent des faux positifs contextuels : une interpolation dans un log non rendu en HTML n'est pas une XSS. Le processus de tuning consiste à examiner chaque warning initial, documenter les faux positifs dans .brakeman.ignore avec une justification claire, et configurer le CI pour n'échouer que sur les warnings High Confidence. Une revue mensuelle des warnings ignorés maintient la pertinence des suppressions.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis