Documentation

Manuel d'utilisation de l'application

Manuel d'utilisation

Bienvenue dans le guide de l'application. Cette page rassemble tout ce qu'il faut savoir pour prendre en main l'outil : organiser vos clients, déclarer des cibles et des sources, lancer des campagnes et des analyses, composer des scénarios et planifier des exécutions automatiques.

Organisation par client

Tout est cloisonné par client (l'entité pour laquelle vous travaillez). Un client isole ses cibles, ses sources, ses campagnes et ses résultats : rien ne fuite d'un client à l'autre.

  • Le client actif est repris dans l'URL via ?client=<id> et sélectionné depuis le sélecteur en haut de la barre latérale.
  • Créez ou modifiez vos clients depuis la page Clients (section Gestion).
  • Tant qu'aucun client n'est sélectionné, les pages d'action vous invitent à en choisir un.

Cibles

Une cible est une adresse à tester (une URL). Déclarez-les depuis la page Cibles. Aucune restriction n'est appliquée sur les adresses saisies : l'autorisation relève de l'opérateur, pas du logiciel.

Les cibles alimentent les campagnes d'attaque et de charge.

Sources

Une source est un dépôt de code à analyser. Un client peut en déclarer plusieurs. Les sources alimentent les analyses statiques (SAST, dépendances, secrets).

Campagnes

La page Campagnes pilote les tests dynamiques contre vos cibles, en deux familles de moteurs :

  • Attaques : reconnaissance, audit web, authentification et autorisation, logique métier.
  • Charge : montée en connexions concurrentes.

La page s'organise en onglets :

  • Historique (ouvert par défaut) : la liste des campagnes passées et en cours.
  • Scénarios : presets et constructeur (voir plus bas).
  • Planification : exécutions récurrentes (voir le chapitre Planification).

Analyses

La page Analyses est le miroir statique des Campagnes : elle s'applique aux sources plutôt qu'aux cibles, avec les moteurs SAST, dépendances et secrets. Mêmes onglets : Historique, Scénarios, Planification.

Scénarios

Un scénario est une combinaison de moteurs enregistrée pour être rejouée.

  • Presets : des combinaisons prêtes à l'emploi. « Lancer » exécute immédiatement sur la sélection ; « Charger » remplit le constructeur pour ajuster avant de lancer.
  • Constructeur : glissez-déposez les moteurs voulus dans votre scénario, nommez-le, ajoutez d'éventuels paramètres JSON, puis « Enregistrer » ou « Lancer maintenant ».
  • Les scénarios enregistrés se relancent d'un clic et peuvent être supprimés.

Planification automatique (CRON)

Les exécutions planifiées se déclenchent grâce au cron système de la machine qui héberge l'application. Rien n'écoute sur le réseau : le cron exécute en local un module de l'application, qui matérialise les planifications dues et les met en file.

Pour activer la planification, ajoutez cette ligne à la crontab de l'utilisateur concerné (elle tourne chaque minute) :

* * * * * cd /app && python -m app.tick >/dev/null 2>&1

Mise en place :

  1. Ouvrez la crontab de l'utilisateur : crontab -e.
  2. Collez la ligne ci-dessus, enregistrez, quittez.
  3. Vérifiez qu'elle est bien présente : crontab -l.

Tant que cette ligne n'est pas installée, aucune planification ne se déclenche. Une planification en pause ne part pas non plus, même quand le cron tourne : mettez en pause, reprenez ou supprimez vos planifications depuis l'onglet Planification des pages Campagnes et Analyses.

Adaptez l'interpréteur python si vous utilisez un environnement virtuel dédié.

Résultats

Chaque campagne ou analyse produit des findings classés par sévérité. Ouvrez une entrée depuis l'Historique pour consulter le détail des jobs, les journaux et les vulnérabilités remontées, cloisonnés au client actif.

L'onglet Résultats agrège tous les findings du client, toutes campagnes confondues, dans une grille filtrable :

  • Filtres par sévérité et par moteur, recherche plein texte, onglets d'état (Tous / Ouverts / Corrigés / Faux positifs) avec compteurs.
  • Regroupement des findings identiques (badge ×N) pour éviter les doublons.
  • Sélection multiple + actions groupées (marquer trié, faux positif, rouvrir).
  • Clic sur une ligne : panneau de détail avec description, requête/réponse HTTP brutes, commande curl de rejeu, preuve visuelle (capture d'écran) et remédiation générée par l'IA.

Preuve visuelle et remédiation sont produites automatiquement au moment du scan : chaque finding avec une URL joignable reçoit une capture headless, et chaque finding sans remédiation reçoit une remédiation IA (si l'IA est configurée). Le bouton « Re-tester » rejoue le moteur : si la faille n'est plus détectée, le statut passe à Corrigé — ce statut ne s'obtient que par un re-test vérifié, jamais à la main.

Sur la page d'une campagne, un graphe de chemin d'attaque reconstitue la progression du point d'entrée jusqu'à l'impact à partir des résultats.

Assistant IA

La page IA configure le fournisseur de modèle utilisé pour les remédiations et les synthèses de campagne. Trois connecteurs :

  • AWS Bedrock (clé bearer + région),
  • Anthropic (API native, clé x-api-key),
  • OpenAI-compatible (OpenAI, Azure, OpenRouter, vLLM local… : URL de base + clé).

La clé est chiffrée au repos en base. Le bouton « Tester la connexion » essaie les valeurs du formulaire sans les enregistrer (on peut donc essayer un fournisseur sans écraser la config active). Laisser le champ Température vide n'envoie pas le paramètre — nécessaire pour les modèles récents qui le refusent.

La consommation de tokens IA est cumulée par campagne et affichée sur la carte d'interprétation.

Serveurs (supervision SSH)

L'onglet Serveurs supervise l'infrastructure d'un client par SSH, en lecture seule (CPU, mémoire, disque, charge, processus).

Principe : aucun secret client stocké. On enregistre un accès, on ouvre le Document d'accès (il contient notre clé publique à autoriser sur le serveur), le client autorise la clé et renvoie uniquement l'IP et l'utilisateur. Le bouton Collecter se connecte alors en SSH et remonte les métriques dans un panneau. Chaque accès est éditable et supprimable.

Rapports

L'onglet Rapports exporte un PDF (français, avec graphiques et synthèse IA) :

  • par campagne (lien « PDF individuel »),
  • ou multi-campagnes : sélectionnez plusieurs campagnes, donnez un titre, et générez un rapport combiné.

Configuration & déploiement

En local, la pile démarre sans configuration (valeurs par défaut). Pour un déploiement (VPS), copiez .env.example en .env et renseignez :

  • l'infrastructure (SECURITY_LAB_PORT, clé ZAP, redis, timeouts) ;
  • SECURITY_LAB_SECRET_KEY (clé de chiffrement de la clé d'API en base — à fixer explicitement pour rester déchiffrable après recréation des conteneurs) ;
  • optionnellement les connecteurs IA (SECURITY_LAB_AI_*) qui initialisent la base au premier démarrage si elle est vide ; ensuite la page IA reste maîtresse.

Le logiciel tourne à l'identique en local et sur VPS (même image, même docker compose). Pensez à persister le volume security-lab-data (base, captures, rapports).