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 14 catégories OWASP et de performance.
Installez Herozion et lancez votre premier scan en moins de 30 secondes.
brew tap Herozion/herozion && brew install herozion
herozion scan .
Installation
macOS — Homebrew (recommandé)
Homebrew est la méthode recommandée sur macOS. Il 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
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.
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.
Linux
Téléchargez le binaire, rendez-le exécutable et déplacez-le dans votre PATH.
curl -fSL -o herozion https://github.com/Herozion/scanner-releases/releases/latest/download/herozion-linux-amd64
chmod +x herozion
sudo mv herozion /usr/local/bin/
herozion --version
| Commande | Rôle |
|---|---|
curl -fSL -o herozion … | Télécharge le binaire Linux x64 depuis GitHub et le sauvegarde sous le nom herozion. -f échoue silencieusement en cas d'erreur HTTP, -S affiche les erreurs, -L suit les redirections. |
chmod +x herozion | Marque le fichier comme exécutable — nécessaire pour pouvoir le lancer. |
sudo mv herozion /usr/local/bin/ | Déplace le binaire dans un répertoire du PATH système. Vous pourrez ensuite taper herozion depuis n'importe quel dossier. |
Sans aucune configuration, lancez directement via npm :
npx herozion scan .
Windows
Deux méthodes disponibles selon votre environnement :
Méthode 1 — npm / npx (recommandé, sans modifier le PATH)
Nécessite Node.js installé. Le binaire est isolé dans node_modules/ — aucun accès système global.
# Exécuter sans installation
npx herozion scan .
# Ou ajouter comme dépendance de développement
npm install herozion --save-dev
npx herozion scan .
| Commande | Rôle |
|---|---|
npx herozion scan . | Télécharge et exécute Herozion à la volée sans l'installer globalement. Le . désigne le dossier courant à analyser. |
npm install herozion --save-dev | Installe Herozion comme dépendance de développement du projet (ajouté dans package.json). Tous les membres de l'équipe auront la même version. |
Mettre à jour :
npm install herozion@latest --save-dev
Méthode 2 — Binaire .exe direct
Téléchargez le fichier .exe et exécutez-le directement dans votre terminal Windows.
Renommez le fichier téléchargé en herozion.exe et exécutez-le depuis votre terminal :
.\herozion.exe --version
.\herozion.exe scan .
Premier scan
Ouvrez un terminal dans le dossier de votre projet et lancez :
herozion scan .
Le . désigne le répertoire courant. Vous pouvez remplacer par n'importe quel chemin, par exemple herozion scan /home/user/mon-projet.
Herozion va :
- Parcourir récursivement tous les fichiers de code du répertoire
- Appliquer les 14 règles d'analyse (OWASP + performance)
- Afficher un rapport dans le terminal avec le score et les vulnérabilités trouvées
- Sauvegarder le rapport JSON dans
~/.herozion/ - Retourner un code de sortie (
0,1ou2)
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
Herozion dispose de trois commandes principales :
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 scan . --push | Envoie le rapport au dashboard (opt-in). Votre code source n'est jamais transmis. |
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
Options & flags
| 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é. |
--push |
— | Opt-in. Envoie le rapport JSON (score, catégories, nombre de fichiers) au dashboard. Votre code source n'est jamais transmis. |
--lang |
fr | en | es | pt |
Langue de l'interface. Peut aussi être défini via la variable d'environnement HEROZION_LANG. |
--version |
— | Affiche la version installée. |
Sorties & codes de retour
Herozion retourne un code de sortie exploitable dans vos scripts CI/CD :
| Code | Signification | Usage CI/CD |
|---|---|---|
0 |
Score ≥ 60 — Projet acceptable. | Le pipeline continue. |
1 |
Score < 60 — Vulnérabilités critiques détectées. | Le pipeline est bloqué. |
2 |
Rate limit atteint (tier gratuit). | Réessayez plus tard. |
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.
Intégration CI/CD
Herozion s'intègre dans n'importe quel pipeline via son code de sortie et sa sortie JSON. Un score inférieur à 60 retourne exit 1 — ce qui bloque automatiquement le déploiement.
GitHub Actions
- name: Télécharger Herozion
run: |
curl -fSL -o herozion https://github.com/Herozion/scanner-releases/releases/latest/download/herozion-linux-amd64
chmod +x herozion
- name: Scanner la sécurité
run: |
./herozion scan . -o json > security-report.json
./herozion scan . # retourne exit 1 si score < 60
- name: Archiver le rapport
if: always()
uses: actions/upload-artifact@v4
with:
name: security-report
path: security-report.json
| Ligne | Rôle |
|---|---|
curl -fSL -o herozion … | Télécharge le binaire Linux dans le runner GitHub Actions. |
chmod +x herozion | Le rend exécutable dans le runner. |
./herozion scan . -o json > security-report.json | Génère le rapport JSON sans bloquer le pipeline (les flags JSON n'affectent pas le code de sortie). |
./herozion scan . | Déclenche le blocage si score < 60. |
if: always() | Archive le rapport même si l'étape précédente a échoué — pour pouvoir le consulter. |
GitLab CI
security_scan:
stage: test
before_script:
- curl -fSL -o herozion https://github.com/Herozion/scanner-releases/releases/latest/download/herozion-linux-amd64
- chmod +x herozion
script:
- ./herozion scan . -o json > security-report.json
- ./herozion scan .
artifacts:
paths:
- security-report.json
when: always
when: always conserve le rapport même si le scan a bloqué le pipeline. stage: test positionne l'analyse avant le déploiement.
Configuration
Herozion fonctionne sans aucune configuration. Ces variables d'environnement sont optionnelles et utiles pour les intégrations CI/CD ou les setups multi-projets :
| Variable | Défaut | Description |
|---|---|---|
HEROZION_API_URL |
non définie | URL de l'API pour les installations self-hosted. |
HEROZION_API_KEY |
non définie | Clé API utilisée avec --push pour envoyer les rapports au dashboard. |
HEROZION_REPORT_DIR |
~/.herozion |
Répertoire local où les rapports JSON sont sauvegardés. |
HEROZION_LANG |
auto-détecté | Langue de l'interface : fr, en, es, pt. Équivalent à --lang. |
HEROZION_PARALLEL_WORKERS |
auto | Nombre de workers parallèles pour le scan. Par défaut : nombre de cœurs CPU disponibles. |
Exemple de fichier .env
# URL de l'API (self-hosted)
HEROZION_API_URL=https://api.example.com
# Clé API pour --push
HEROZION_API_KEY=sk-xxxxxxxxxxxx
# Répertoire des rapports
HEROZION_REPORT_DIR=/tmp/rapports
# Langue par défaut
HEROZION_LANG=en
# Parallélisme
HEROZION_PARALLEL_WORKERS=4
14 catégories d'analyse
Herozion analyse votre code selon 13 catégories OWASP API Top 10+ et 1 catégorie performance. Chaque catégorie contribue au score final.
BOLA
Broken Object Level Authorization — accès direct aux objets sans vérification de l'identité de l'appelant.
Broken Authentication
Mots de passe en dur, tokens statiques, secrets exposés dans le code source.
BFLA
Broken Function Level Authorization — endpoints d'administration accessibles sans contrôle de rôle.
Mass Assignment
Données utilisateur passées directement aux modèles sans filtrage des champs sensibles.
Injection
SQL injection, command injection, XSS, usage dangereux de eval().
Rate Limiting
Endpoints sans limitation de débit — exposition aux attaques par force brute.
Security Misconfiguration
DEBUG=True en production, SECRET_KEY exposée, CORS trop permissif.
Excessive Data Exposure
Sérialisation complète d'objets, champs sensibles retournés dans les réponses API.
MITM
Vérification SSL désactivée, connexions HTTP non chiffrées vers des services tiers.
Replay Attacks
Tokens sans date d'expiration, absence de nonce dans les requêtes signées.
Webhook Abuse
Webhooks reçus sans vérification de signature — usurpation possible.
DDoS / Flood
Absence de timeouts, lecture complète de flux en mémoire sans limite de taille.
Insecure File Upload
Absence de validation du type MIME, chemins de fichiers non sécurisés.
Performance
Requêtes N+1, list() sur queryset complet, import *, anti-patterns connus.
Confidentialité
Herozion est conçu pour ne jamais quitter votre machine sans votre consentement explicite.
Ce qu'Herozion fait
- ✅ Lit uniquement le répertoire que vous lui indiquez
- ✅ Sauvegarde les rapports dans
~/.herozion/localement - ✅ Incrémente un compteur de scans local
Ce qu'Herozion ne fait jamais
- ❌ N'envoie jamais votre code source
- ❌ Ne modifie jamais vos fichiers
- ❌ Aucun service en arrière-plan, aucun démon
- ❌ Aucune connexion réseau sans
--push
--push (opt-in uniquement)Si vous l'activez, Herozion envoie uniquement le rapport JSON (score, catégories, nombre de fichiers) à votre dashboard. Votre code source n'est jamais inclus dans cet envoi. Pour vérifier exactement quels fichiers sont lus, utilisez
--verbose.