v1.0.42 · 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 14 catégories OWASP et de performance.

Démarrage rapide
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.

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
⚠️
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.

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
CommandeRô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 herozionMarque 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.
📦
Préférez Node.js ?
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 .
CommandeRô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-devInstalle 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.

⬇ Télécharger herozion.exe (v1.0.42)

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 :

  1. Parcourir récursivement tous les fichiers de code du répertoire
  2. Appliquer les 14 règles 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)

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.

ExempleRôle
herozion scan .Analyse 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 scan . --pushEnvoie 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

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é.
--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 :

CodeSignificationUsage 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
LigneRôle
curl -fSL -o herozion …Télécharge le binaire Linux dans le runner GitHub Actions.
chmod +x herozionLe rend exécutable dans le runner.
./herozion scan . -o json > security-report.jsonGé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 :

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

01

BOLA

Broken Object Level Authorization — accès direct aux objets sans vérification de l'identité de l'appelant.

02

Broken Authentication

Mots de passe en dur, tokens statiques, secrets exposés dans le code source.

03

BFLA

Broken Function Level Authorization — endpoints d'administration accessibles sans contrôle de rôle.

04

Mass Assignment

Données utilisateur passées directement aux modèles sans filtrage des champs sensibles.

05

Injection

SQL injection, command injection, XSS, usage dangereux de eval().

06

Rate Limiting

Endpoints sans limitation de débit — exposition aux attaques par force brute.

07

Security Misconfiguration

DEBUG=True en production, SECRET_KEY exposée, CORS trop permissif.

08

Excessive Data Exposure

Sérialisation complète d'objets, champs sensibles retournés dans les réponses API.

09

MITM

Vérification SSL désactivée, connexions HTTP non chiffrées vers des services tiers.

10

Replay Attacks

Tokens sans date d'expiration, absence de nonce dans les requêtes signées.

11

Webhook Abuse

Webhooks reçus sans vérification de signature — usurpation possible.

12

DDoS / Flood

Absence de timeouts, lecture complète de flux en mémoire sans limite de taille.

13

Insecure File Upload

Absence de validation du type MIME, chemins de fichiers non sécurisés.

14

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
🔒
L'option --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.