v1.1.88 · Documentation

Documentation Herozion

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.

Par où commencer

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).

1. Choisissez votre plateforme

macOS / Linux — tapez herozion directement, sans préfixe.

Windows / Node.js — préfixez chaque commande avec npx : npx herozion …

2. Choisissez votre parcours

Sans compte

Scanner maintenant — score immédiat, aucun compte requis.

herozion scan

Automatiser en CI/CD (optionnel · Team+)

Chaque déploiement est scanné automatiquement. Un score trop bas peut bloquer le merge.

Installation

Choisissez votre plateforme — puis tapez les commandes dans l'ordre, une par une.

Choisir une méthode npm

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.
  • Version via npx : npx herozion@latest --version
  • Pour verrouiller la version en équipe : préférez --save-dev, pas l'install globale.

Deux options — choisissez une seule :

Option A — Homebrew recommandé

Homebrew détecte automatiquement votre architecture (Intel ou Apple Silicon) et gère les mises à jour.

1
Ajouter le tap Herozion

Un tap Homebrew est un dépôt de formules tiers. Cette commande indique à Homebrew où chercher la formule Herozion.

brew tap Herozion/herozion
2
Installer Herozion

Télécharge et installe le binaire correspondant à votre chip (ARM64 pour M1/M2/M3/M4, AMD64 pour Intel).

brew install herozion
3
Vérifier l'installation

Affiche la version installée. Si la commande est introuvable, ouvrez un nouveau terminal.

herozion --version
4
Lancer votre premier scan

Placez-vous dans le dossier de votre projet et lancez le scan.

cd ~/mon-projet
herozion scan
macOS peut bloquer le binaire
Si macOS affiche "impossible de vérifier l'identité du développeur", exécutez cette commande une fois :
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.

Option B — npm / npx

Nécessite Node.js. Idéal si vous ne souhaitez pas Homebrew.

1
Ouvrir Terminal dans votre projet

Terminal.app — bash ou zsh. Placez-vous dans le dossier à analyser.

cd ~/mon-projet
2
Lancer Herozion via npx

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

Mettre à jour

Toujours lancer brew update avant brew upgrade. Sans cela, Homebrew ne détecte pas les nouvelles versions disponibles.

brew update && brew upgrade herozion

Installation manuelle (sans Homebrew)

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 :

Option A — npm / npx recommandé

Nécessite Node.js. Aucune modification du PATH système, aucun sudo.

1
Ouvrir un terminal dans votre projet

bash ou zsh — placez-vous dans le dossier à analyser.

cd ~/mon-projet
2
Lancer Herozion via npx

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

Option B — Binaire direct (curl)

Sans Node.js — téléchargez le binaire depuis GitHub Releases.

1
Télécharger le binaire

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
2
Le rendre exécutable

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
3
Déplacer dans le PATH

Place le binaire dans /usr/local/bin/ pour pouvoir taper herozion depuis n'importe quel dossier.

sudo mv herozion /usr/local/bin/
4
Vérifier l'installation

Affiche la version installée. Si la commande est introuvable, ouvrez un nouveau terminal.

herozion --version
5
Lancer votre premier scan

Placez-vous dans le dossier de votre projet et lancez le scan.

cd ~/mon-projet
herozion scan

Mettre à jour

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.

Vérifier l'intégrité du binaire (optionnel)
Chaque release publie un fichier 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 :

Option A — npm / npx recommandé

Nécessite Node.js installé. Aucune modification du PATH, aucun droit admin.

1
Ouvrir PowerShell dans votre projet

Clic-droit sur le dossier de votre projet → Ouvrir dans Terminal (ou lancez PowerShell puis cd).

cd C:\chemin\vers\votre\projet
2
Lancer Herozion via npx

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

Mettre à jour

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.

1
Se placer dans votre projet

Ouvrez un terminal dans le dossier que vous voulez analyser. Sous Windows, utilisez cd C:\mon-projet.

cd ~/mon-projet
2
Lancer le scan via npx

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 .
Connaître votre version installée
Version installée localement dans votre projet (node_modules/) :
npx herozion --version
Pour connaître la dernière version publiée sur npm (indépendamment de ce qui est installé localement) :
npx herozion@latest --version
Verrouiller la version pour l'équipe
Ajoutez Herozion comme dépendance de dev dans 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

Mettre à jour — toutes méthodes

ContexteCommande
Projet (devDependency)npm install herozion@latest --save-dev
npx (dernière version)npx herozion@latest scan . ou npx herozion@latest --version
Global npmnpm install -g herozion@latest
macOS Homebrewbrew update && brew upgrade herozion
Binaire curl (Linux / macOS)Retélécharger depuis GitHub Releases et remplacer /usr/local/bin/herozion

Désinstallation

ContexteCommande
Projetnpm uninstall herozion
Global npmnpm uninstall -g herozion
npxPas de désinstall — ne plus lancer npx herozion ; optionnel : npm cache clean --force
Homebrewbrew uninstall herozion

npm uninstall (sans -g) ne retire pas la possibilité d'utiliser npx herozion.

