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 …
Scanner maintenant — 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.
Trois façons d'utiliser Herozion via npm — choisissez selon votre contexte :
| Méthode | Commande | Portée | Recommandé pour |
|---|---|---|---|
| npx (sans install) | npx herozion@latest scan . |
Cache npm, pas de package.json |
Essai rapide, usage ponctuel |
| Dépendance de dev | npm install herozion@latest --save-dev |
node_modules/ du projet |
Équipe, CI, version verrouillée |
| Install globale | npm install -g herozion@latest |
Toute la machine (PATH) |
Usage perso avancé — voir dépannage |
npx herozion fonctionne même après npm uninstall — npx utilise le registry npm, pas une install locale.npx herozion@latest --version--save-dev, pas l'install globale.Deux options — choisissez une seule :
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.
Nécessite Node.js. Idéal si vous ne souhaitez pas Homebrew.
Terminal.app — bash ou zsh. Placez-vous dans le dossier à analyser.
cd ~/mon-projet
npx télécharge et exécute Herozion à la volée — pas d'installation globale.
npx herozion@latest scan .
Pour verrouiller la version à l'échelle de l'équipe, ajoutez Herozion comme dépendance de dev :
npm install herozion@latest --save-dev
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.
Deux options — choisissez une seule :
Nécessite Node.js. Aucune modification du PATH système, aucun sudo.
bash ou zsh — placez-vous dans le dossier à analyser.
cd ~/mon-projet
npx télécharge et exécute Herozion à la volée — pas d'installation globale.
npx herozion@latest scan .
Pour verrouiller la version à l'échelle de l'équipe, ajoutez Herozion comme dépendance de dev :
npm install herozion@latest --save-dev
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
Selon votre méthode d'installation :
Si installé avec npm :
npm install -g herozion@latest
Si utilisé sans installation (npx) :
npx herozion@latest scan .
Si vous avez installé le binaire via curl (étapes ci-dessus), 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@latest scan .
Pour verrouiller la version à l'échelle de l'équipe, ajoutez Herozion comme dépendance de dev :
npm install herozion --save-dev
Pour mettre à jour Herozion vers la dernière version, exécutez cette commande dans votre projet :
npm install herozion@latest --save-dev
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@latest scan .
node_modules/) :
npx herozion --version
npx herozion@latest --version
package.json. Toute l'équipe aura la même version.
npm install herozion --save-dev
npx herozion scan
Mettre à jour : npm install herozion@latest --save-dev
| Contexte | Commande |
|---|---|
| Projet (devDependency) | npm install herozion@latest --save-dev |
| npx (dernière version) | npx herozion@latest scan . ou npx herozion@latest --version |
| Global npm | npm install -g herozion@latest |
| 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). L'install --save-dev ne touche pas ce chemin.
# 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
# 4. Vérifier
which herozion
herozion --version
npm list -g herozion
Ne pas mélanger Homebrew et npm global pour le même binaire.
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.
rm -rf "$(npm root -g)/herozion"
npm install -g herozion@latest
herozion --version
Si le binaire ne se télécharge pas, vérifiez npm config get ignore-scripts (doit être false) puis :
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 réinstallez, ou utilisez npm install herozion --save-dev + npx herozion dans votre projet.
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 herozion --save-dev + npx herozion scan . pour les projets et la CI. npx herozion@latest 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 24 h dans ~/.herozion/auth.json.
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 ?
Limitation du plan gratuit. Passez au plan Dev ou Team pour voir toutes les vulnérabilités, ou utilisez herozion export (plan payant).
$ 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 la dépendance optionnelle fpdf2 (pip install herozion[pdf]). |
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. La session est mise en cache 24 h dans ~/.herozion/auth.json.
| 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 est transféré directement à GitHub via le backend Herozion et n'est jamais stocké. 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é. |
--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"
},
...
}
À 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 herozion push et l'intégration CI/CD. Team+ |
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). |