StartupKit
FR

Triage IA tenant compte du code

Exécutez votre propre agent de sécurité IA sur chaque rapport VDP entrant et sur votre propre base de code, dans votre CI, avec votre modèle et un accès réseau restreint. Examinez le résultat consultatif dans Kit avant de l'appliquer.

Pourquoi c’est important

La présélection IA répond rapidement à une première question : ce rapport mérite-t-il l’attention d’une personne ? Le triage IA tenant compte du code traite la suivante : puisqu’il la mérite, effectuons le travail préparatoire. Il reproduit le bug, évalue son exploitabilité, repère le code touché et suggère un CVSS ainsi qu’une correction.

L’essentiel pour un responsable AppSec : l’agent vous appartient, pas à Kit. Il s’exécute dans votre CI GitLab, sur votre base de code et avec votre modèle. DeepSeek est proposé par défaut, mais tout point de terminaison compatible avec Anthropic convient : vLLM local, Ollama, OpenRouter ou Anthropic. Kit ne récupère pas votre dépôt et n’exécute pas ce modèle. Il reçoit le résultat de l’analyse, qui peut contenir des extraits de code et un correctif proposé. Nous fournissons la réception, la détection des doublons, les paiements, le suivi des SLA, l’historique d’audit, les échanges avec les chercheurs et un contrat stable pour votre agent.

Les règles réseau appliquées hors de l’agent visent à bloquer les connexions déclenchées par des instructions malveillantes contenues dans un rapport. Elles n’autorisent que le point de terminaison du modèle et l’hôte MCP de Kit ; ces deux destinations reçoivent tout de même des données. Consultez Fonctionnement de l’isolation réseau pour comprendre le modèle de sécurité.

Important

Le triage reste strictement consultatif. L’évaluation renvoyée est affichée comme une entrée non fiable. La réception de ce résultat ne modifie ni le statut, ni la criticité, ni la prime du rapport. Examinez les suggestions avant de les appliquer.

Fonctionnement de la boucle

Lorsqu’un chercheur envoie un rapport, Kit déclenche un pipeline dans votre copie du dépôt d’exemple. Votre runner CI effectue le reste, puis publie le résultat dans le rapport.

Étape Lieu Déroulement
1. Rapport soumis Kit Un chercheur envoie un rapport VDP. Kit crée une exécution de triage pending.
2. Pipeline déclenché Kit → GitLab Kit appelle l’API de déclenchement du pipeline GitLab sur votre copie du dépôt. L’identifiant du rapport, votre URL MCP limitée et un jeton de courte durée sont transmis comme variables CI.
3. Agent exécuté Votre CI GitLab Un runner extrait le code, lit le rapport avec le jeton MCP limité, analyse la base de code et produit un résultat de triage, sans accès réseau, hormis le point de terminaison du modèle et l’hôte MCP de Kit.
4. Résultat renvoyé Votre agent → Kit L’agent valide la sortie par rapport au schéma, puis la publie avec le même jeton limité. Le volet de triage du rapport s’actualise en direct.

L’aller-retour prend généralement de 2 à 5 minutes ; la durée dépend notamment du démarrage du runner et du traitement par le modèle. La page du rapport affiche l’état en direct pendant le travail de la CI.

Résultat produit par l’agent

Le résultat est une évaluation structurée qui prépare le travail d’un ingénieur. Kit l’affiche dans un volet Code-Aware Triage (Triage tenant compte du code), sous la carte de présélection IA dans l’onglet Details :

  • Reproduction : oui, non ou partielle, avec le raisonnement de l’agent.
  • Exploitabilité : appréciation en langage clair de la facilité d’exploitation.
  • Criticité et vecteur CVSS suggérés : placés à côté de l’auto-évaluation du chercheur pour rendre l’écart visible (« Chercheur : Critique · Votre agent : Élevée »).
  • Emplacements touchés : path:line → function(), avec des liens profonds vers le blob correspondant dans le dépôt GitLab.
  • Détection des doublons : rapprochée du contrôle de Kit fondé sur les embeddings ; si les deux concordent, une seule bannière résume le résultat.
  • Correction suggérée : une description et, si l’agent le peut, un diff balisé dans une section repliée avec copie dans le presse-papiers. Jamais appliqué automatiquement.

Le bouton [Use agent's CVSS →] préremplit le formulaire d’évaluation, mais une personne doit encore l’envoyer.

Danger

Votre agent produit l’évaluation à partir d’un rapport soumis par un attaquant ; les éléments de preuve joints sont fournis par votre pipeline. Considérez ces deux sources comme non fiables et vérifiez-les. Les fichiers et les correctifs suggérés sont des pistes, pas des faits établis. Kit affiche l’évaluation et les preuves sous forme de texte, sans interpréter le balisage HTML.

Le dépôt d’exemple

Nous publions un dépôt d’exemple minimal conçu pour être copié :

gitlab.com/startupkit/vdp-ai-triage-example

Il comprend :

  • un fichier .gitlab-ci.yml qui reçoit les variables, exécute l’agent sans accès réseau et renvoie le triage ;
  • un mode simulé / --dry-run pour valider le pipeline sur un rapport de test avant de fournir une clé de modèle ou de connecter Kit ;
  • un rapport de test comportant un canari d’injection qui tente d’appeler un hôte externe avec curl, afin de prouver que la frontière sortante le bloque.

États affichés

État Signification
Pending / Running L’exécution attend de démarrer ou est en cours. Le volet affiche un squelette et l’état en direct.
Completed Le résultat de triage est arrivé et s’affiche.
Failed Le pipeline a échoué ou la sortie n’est pas valide. Le volet indique une erreur exploitable avec des liens vers le pipeline et un nouveau déclenchement.
Timed out L’agent n’a pas répondu avant le délai, fixé à 15 minutes par défaut. Le même traitement d’erreur s’applique.

Un échec ou un dépassement n’empêche jamais de traiter le rapport. Le triage étant consultatif, le rapport reste dans la file exactement comme en l’absence d’agent.

Checklist

Pour aller plus loin

Tapez pour rechercher...