Dépannage installation

Erreur EEXIST sur macOS / Linux

Un 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.

Version affichée obsolète après update global

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

FAQ installation

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.

Push & dashboard

← Retour aux parcours rapides

Référence détaillée sur la synchronisation cloud. Pour le parcours pas à pas, voir les parcours rapides.

Pourquoi herozion push ?
Sans push, chaque scan reste un instantané local. Avec push, vous suivez l'évolution de votre score, repérez les vulnérabilités récurrentes après chaque déploiement, et accédez à vos rapports sur app.herozion.io.

Ce que push envoie (et ce qu'il n'envoie pas)

  • Envoyé — score, grade, catégories, nombre de fichiers, métadonnées du rapport
  • Jamais envoyé — votre code source. Le scan reste 100 % local ; push ne transmet que le rapport JSON.

Ce que vous débloquez

  • Historique et tendances de score sur le dashboard
  • Comparaison entre scans — voir ce qui s'améliore ou se dégrade
  • Alertes email et exports PDF (selon votre plan)
  • Accès équipe et projets partagés

Prérequis

Connecté via herozion login, avec au moins un scan local (herozion scan). Session en cache 24 h dans ~/.herozion/auth.json.

← Retour aux parcours rapides

Détails du scan — référence

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 :

  1. Parcourir récursivement les fichiers de code du répertoire (en respectant .gitignore)
  2. Appliquer les 26 catégories d'analyse (OWASP + performance)
  3. Afficher un rapport dans le terminal avec le score et les vulnérabilités trouvées
  4. Sauvegarder le rapport JSON dans ~/.herozion/
  5. Retourner un code de sortie (0, 1 ou 2)

Découverte des fichiers

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).

Plan gratuit — résultats partiels (top 5)

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).

Exemple de sortie

$ 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

Commandes

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.

ExempleRôle
herozion scanAnalyse le dossier courant.
herozion scan /path/to/projectAnalyse un dossier spécifique.
herozion scan -o jsonAnalyse et produit une sortie JSON (utile en CI/CD).
herozion scan -e vendor -e distAnalyse en excluant les dossiers vendor et dist.
herozion scan --verboseAffiche 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).

ExempleRôle
herozion exportExporte le dernier scan en JSON vers la sortie standard.
herozion export --format csvExporte le dernier scan en CSV vers la sortie standard.
herozion export --format html -o rep.htmlGénère un rapport HTML et l'écrit dans rep.html.
herozion export --format pdf -o rep.pdfGénère un rapport PDF. Nécessite la dépendance optionnelle fpdf2 (pip install herozion[pdf]).
herozion export abc123def --format json -o out.jsonExporte 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.

ExempleRôle
herozion fix 3Corrige la vulnérabilité #3 (index affiché après un scan). Diff puis confirmation avant écriture.
herozion fix-allCorrige en une fois toutes les vulnérabilités auto-fixables. Affiche un diff par correctif, puis une seule confirmation.
herozion fix 3 --yesApplique le correctif sans prompt — utile pour les scripts.
herozion fix-all --yesApplique 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.

ExempleRôle
herozion infoAffiche version, plan actif, langue, répertoire des rapports et statut d'authentification.
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.

ExempleRô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 42Mê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.

ExempleRôle
herozion auth sessionsAffiche toutes les sessions actives — la session courante est signalée par ►.
herozion auth revokeRé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>.

Options & flags

OptionValeurDescription
-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.

Sorties & codes de retour

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 :

CodeSignificationUsage 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.

Flags de politique d'échec

FlagDescriptionExemple
--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

Sortie JSON (-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"
  },
  ...
}

Intégration CI/CD

Plan Team & Enterprise
L'intégration CI/CD est disponible à partir du plan Team. Le YAML de configuration est généré automatiquement dans votre dashboard, avec vos secrets pré-remplis.

À 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.

  • Scan automatique sur chaque push et Pull Request
  • Quality gate configurable — score minimum et sévérités bloquantes
  • Commentaire automatique sur les Pull Requests (GitHub Actions)
  • YAML généré sur mesure depuis votre dashboard, secrets pré-remplis

Pipelines supportés : GitHub Actions, GitLab CI, Bitbucket Pipelines.

Comment configurer (GitHub Actions)

Une fois votre plan activé, voici les 4 étapes pour connecter votre dépôt GitHub en moins de 5 minutes.

1
Ouvrir le dashboard CI/CD

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.

2
Ajouter les secrets dans GitHub

Dans votre dépôt GitHub, allez dans Settings → Secrets and variables → Actions, puis cliquez sur New repository secret. Ajoutez les deux secrets suivants :

SecretOù trouver la valeur
HEROZION_API_KEY Généré automatiquement dans le dashboard — onglet CI/CD
HEROZION_PROJECT_ID Dashboard → Organisation → bas de page
3
Copier le YAML depuis le dashboard

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.

4
Créer le fichier workflow dans votre dépôt

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

Configuration

Herozion fonctionne sans aucune configuration. Ces variables d'environnement sont optionnelles :

VariableDéfautDescription
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).