
Votre application manipule des adresses e-mail, des mots de passe, des numéros de carte bancaire. Mais savez-vous exactement où ces données transitent dans votre code ? Un console.log(user) oublié, une requête SQL construite par concaténation, un cookie sans flag HttpOnly — autant de failles que les scanners classiques ne détectent pas toujours.
Bearer est un scanner SAST (Static Application Security Testing) qui va plus loin que la détection de vulnérabilités : il trace les flux de données sensibles dans votre code. En une commande, il identifie les failles OWASP Top 10, les violations CWE Top 25 et les risques de fuite de données personnelles au regard du RGPD.
Ce guide est fait pour toi si…
Section intitulée « Ce guide est fait pour toi si… »Qu’est-ce que Bearer ?
Section intitulée « Qu’est-ce que Bearer ? »Le SAST (Static Application Security Testing) analyse votre code source sans l’exécuter pour y détecter des vulnérabilités. Là où un linter vérifie le style et les erreurs de syntaxe, un scanner SAST cherche des failles de sécurité : injections SQL, XSS, secrets en dur, configurations dangereuses.
Bearer se distingue des autres scanners SAST par une capacité unique : le suivi des flux de données (data flow analysis). Il ne se contente pas de repérer un logger.info(data) — il remonte la chaîne pour déterminer si data contient un e-mail, un mot de passe ou un numéro de sécurité sociale. Cette analyse permet de détecter des problèmes que les scanners basés uniquement sur des patterns ne voient pas.
Ce que Bearer détecte
Section intitulée « Ce que Bearer détecte »- Vulnérabilités OWASP Top 10 : injections (A03), authentification cassée (A07), XSS (A03), exposition de données (A02)
- CWE Top 25 : les 25 faiblesses logicielles les plus dangereuses selon le MITRE
- Fuites de données sensibles : PII (données personnellement identifiables), PHI (données de santé), PD (données personnelles) — plus de 120 types de données reconnus
- Secrets en dur : via le scanner dédié
--scanner secrets - Mauvaises configurations : cookies sans flags de sécurité, communications non chiffrées, journalisation excessive
Langages supportés
Section intitulée « Langages supportés »| Langage | Frameworks courants détectés |
|---|---|
| JavaScript | Express, React, Next.js |
| TypeScript | NestJS, Angular |
| Ruby | Rails, Sinatra |
| Python | Django, Flask, FastAPI |
| Java | Spring, Jakarta |
| Go | Gin, Echo, net/http |
| PHP | Laravel, Symfony |
Prérequis
Section intitulée « Prérequis »Avant de commencer, vérifiez que vous disposez de :
- Un terminal sous Linux ou macOS (Windows via WSL)
- Git installé (pour cloner des projets à scanner)
- curl ou Homebrew (pour l’installation)
- Connaître les bases du SAST est un plus, mais pas indispensable
Installation
Section intitulée « Installation »Bearer est distribué sous forme d’un binaire unique — pas de dépendance Java, Python ou Node.js à installer.
curl -sfL https://raw.githubusercontent.com/Bearer/bearer/main/contrib/install.sh | shLe binaire est installé dans /usr/local/bin/bearer. Vérifiez l’installation :
bearer versionbrew install bearer/tap/bearersudo apt-get install -y apt-transport-httpsecho "deb [trusted=yes] https://apt.fury.io/bearer/ /" | \ sudo tee /etc/apt/sources.list.d/fury.listsudo apt-get updatesudo apt-get install bearerdocker run --rm -v "$PWD:/tmp/scan" bearer/bearer:latest scan /tmp/scanPratique pour tester sans rien installer, mais plus lent à cause du montage de volume.
Vérification :
bearer version# v2.0.1Si ça ne marche pas : vérifiez que /usr/local/bin est dans votre $PATH. Si vous utilisez Docker, vérifiez que le volume est correctement monté.
Premier scan : scanner un projet vulnérable
Section intitulée « Premier scan : scanner un projet vulnérable »Pour découvrir Bearer, le meilleur moyen est de scanner un projet volontairement vulnérable. Juice Shop d’OWASP est parfait pour ça.
-
Cloner le projet de test
Fenêtre de terminal git clone https://github.com/juice-shop/juice-shop.gitcd juice-shop -
Lancer le scan de sécurité
Fenêtre de terminal bearer scan .Le scan prend quelques minutes selon la taille du projet. Bearer affiche une barre de progression, puis le rapport.
-
Analyser le rapport
Le rapport liste les vulnérabilités trouvées, classées par sévérité :
CRITICAL: Sensitive data stored in HTML local storage detected.https://docs.bearer.com/reference/rules/javascript_lang_local_storageFile: frontend/src/app/login/login.component.ts:52HIGH: SQL injection vulnerability detected. [CWE-89]https://docs.bearer.com/reference/rules/javascript_lang_sql_injectionFile: routes/login.ts:30Chaque finding contient :
- La sévérité (CRITICAL, HIGH, MEDIUM, LOW, WARNING)
- Une description du problème
- Un lien vers la documentation de la règle
- Le fichier et la ligne concernés
- Un fingerprint unique pour ignorer le finding si nécessaire
Comprendre les niveaux de sévérité
Section intitulée « Comprendre les niveaux de sévérité »| Sévérité | Signification | Exemple |
|---|---|---|
| CRITICAL | Exploitation directe possible, impact majeur | Stockage de données sensibles en local storage |
| HIGH | Faille exploitable, correctif prioritaire | Injection SQL, XSS |
| MEDIUM | Risque réel mais exploitation conditionnelle | Cookie sans flag Secure |
| LOW | Bonne pratique non respectée | Journalisation insuffisante |
| WARNING | Information, pas de risque immédiat | Usage d’algorithme faible (MD5) |
Configurer le scan
Section intitulée « Configurer le scan »Fichier de configuration bearer.yml
Section intitulée « Fichier de configuration bearer.yml »Plutôt que de passer des flags à chaque commande, créez un fichier bearer.yml à la racine de votre projet :
bearer initCette commande génère un fichier avec les valeurs par défaut. Voici une configuration typique :
# Niveaux de sévérité inclus dans le rapportseverity: "critical,high,medium"
# Règles à ignorer globalementrule: skip-rule: - javascript_lang_logger
# Dossiers à exclure du scanscan: skip-path: - "node_modules" - "vendor" - "test" - "spec" - "*.test.js"
# Scanner à utiliser (sast, secrets, ou les deux)scanner: - sastFiltrer par sévérité
Section intitulée « Filtrer par sévérité »Pour n’afficher que les vulnérabilités critiques et hautes :
bearer scan . --severity critical,highIgnorer des règles
Section intitulée « Ignorer des règles »Vous pouvez ignorer des règles spécifiques pour tout le projet :
# Ignorer une règlebearer scan . --skip-rule javascript_lang_logger
# N'exécuter que certaines règlesbearer scan . --only-rule javascript_lang_sql_injection,javascript_lang_hardcoded_secretPour ignorer une règle sur un bloc de code précis, utilisez un commentaire :
// bearer:disable javascript_lang_loggerfunction logUser(user) { logger.info(user.name);}Ignorer un finding spécifique
Section intitulée « Ignorer un finding spécifique »Chaque finding a un fingerprint unique. Pour l’ignorer dans les scans futurs :
bearer ignore add 4b0883d52334dfd9a4acce2fcf810121_0 \ --author="Stéphane" \ --comment="Faux positif validé" \ --false-positiveLes fingerprints ignorés sont stockés dans le fichier bearer.ignore. Pour voir les findings ignorés :
bearer ignore show 4b0883d52334dfd9a4acce2fcf810121_0Scanner les secrets
Section intitulée « Scanner les secrets »En plus du SAST, Bearer intègre un scanner de secrets en dur (clés API, tokens, mots de passe) :
bearer scan . --scanner secretsPour combiner les deux scanners :
bearer scan . --scanner sast,secretsRapport privacy : flux de données sensibles
Section intitulée « Rapport privacy : flux de données sensibles »C’est la fonctionnalité qui distingue vraiment Bearer des autres scanners SAST. Le rapport privacy cartographie tous les flux de données personnelles dans votre code : où elles sont collectées, stockées, transmises et journalisées.
bearer scan . --report privacyCe que le rapport privacy détecte
Section intitulée « Ce que le rapport privacy détecte »Bearer reconnaît plus de 120 types de données sensibles, réparties en catégories :
- PII (Personally Identifiable Information) : nom, e-mail, adresse, téléphone, numéro de sécurité sociale
- PHI (Protected Health Information) : données médicales, prescriptions, diagnostics
- PD (Personal Data au sens RGPD) : adresse IP, cookies, identifiants de session, géolocalisation
Pourquoi c’est utile pour le RGPD
Section intitulée « Pourquoi c’est utile pour le RGPD »Si votre application traite des données de citoyens européens, le RGPD exige que vous sachiez exactement quelles données vous collectez et où elles transitent. Le rapport privacy de Bearer produit une cartographie exploitable pour :
- PIA (Privacy Impact Assessment) : évaluation d’impact sur la vie privée
- DPIA (Data Protection Impact Assessment) : imposé par le RGPD pour les traitements à risque
- RoPA (Record of Processing Activities) : registre des activités de traitement
Formats de sortie
Section intitulée « Formats de sortie »Bearer supporte plusieurs formats de sortie, selon votre usage :
| Format | Usage | Commande |
|---|---|---|
| Texte (défaut) | Lecture humaine dans le terminal | bearer scan . |
| JSON | Intégration avec d’autres outils | bearer scan . --format json |
| YAML | Alternative lisible au JSON | bearer scan . --format yaml |
| SARIF | GitHub Code Scanning, VS Code | bearer scan . --format sarif |
| GitLab SAST | GitLab Security Dashboard | bearer scan . --format gitlab-sast |
| HTML | Rapport pour partage / audit | bearer scan . --format html --output rapport.html |
Intégration CI/CD
Section intitulée « Intégration CI/CD »GitHub Actions
Section intitulée « GitHub Actions »Bearer fournit une action officielle prête à l’emploi :
name: Bearer Security Scanon: push: branches: [main] pull_request: types: [opened, synchronize, reopened]
permissions: contents: read
jobs: bearer: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Bearer Scan uses: bearer/bearer-action@v2Scan différentiel sur les Pull Requests
Section intitulée « Scan différentiel sur les Pull Requests »Pour ne remonter que les nouvelles vulnérabilités introduites par une PR (et éviter de noyer l’équipe sous les findings existants) :
name: Bearer PR Checkon: pull_request: types: [opened, synchronize, reopened]
permissions: contents: read
jobs: bearer: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Bearer Diff Scan uses: bearer/bearer-action@v2 with: diff: trueIntégration avec GitHub Code Scanning
Section intitulée « Intégration avec GitHub Code Scanning »Pour afficher les résultats directement dans l’onglet Security du dépôt :
name: Bearer SARIFon: push: branches: [main]
permissions: contents: read security-events: write
jobs: bearer: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Bearer Scan uses: bearer/bearer-action@v2 with: format: sarif output: results.sarif - name: Upload SARIF if: always() uses: github/codeql-action/upload-sarif@v2 with: sarif_file: results.sarifGitLab CI/CD
Section intitulée « GitLab CI/CD »bearer-sast: image: bearer/bearer:latest stage: test script: - bearer scan . --format gitlab-sast --output gl-sast-report.json artifacts: reports: sast: gl-sast-report.json when: alwaysLe rapport au format gitlab-sast s’affiche automatiquement dans le Security Dashboard de GitLab.
Scan différentiel sur merge request
Section intitulée « Scan différentiel sur merge request »bearer-mr-diff: image: bearer/bearer:latest stage: test script: - bearer scan . --diff --format gitlab-sast --output gl-sast-report.json artifacts: reports: sast: gl-sast-report.json when: always rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event"Dépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
command not found: bearer | Binaire pas dans le PATH | Vérifier que /usr/local/bin est dans $PATH ou relancer le shell |
| Scan très lent (>10 min) | Projet volumineux ou node_modules scanné | Ajouter --skip-path node_modules,vendor,.git |
| Pas de finding sur un projet connu vulnérable | Langage non supporté | Vérifier les langages supportés |
failed to scan: context deadline exceeded | Timeout sur un fichier volumineux | Augmenter le timeout ou exclure le fichier avec --skip-path |
| Finding faux positif | Règle trop large pour le contexte | Utiliser bearer ignore add <fingerprint> --false-positive |
| Format SARIF vide | Aucun finding à la sévérité demandée | Vérifier le flag --severity (par défaut : toutes) |
À retenir
Section intitulée « À retenir »- Bearer est un scanner SAST qui analyse le code source sans l’exécuter pour détecter vulnérabilités et fuites de données
- Il couvre OWASP Top 10 et CWE Top 25 sur 7 langages : Go, Java, JavaScript, TypeScript, PHP, Python, Ruby
- Sa force unique : le suivi des flux de données sensibles — il sait si un
logger.info(data)expose un e-mail ou un mot de passe - Le rapport privacy cartographie les données personnelles pour faciliter la conformité RGPD (PIA, DPIA, RoPA)
- En CI/CD, utilisez le scan différentiel (
--diff) pour ne remonter que les nouvelles vulnérabilités sur les PR/MR - Les formats SARIF et gitlab-sast s’intègrent nativement dans les dashboards de sécurité GitHub et GitLab
- Gérez les faux positifs avec
bearer ignore addet documentez chaque exclusion
Pour aller plus loin
Section intitulée « Pour aller plus loin »Tu sais maintenant scanner ton code avec Bearer et interpréter les rapports. Voici comment compléter ta démarche de sécurité applicative :
Sécuriser davantage ton code
Section intitulée « Sécuriser davantage ton code »Ressources
Section intitulée « Ressources »| Ressource | Description |
|---|---|
| Site officiel | Documentation complète |
| GitHub | Code source, issues, releases |
| Règles disponibles | Catalogue complet des règles de détection |
| Types de données | Liste des 120+ types de données sensibles reconnus |
| GitHub Action | Action officielle pour GitHub Actions |