Automatiser en CI/CD (optionnel · Team+)
Chaque déploiement est scanné automatiquement. Un score trop bas peut bloquer le merge.
Herozion est un scanner de sécurité statique autonome. Il analyse votre code source localement, sans dépendances, et produit un score de sécurité de 0 à 100 basé sur 26 catégories OWASP et de performance.
Deux parcours selon votre objectif, choisissez d'abord votre plateforme, puis le chemin qui vous correspond. Les commandes s'adaptent automatiquement (avec ou sans npx).
macOS / Linux, tapez herozion directement, sans préfixe.
Windows / Node.js, préfixez chaque commande avec npx : npx herozion …
Score immédiat, aucun compte requis.
herozion scan
Historique et tendances sur app.herozion.io, exécutez les commandes dans l'ordre.
Première fois uniquement, inscription par email, sans mot de passe.
herozion register
Code à usage unique par email, jamais affiché dans le terminal.
herozion login
Score et vulnérabilités, tout reste local jusqu'au push.
herozion scan
Historique, tendances et alertes sur app.herozion.io.
herozion push
Code source jamais envoyé. Push ne transmet que le rapport JSON.
Nouveau compte ? 14 jours premium offerts à l'inscription.
Déjà inscrit ? Vérifiez votre trial sur app.herozion.io.
Chaque déploiement est scanné automatiquement. Un score trop bas peut bloquer le merge.
Choisissez votre plateforme, puis tapez les commandes dans l'ordre, une par une.
Ces commandes concernent uniquement les parcours Windows ou Node.js. Sur macOS, utilisez l'onglet macOS avec Homebrew.
| Méthode | Commande | Portée | Recommandé pour |
|---|---|---|---|
| npx (sans install) | npx herozion scan |
Cache npm, pas de package.json |
Essai rapide, usage ponctuel |
| Install globale npm | npm install -g herozion |
Toute la machine (PATH) |
Windows, Node.js, usage npm |
npx herozion fonctionne même après npm uninstall, npx utilise le registry npm, pas une install locale.npx herozion@latest --versionnpm install -g herozion@latest --foreground-scripts — --foreground-scripts est important (le postinstall télécharge le binaire natif).Sur macOS, utilisez Homebrew. Après installation, le scan se lance avec herozion scan.
Homebrew détecte automatiquement votre architecture (Intel ou Apple Silicon) et gère les mises à jour.
Un tap Homebrew est un dépôt de formules tiers. Cette commande indique à Homebrew où chercher la formule Herozion.
brew tap Herozion/herozion
Télécharge et installe le binaire correspondant à votre chip (ARM64 pour M1/M2/M3/M4, AMD64 pour Intel).
brew install herozion
Affiche la version installée. Si la commande est introuvable, ouvrez un nouveau terminal.
herozion --version
Placez-vous dans le dossier de votre projet et lancez le scan.
cd ~/mon-projet
herozion scan
xattr -d com.apple.quarantine $(which herozion)
Cette commande supprime l'attribut de quarantaine mis par macOS sur les binaires téléchargés depuis Internet.
Toujours lancer brew update avant brew upgrade. Sans cela, Homebrew ne détecte pas les nouvelles versions disponibles.
brew update && brew upgrade herozion
Téléchargez le binaire correspondant à votre architecture directement depuis GitHub Releases.
# Apple Silicon (M1/M2/M3/M4)
curl -fSL -o herozion https://github.com/Herozion/scanner-releases/releases/latest/download/herozion-macos-arm64
# Intel
curl -fSL -o herozion https://github.com/Herozion/scanner-releases/releases/latest/download/herozion-macos-amd64
chmod +x herozion
sudo mv herozion /usr/local/bin/
chmod +x rend le fichier exécutable. sudo mv ... /usr/local/bin/ le place dans le PATH système pour pouvoir l'appeler depuis n'importe quel dossier.
Sur Linux, utilisez le binaire direct. Après installation, le scan se lance avec herozion scan.
Sans Node.js, téléchargez le binaire depuis GitHub Releases.
Récupère la dernière version Linux x64 depuis GitHub Releases et la sauvegarde sous le nom herozion.
curl -fSL -o herozion https://github.com/Herozion/scanner-releases/releases/latest/download/herozion-linux-amd64
Sans ce chmod, le système refuse de lancer le fichier, par défaut les téléchargements ne sont pas exécutables.
chmod +x herozion
Place le binaire dans /usr/local/bin/ pour pouvoir taper herozion depuis n'importe quel dossier.
sudo mv herozion /usr/local/bin/
Affiche la version installée. Si la commande est introuvable, ouvrez un nouveau terminal.
herozion --version
Placez-vous dans le dossier de votre projet et lancez le scan.
cd ~/mon-projet
herozion scan
Retéléchargez la dernière release et remplacez /usr/local/bin/herozion.
CHECKSUMS.sha256 à côté des binaires sur GitHub Releases. Téléchargez-le dans le même dossier que le binaire, puis vérifiez :
sha256sum -c CHECKSUMS.sha256
Deux options, choisissez une seule :
Nécessite Node.js installé. Aucune modification du PATH, aucun droit admin.
Clic-droit sur le dossier de votre projet → Ouvrir dans Terminal (ou lancez PowerShell puis cd).
cd C:\chemin\vers\votre\projet
npx télécharge et exécute Herozion à la volée, pas d'installation globale. Le . désigne le dossier courant.
npx herozion scan
Pour une installation permanente via npm :
npm install -g herozion
Puis, depuis n'importe quel dossier projet : herozion scan
Pour mettre à jour Herozion vers la dernière version :
npm install -g herozion@latest --foreground-scripts
Si la mise à jour ne fonctionne pas : npm uninstall -g herozion puis npm install -g herozion.
Solution universelle, fonctionne sur macOS, Linux et Windows. Nécessite uniquement Node.js.
Ouvrez un terminal dans le dossier que vous voulez analyser. Sous Windows, utilisez cd C:\mon-projet.
cd ~/mon-projet
npx télécharge Herozion à la volée et l'exécute, pas d'installation permanente. Le . désigne le dossier courant.
npx herozion scan
herozion --version
npx herozion@latest --version
herozion est disponible dans tout terminal.
npm install -g herozion
herozion scan
Mettre à jour : npm install -g herozion@latest --foreground-scripts
Si la mise à jour ne fonctionne pas : npm uninstall -g herozion puis npm install -g herozion.
| Contexte | Commande |
|---|---|
| npx (dernière version) | npx herozion scan ou npx herozion@latest --version |
| Global npm | npm install -g herozion@latest --foreground-scripts |
| macOS Homebrew | brew update && brew upgrade herozion |
| Binaire curl (Linux / macOS) | Retélécharger depuis GitHub Releases et remplacer /usr/local/bin/herozion |
| Contexte | Commande |
|---|---|
| Projet | npm uninstall herozion |
| Global npm | npm uninstall -g herozion |
| npx | Pas de désinstall, ne plus lancer npx herozion ; optionnel : npm cache clean --force |
| Homebrew | brew uninstall herozion |
npm uninstall (sans -g) ne retire pas la possibilité d'utiliser npx herozion.
EEXIST sur macOS / LinuxUn binaire existe déjà dans /usr/local/bin/herozion (Homebrew, curl ou ancienne install npm). Retirez-le avant une install npm install -g herozion.
# 1. Identifier la source
ls -la /usr/local/bin/herozion
which -a herozion
# 2a. Si installé via Homebrew
brew uninstall herozion
# 2b. Sinon, retirer le fichier bloquant
sudo rm -f /usr/local/bin/herozion
rm -rf "$(npm root -g)/herozion"
# 3. Réinstaller
npm install -g herozion@latest --foreground-scripts
# 4. Vérifier
which herozion
herozion --version
npm list -g herozion
Ne pas mélanger Homebrew et npm global pour le même binaire.
brew link n'a pas pu créer /usr/local/bin/herozionCela arrive quand une ancienne installation npm globale a déjà créé ce lien. Homebrew a installé Herozion, mais votre terminal lance encore le wrapper npm cassé.
# 1. Supprimer l'ancienne installation npm globale
npm uninstall -g herozion
# 2. Si le lien existe encore, le retirer
rm -f /usr/local/bin/herozion
# Si permission refusée : sudo rm -f /usr/local/bin/herozion
# 3. Relier la version Homebrew déjà installée
brew link herozion
# 4. Vérifier
which herozion
herozion --version
Les avertissements Homebrew sur des taps non approuvés (mongodb/brew, stripe/stripe-cli, etc.) sont indépendants de Herozion.
npm list -g herozion indique la bonne version mais herozion --version affiche une version plus ancienne — le binaire postinstall n'a pas été mis à jour.
npm uninstall -g herozion
npm install -g herozion
herozion --version
Pour une mise à jour classique, utilisez --foreground-scripts (le postinstall télécharge le binaire natif ; sans ce flag, npm peut mettre à jour le wrapper sans retélécharger le binaire) :
npm install -g herozion@latest --foreground-scripts
Pourquoi npm install -g herozion échoue avec EEXIST ?
Un ancien binaire existe déjà dans /usr/local/bin/herozion (Homebrew ou install précédente). Supprimez-le puis npm install -g herozion.
Pourquoi npx herozion marche après npm uninstall ?
npx télécharge ou réutilise le paquet depuis npm, il ne dépend pas d'une installation locale ou globale.
Quelle méthode recommandez-vous ?
npm install -g herozion puis herozion scan pour l'usage npm. npx herozion scan pour un essai sans install.
Référence détaillée sur la synchronisation cloud. Pour le parcours pas à pas, voir les parcours rapides.
herozion push ?
Connecté via herozion login, avec au moins un scan local (herozion scan ). Session en cache dans ~/.herozion/auth.json. La session est valide plusieurs jours et se renouvelle automatiquement à chaque utilisation.
En CI/CD, utilisez HEROZION_API_KEY plutôt que herozion login pour éviter toute expiration de session.
Section technique, si vous avez installé Herozion, vous avez probablement déjà scanné. Voici ce qui se passe en interne et à quoi ressemble la sortie. Ensuite : synchronisez avec herozion push.
Herozion va :
.gitignore)~/.herozion/0, 1 ou 2)Herozion respecte le .gitignore de votre projet lors de la découverte des fichiers. Les fichiers gitignorés (ex. credentials.json, firebase-service-account.json) ne sont pas analysés.
Pour exclure des fichiers supplémentaires, créez un fichier .herozionignore à la racine du projet (même syntaxe que .gitignore).
Sur le plan gratuit, le terminal et le JSON n'affichent que les 5 vulnérabilités les plus critiques. Le scan complet s'exécute quand même, seule l'affichage est limitée.
Champs JSON indicatifs :
{
"partial_results": true,
"shown_vulnerabilities": 5,
"total_vulnerabilities": 10,
"vulnerability_count": 5
}
Pourquoi je ne vois que 5 findings alors que le scan en a détecté plus ?
Les 5 emplacements sont gelés au premier scan. Corrigez-les ou passez au plan Dev ou Team pour débloquer l'analyse complète. herozion push nécessite un compte Herozion — gratuit à créer. Tout nouveau compte bénéficie de 14 jours d'essai Team incluant le push cloud. herozion export et herozion fix nécessitent un plan Dev, Team ou Enterprise.
$ herozion scan
📁 Scanning: /mon-projet
✅ Scanned 128 files in 1.3s
┌─────────────────────────────────┐
│ Security Score: 72/100 (C) │
└─────────────────────────────────┘
CRITICAL SQL injection detected db/queries.py:42
HIGH Hardcoded password detected config/settings.py:8
MEDIUM Debug mode enabled in prod app.py:3
Référence complète de toutes les commandes. Si vous débutez, commencez par les parcours rapides.
herozion scan <chemin>
Principale
Lance l'analyse de sécurité sur le répertoire spécifié. C'est la commande que vous utiliserez au quotidien.
| Exemple | Rôle |
|---|---|
herozion scan | Analyse le dossier courant. |
herozion scan /path/to/project | Analyse un dossier spécifique. |
herozion scan -o json | Analyse et produit une sortie JSON (utile en CI/CD). |
herozion scan -e vendor -e dist | Analyse en excluant les dossiers vendor et dist. |
herozion scan --verbose | Affiche chaque fichier analysé au fur et à mesure, utile pour vérifier ce qui est lu. |
herozion history
Affiche l'historique de vos précédents scans (date, chemin, score, catégories). Les rapports sont stockés localement dans ~/.herozion/.
herozion history
herozion help
Affiche la liste complète des commandes et options disponibles, directement dans le terminal.
herozion help
herozion export [scan-id]
Nouveau
Exporte les données d'un scan au format JSON, CSV, HTML ou PDF. Sans argument, exporte le dernier scan effectué. Le résultat est affiché sur la sortie standard (JSON/CSV) ou écrit dans un fichier via -o (HTML/PDF).
| Exemple | Rôle |
|---|---|
herozion export | Exporte le dernier scan en JSON vers la sortie standard. |
herozion export --format csv | Exporte le dernier scan en CSV vers la sortie standard. |
herozion export --format html -o rep.html | Génère un rapport HTML et l'écrit dans rep.html. |
herozion export --format pdf -o rep.pdf | Génère un rapport PDF. Nécessite une dépendance optionnelle : sur macOS/Linux, pip install herozion[pdf] ; sur Windows, installez Python depuis python.org si pip n'est pas disponible. Les autres formats (JSON, CSV, HTML) ne nécessitent aucune dépendance supplémentaire. |
herozion export abc123def --format json -o out.json | Exporte le scan identifié par abc123def en JSON dans out.json. |
herozion fix <n>
herozion fix-all
Nouveau
Applique un correctif sûr directement dans votre code pour certaines catégories de vulnérabilités. Affiche toujours un diff unifié et demande confirmation avant d'écrire. Disponible sur les plans Dev, Team et Enterprise.
| Exemple | Rôle |
|---|---|
herozion fix 3 | Corrige la vulnérabilité #3 (index affiché après un scan). Diff puis confirmation avant écriture. |
herozion fix-all | Corrige en une fois toutes les vulnérabilités auto-fixables. Affiche un diff par correctif, puis une seule confirmation. |
herozion fix 3 --yes | Applique le correctif sans prompt, utile pour les scripts. |
herozion fix-all --yes | Applique tous les correctifs sans prompt, usage CI/CD. |
Les vulnérabilités nécessitant un changement de logique (SQL injection, BOLA, etc.) sont signalées mais ne peuvent pas être corrigées automatiquement, une recommandation détaillée est affichée à la place.
herozion info
Affiche les informations sur l'outil installé et vos paramètres actuels : version, plan, langue, chemins de stockage, état de l'authentification.
| Exemple | Rôle |
|---|---|
herozion info | Affiche version, plan actif, langue, répertoire des rapports et statut d'authentification. |
herozion register
herozion login
herozion push
Étape clé
Synchronise vos rapports avec le dashboard sur app.herozion.io, historique, tendances, alertes et accès équipe. Ordre : login → scan → push. L'authentification utilise un code à usage unique envoyé par email. Session en cache dans ~/.herozion/auth.json — valide plusieurs jours, renouvelée automatiquement à chaque utilisation. En CI/CD, préférez HEROZION_API_KEY à herozion login.
| Exemple | Rôle |
|---|---|
herozion register | Crée un compte Herozion. |
herozion login | Connexion par code à usage unique reçu par email. |
herozion push | Envoie tous les rapports locaux non synchronisés au dashboard. |
herozion push --project-id your-project-id | Attache les rapports à un projet spécifique du dashboard. |
herozion scan && herozion push | Scan suivi immédiatement d'un push, utile en CI/CD. |
herozion notify-pr
Nouveau
Poste un résumé du scan en commentaire sur une pull request GitHub (grade, score, top vulnérabilités). Le --github-token transite par les serveurs Herozion uniquement pour poster le commentaire sur GitHub. Il n'est jamais persisté — ni en base de données, ni dans les logs. Le transit est chiffré (HTTPS/TLS). Pour un contrôle maximal, utilisez GITHUB_TOKEN plutôt que --github-token. Permission requise : pull-requests: write. Récupérez le <scan_id> via herozion history ou herozion scan -o json.
| Exemple | Rôle |
|---|---|
herozion notify-pr <scan_id> --repo owner/repo --pr 42 --github-token ghp_... | Poste un commentaire de résumé sur la PR #42 avec le token passé en flag. |
GITHUB_TOKEN=ghp_... herozion notify-pr <scan_id> --repo owner/repo --pr 42 | Même comportement, avec le token fourni via la variable d'environnement, recommandé pour CI/CD. |
herozion auth sessions
herozion auth revoke [id]
Nouveau
Liste toutes les sessions actives du compte. Affiche un tableau avec l'ID de session, la source (CLI / Dashboard), l'IP masquée (192.168.x.x), le user-agent et la date de création. La session courante est signalée par ► et son ID affiché en vert.
Révoque une session active. Sans argument, révoque la session courante, équivalent d'un logout : appelle POST /auth/logout et supprime ~/.herozion/auth.json localement. Avec un <id>, révoque une session distante spécifique sans affecter la session locale.
| Exemple | Rôle |
|---|---|
herozion auth sessions | Affiche toutes les sessions actives, la session courante est signalée par ►. |
herozion auth revoke | Révoque la session courante et supprime le cache local ~/.herozion/auth.json. |
herozion auth revoke <id> | Révoque une session spécifique (autre appareil) identifiée par son ID. La session locale n'est pas affectée. |
Récupérez l'ID de session via herozion auth sessions avant d'appeler herozion auth revoke <id>.
| Option | Valeur | Description |
|---|---|---|
-o, --output |
terminal | json |
Format de sortie. terminal (défaut) : rapport lisible. json : objet JSON machine-readable, idéal pour CI/CD. |
-e, --exclude |
<dossier> |
Exclut un dossier de l'analyse. Répétable : -e vendor -e dist -e .git. |
--verbose |
— | Affiche en temps réel chaque fichier analysé. Permet de vérifier exactement ce qu'Herozion lit, rien de plus que le dossier indiqué. |
--encrypt-output |
<clé> |
Chiffre le rapport JSON avec votre propre clé. Utile en CI/CD lorsque le rapport reste sur un disque partagé. |
--lang |
fr | en | es | pt |
Langue de l'interface. Peut aussi être défini via la variable d'environnement HEROZION_LANG. |
--fail-on |
critical | high | medium | low |
Bloque le pipeline si au moins une vulnérabilité de la sévérité indiquée est trouvée. Cumulable avec --min-score. |
--min-score |
<0–100> |
Définit le seuil de score minimum (défaut : 60). Le pipeline échoue si le score est strictement inférieur. Remplace la valeur par défaut. |
--version |
— | Affiche la version installée. |
Herozion retourne un code de sortie exploitable dans vos scripts CI/CD. Le blocage est déclenché par l'une ou l'autre condition, les deux messages sont affichés si les deux échouent :
| Code | Signification | Usage CI/CD |
|---|---|---|
0 |
Score ≥ seuil et aucune sévérité bloquante trouvée. | Le pipeline continue. |
1 |
Score inférieur au seuil (--min-score, défaut 60) et/ou sévérité bloquante détectée (--fail-on). |
Le pipeline est bloqué, message ❌ affiché pour chaque condition. |
2 |
Rate limit atteint (tier gratuit). | Réessayez plus tard. |
| Flag | Description | Exemple |
|---|---|---|
--min-score <n> |
Échec si score < n. Défaut : 60. | --min-score 80 |
--fail-on <sévérité> |
Échec si au moins une vuln de cette sévérité est trouvée. | --fail-on critical |
-o json)Utilisez la sortie JSON pour intégrer le rapport dans vos outils d'analyse ou dashboards :
herozion scan -o json > rapport.json
Le fichier JSON contient : score, note (A–F), liste des vulnérabilités par catégorie, nombre de fichiers scannés, durée. Une clé "policy" est incluse avec fail_on et min_score pour permettre aux scripts CI de lire la politique active.
{
"score": 74,
"grade": "B",
"policy": {
"min_score": 80,
"fail_on": "critical"
},
...
}
Les flags CLI --fail-on et --min-score sont disponibles sur tous les plans, y compris gratuit.
À chaque push ou Pull Request, Herozion scanne votre code automatiquement et peut bloquer le merge si la politique de sécurité n'est pas respectée.
Pipelines supportés : GitHub Actions, GitLab CI, Bitbucket Pipelines.
Une fois votre plan activé, voici les 4 étapes pour connecter votre dépôt GitHub en moins de 5 minutes.
Connectez-vous sur app.herozion.io/cicd, connectez votre dépôt GitHub et suivez l'assistant. Le dashboard génère automatiquement deux valeurs dont vous aurez besoin : votre HEROZION_API_KEY et votre HEROZION_PROJECT_ID. Copiez-les.
Dans votre dépôt GitHub, allez dans Settings → Secrets and variables → Actions, puis cliquez sur New repository secret. Ajoutez les deux secrets suivants :
| Secret | Où trouver la valeur |
|---|---|
HEROZION_API_KEY |
Généré automatiquement dans le dashboard, onglet CI/CD |
HEROZION_PROJECT_ID |
Dashboard → Organisation → bas de page |
Retournez dans le dashboard CI/CD et copiez le fichier YAML généré automatiquement. Il référence déjà vos deux secrets et est prêt à l'emploi.
Dans votre projet, créez le fichier .github/workflows/herozion.yml, collez le YAML et poussez. Le scan se déclenche automatiquement à chaque push et Pull Request.
.github/workflows/herozion.yml
Herozion fonctionne sans aucune configuration. Ces variables d'environnement sont optionnelles :
| Variable | Défaut | Description |
|---|---|---|
HEROZION_LANG |
auto-détecté | Langue de l'interface : fr, en, es, pt. Équivalent à --lang. |
HEROZION_REPORT_DIR |
~/.herozion |
Répertoire local où les rapports JSON sont sauvegardés. |
HEROZION_PARALLEL_WORKERS |
auto | Nombre de workers parallèles pour le scan. Par défaut : nombre de cœurs CPU disponibles. |
HEROZION_API_KEY |
non définie | Clé API pour l'intégration CI/CD sans session interactive. Générée depuis le dashboard. Team+. Non requise pour herozion push en usage local. |
HEROZION_INCREMENTAL_FILE_CACHE |
true |
Cache d'analyse par fichier, accélère les rescans. |
HEROZION_CACHE_MAX_MB |
2048 |
Taille max du cache SQLite (MiB). |
HEROZION_SCAN_TESTS |
non définie | Si 1, inclut les fichiers de test dans l'analyse (debug). |
HEROZION_API_URL |
https://api.herozion.io |
Endpoint API (commande push uniquement). |