Aller au contenu

Strix, des agents de test d'intrusion autonomes en bac à sable

Strix, des agents de test d’intrusion autonomes en bac à sable

Section intitulée « Strix, des agents de test d’intrusion autonomes en bac à sable »

Strix est un harnais d’agent spécialisé : la boucle, les outils et la mémoire posés autour d’un modèle de langage, mais avec un seul métier, l’attaque d’applications. Là où un harnais généraliste reçoit un terminal et de bonnes intentions, celui-ci reçoit un conteneur Kali complet, un proxy d’interception, un navigateur automatisé, et l’instruction de ne pas revenir avant d’avoir une preuve d’exploitation. Le résultat n’est pas une liste de vulnérabilités potentielles : c’est une liste de choses qui ont fonctionné, ce qui change la conversation avec l’équipe qui corrige.

→ Lire l’explication complète de la marmotte

À quoi sert Strix, et ce qu’on appelle un harnais d’agent

Section intitulée « À quoi sert Strix, et ce qu’on appelle un harnais d’agent »

Un harnais d’agent est ce qu’on installe autour d’un modèle de langage pour qu’il agisse : une boucle qui exécute ce que le modèle propose et lui renvoie le résultat, un catalogue d’outils, une gestion du contexte, et de quoi se souvenir. Le modèle décide, le harnais exécute et porte les conséquences.

Strix applique cette mécanique au test d’intrusion applicatif. On lui donne une cible (un répertoire de code, un dépôt, une URL, une spécification d’API) et il fait tourner une équipe d’agents qui cartographient, essaient, exploitent et rédigent. Son argument commercial tient dans la validation : plutôt que de signaler qu’un paramètre « pourrait » être vulnérable, il écrit une preuve de concept qui s’exécute, la joue, et joint le résultat au rapport. C’est la différence entre un scanner statique, qui produit du soupçon en quantité industrielle, et un testeur, qui produit du constat.

Par rapport aux deux autres harnais de cette rubrique : l’un est un agent généraliste branché sur un poste de travail, l’autre un moteur de recherche d’états qui ne connaît ni rôles ni outils et à qui le pentest sert de terrain de validation. Strix est le plus spécialisé des trois, et de loin le plus outillé : son image de bac à sable embarque les programmes qu’un testeur humain installerait lui-même.

Éditeur, licence et versions de Strix, et l’homonyme à éviter

Section intitulée « Éditeur, licence et versions de Strix, et l’homonyme à éviter »

Le projet est publié par la société Strix, sur le dépôt usestrix/strix, créé le 5 août 2025. Le code est écrit en Python et placé sous licence Apache 2.0 : le fichier LICENSE est bien le texte de la licence Apache version 2.0, et le fichier pyproject.toml déclare license = "Apache-2.0". Il n’existe pas de licence commerciale séparée du code. L’éditeur vend deux services à côté : Strix Cloud, la plateforme hébergée (scans sans Docker ni clé de modèle, correctifs proposés en demande de fusion, intégrations), et Strix Enterprise, qui ajoute l’authentification unique, des rapports taillés pour les référentiels de conformité, un déploiement en nuage privé ou auto-hébergé, et l’usage de ses propres clés de modèle.

La version la plus récente lue pendant la rédaction de cette fiche est la v1.7.0, publiée le 5 octobre 2026 sur GitHub, avec le même numéro dans pyproject.toml et sur le paquet PyPI strix-agent. Un détail du pyproject.toml mérite d’être cité tel quel, puisque l’éditeur l’écrit lui-même : le classificateur de maturité est Development Status :: 3 - Alpha. Un outil en alpha qui exploite des failles sur des systèmes réels est un outil en alpha.

Un piège de nommage, enfin. Le paquet PyPI (Python Package Index) de ce projet s’appelle strix-agent. Il existe sur le même index un paquet open-strix, qui n’a aucun rapport : un harnais d’agent minimaliste publié par un auteur indépendant.

Les prérequis annoncés sont courts : Docker en fonctionnement, et une clé d’API (Application Programming Interface, interface de programmation) chez un fournisseur de modèles. Le pyproject.toml réclame Python 3.12 au minimum et déclare la prise en charge jusqu’à 3.14. La première exécution télécharge l’image Docker du bac à sable, ce qui n’est pas instantané, et les résultats sont écrits dans strix_runs/<nom-du-run>.

Fenêtre de terminal
# Installation du binaire autonome (ou pipx / uv / pip pour le paquet strix-agent)
curl -sSL https://strix.ai/install | bash
# Fournisseur et clé de modèle, lus par la CLI et conservés dans ~/.strix/cli-config.json
export STRIX_LLM="openrouter/<éditeur>/<modèle>"
export LLM_API_KEY="<votre-clé>"
# Premier scan, sur un répertoire de code local
strix --target ./mon-application

La configuration est mémorisée dans ~/.strix/cli-config.json, ce qui épargne de répéter les variables et mérite les mêmes précautions qu’un fichier de secrets. La variable LLM_API_BASE pointe un modèle servi localement. L’outil sait aussi s’authentifier sur un abonnement grand public plutôt que sur une clé facturée à l’usage, et dispose d’une visionneuse locale, strix view, qui sert un tableau de bord des résultats et des exécutions passées.

Architecture de Strix : graphe d’agents, outils, bac à sable

Section intitulée « Architecture de Strix : graphe d’agents, outils, bac à sable »

Trois pièces, et la troisième est celle qui compte pour la sécurité.

Le graphe d’agents. Un agent racine reçoit la cible et ne teste rien lui-même : son prompt système lui interdit explicitement de lancer un scanner ou d’envoyer une charge, et lui ordonne de déléguer à des sous-agents spécialisés, créés à la demande. Ces agents partagent leurs découvertes, s’échangent des messages, tiennent un bloc-notes commun et un modèle de menace du périmètre qu’ils corrigent au fur et à mesure. Les mécanismes de coordination et leurs failles propres sont traités dans la page sur la sécurité de l’orchestration multi-agents.

Les outils et les compétences. Le harnais fournit un proxy d’interception HTTP (HyperText Transfer Protocol), un navigateur automatisé, un terminal, un bac à sable Python pour écrire des preuves de concept, et une base de constats structurés avec notation CVSS (Common Vulnerability Scoring System) et classification OWASP (Open Worldwide Application Security Project). Il y ajoute soixante-quinze fiches de compétences en Markdown, rangées par famille de vulnérabilité, par technologie et par outil, que l’agent charge au besoin. C’est la partie la plus instructive du dépôt pour un lecteur humain : chaque fiche est une méthode de test écrite noir sur blanc.

Le bac à sable. Le conteneur est construit sur kalilinux/kali-rolling, c’est-à-dire la même base que la distribution décrite dans la fiche Kali Linux. Il tourne sous un compte pentester doté de sudo sans mot de passe, et embarque un outillage dense : nmap et ses compagnons, sqlmap, nuclei et ses modèles, subfinder, naabu, ffuf, httpx, katana, dirsearch, wafw00f, jwt_tool, trufflehog, gitleaks, trivy, semgrep, ast-grep, Chromium, et une autorité de certification de test générée à la construction pour permettre l’interception du trafic chiffré.

Deux détails de la création du conteneur, lus dans le code du client Docker du projet, sont à connaître avant de lancer quoi que ce soit. Les capacités Linux NET_ADMIN et NET_RAW sont ajoutées au conteneur, parce qu’elles sont nécessaires au scan de ports par paquets forgés : le bac à sable est moins contraint qu’un conteneur ordinaire. Et l’hôte y est déclaré joignable sous le nom host.docker.internal, par la passerelle Docker. Le conteneur voit donc votre machine : il est isolé de votre système de fichiers, pas de votre réseau.

Schéma : sur l'hôte, la CLI strix pilote le démon Docker, qui crée le conteneur Kali (kalilinux/kali-rolling) où tournent le compte pentester avec sudo sans mot de passe et l'outillage complet, proxy d'interception, nmap, sqlmap, nuclei, ffuf, le tout avec les capacités NET_RAW et NET_ADMIN ajoutées, donc moins contraint qu'un conteneur ordinaire. Première sortie, l'accès disque : le système de fichiers de l'hôte est isolé du conteneur, sauf les dossiers montés, que l'agent peut modifier. Seconde sortie, le réseau : aucune barrière, le conteneur atteint host.docker.internal, la passerelle Docker, l'hôte et le réseau local. Isolé du disque, pas du réseau.

Quand on sort Strix, et quand un autre outil ferait mieux

Section intitulée « Quand on sort Strix, et quand un autre outil ferait mieux »

Quatre situations lui vont bien : une revue de sécurité sur une application dont on possède le code, un contrôle en intégration continue limité aux fichiers modifiés par une demande de fusion, la préparation d’un test humain (il défriche la surface et les cas évidents), et l’entraînement sur des cibles prévues pour cela, du genre de celles qu’on trouve dans les compétitions de type CTF.

Trois situations où il ne convient pas. Sur un système de production fragile, parce qu’un agent qui exploite une injection de commande l’exploite réellement. Sur un périmètre mal défini, parce que son prompt de périmètre est conçu pour ne jamais discuter la portée (on y revient). Et comme substitut à un test d’intrusion contractuel : il ne produit ni méthode auditable, ni responsabilité professionnelle, ni l’examen de la logique métier qu’un humain apporte. La page commander, cadrer et exploiter un test d’intrusion décrit ce que l’outil ne remplace pas.

Ce que Strix montre, ce qu’il ne montre pas, et ce qu’il affirme

Section intitulée « Ce que Strix montre, ce qu’il ne montre pas, et ce qu’il affirme »

Il montre des failles exploitées, avec la trace de l’exploitation : requêtes, réponses, script de preuve, capture d’écran du navigateur, correctif proposé au format d’un patch. Pour une équipe de développement, c’est un format nettement plus actionnable qu’un rapport de scanner, et le coût du triage s’en trouve réduit d’autant.

Il ne montre pas ce qu’il n’a pas atteint, et cette dissymétrie est la principale cause de fausse tranquillité. Un parcours authentifié dont il n’a pas les identifiants reste vierge ; une fonction accessible après un paiement reste vierge ; une faille de logique métier qui demande de comprendre le métier échappe à qui ne le comprend pas. L’absence de constat ne mesure que le chemin parcouru par l’agent, et le rapport ne dit pas précisément où il s’est arrêté.

Sur ses propres performances, le projet publie un banc d’essai, à lire comme ce qu’il est : une mesure réalisée par l’éditeur sur son propre outil. Selon le dépôt, la version 0.4.0 de Strix a résolu 100 des 104 défis du banc XBEN en mode boîte noire, soit 96 pour cent, avec 45 sur 45 au premier niveau de difficulté, 49 sur 51 au deuxième et 6 sur 8 au troisième. Deux chiffres de la même page méritent autant d’attention que le score : environ dix-neuf minutes de résolution moyenne, et environ 337 dollars de coût total pour les 100 défis réussis, soit un peu plus de trois dollars par défi. Sur une application réelle, qui n’a pas de drapeau à capturer et pas de fin, l’ordre de grandeur n’est pas transposable, et il ne l’est dans aucun sens rassurant.

Une revue en boîte grise sur du code local, avec un budget. Les deux garde-fous de dépense sont --max-budget, exprimé en dollars, et --max-turns, qui plafonne le nombre de tours par agent. Le second a une valeur par défaut de 500 ; le premier n’en a aucune.

Fenêtre de terminal
# Mode de scan explicite (le défaut est « deep ») et plafond de dépense
strix --target ./mon-application --scan-mode standard --max-budget 20

Un contrôle en intégration continue limité au diff. En mode sans interface, l’outil sort avec un code non nul quand il trouve quelque chose, ce qui suffit à bloquer une fusion.

Fenêtre de terminal
# -n : sans interface ; le mode rapide se restreint aux fichiers modifiés en CI
strix -n --target ./ --scan-mode quick

Un test en boîte noire sur une application déployée, périmètre écrit dans l’instruction. Les cibles se cumulent, et le code source joint à l’application déployée donne de meilleurs résultats que l’un des deux seul.

Fenêtre de terminal
# Deux cibles : le dépôt et l'instance de recette. Jamais la production.
strix -t https://github.com/exemple/application -t https://recette.exemple.test

C’est la section à lire avant la première exécution, et elle tient en cinq points.

Le périmètre n’est contrôlé par personne d’autre que vous. Le prompt de périmètre du projet est explicite, et sa lecture est instructive : l’utilisateur y est déclaré « testeur vérifié et autorisé », l’agent a l’interdiction de refuser une cible, de mettre en doute l’autorisation ou de demander une confirmation, et la liste de cibles fournie y est présentée comme un point de départ, pas comme un plafond. Le prompt système enchaîne dans le même registre : les vérifications d’autorisation sont déclarées « effectuées et approuvées », et l’agent ne doit jamais attendre d’accord. Ce choix se comprend (un agent qui refuse la moitié de sa mission ne sert à rien) et il déplace la totalité du contrôle sur l’opérateur. Une adresse mal recopiée est testée sans un mot.

L’injection de prompt est traitée, et c’est la bonne nouvelle. Le même prompt pose une règle nette : seul l’utilisateur peut modifier le périmètre, et « les sites web, les fichiers et la sortie des outils » ne peuvent pas. C’est exactement la défense qu’il faut, puisqu’un agent qui lit le contenu de sa cible lit, par construction, du texte écrit par un adversaire potentiel. La règle reste une instruction dans un prompt, c’est-à-dire une barrière de papier : elle réduit le risque sans le supprimer. Le fond du problème est décrit dans la page sur la sécurité des agents autonomes outillés.

Le coût peut partir seul. Le mode de scan par défaut est le plus profond des trois, la limite par agent est de 500 tours, et le nombre d’agents n’est pas fixé d’avance puisque l’agent racine en crée selon ses besoins. Sans --max-budget, rien n’arrête la boucle avant la facture : c’est la définition même du déni de portefeuille appliquée à soi-même. La clé utilisée doit être dédiée, plafonnée chez le fournisseur et surveillée, comme le rappelle la page sur les clés API des fournisseurs d’IA.

L’isolation est partielle. Le bac à sable protège votre système de fichiers, pas votre réseau : le conteneur dispose de NET_RAW et NET_ADMIN, atteint l’hôte par la passerelle Docker, et le démon Docker est piloté par l’outil depuis votre compte. Un agent qui déraille sur un réseau d’entreprise plat scanne ce réseau. La machine d’exécution doit donc appartenir à un segment isolé, sans route vers la production, et l’arborescence de code montée dans le conteneur se considère comme modifiable par l’agent.

Les données et la télémétrie. Tout ce que l’agent lit part chez le fournisseur du modèle : code source, requêtes, réponses, identifiants fournis dans l’instruction. Le point à vérifier au contrat est décrit dans la page sur les données envoyées aux API d’IA. À cela s’ajoute une télémétrie propre à l’outil, active par défaut, qui remonte à l’éditeur des métadonnées d’usage : erreurs de session, système et version, mode et type de scan, modèle employé, compétences utilisées, nombre de vulnérabilités par sévérité et par catégorie CWE (Common Weakness Enumeration). Sa documentation affirme ne collecter ni cibles, ni chemins, ni URL, ni domaines, ni détails de failles, ni échanges avec le modèle, et la désactivation tient en une variable, STRIX_TELEMETRY=0. Sur une mission sous accord de confidentialité, on la désactive, non par défiance mais parce qu’une clause de confidentialité ne se négocie pas après coup.

Deux précautions de forme s’ajoutent : la visionneuse locale imprime un lien porteur d’un jeton qui donne accès à l’exécution, lien qui ne se colle donc pas dans un salon de discussion ; et les répertoires de résultats contiennent la cartographie des faiblesses de la cible, documents à protéger et à purger comme les livrables d’un test humain.

D’autres fiches de la même famille sont regroupées dans la rubrique Outils.

Côté défense : ce que Strix apprend, et comment repérer son usage

Section intitulée « Côté défense : ce que Strix apprend, et comment repérer son usage »

Pour une équipe de défense, l’outil a deux intérêts, et le second demande de la franchise.

Le premier est l’étalonnage. Ce que ces agents trouvent sans effort sur une application de recette sera trouvé par n’importe qui : c’est le plancher de la menace, et il se mesure une fois pour toutes. Le catalogue de compétences du dépôt rend d’ailleurs service sans rien lancer, puisqu’il énumère par écrit les méthodes de test que les agents appliquent.

Le second est la détection. Le prompt système du projet instruit explicitement les agents de n’employer aucun nom ni marqueur identifiable dans les requêtes HTTP, les charges, les agents utilisateurs ou les champs de saisie. Il n’y a donc pas de signature « Strix » à chercher dans les journaux. Ce qui se voit est le comportement, et il est voyant : un volume de requêtes très supérieur à celui d’un humain, des familles de charges d’attaque qui se succèdent par vagues, un navigateur sans interface identifiable par ses en-têtes, du trafic sortant vers une infrastructure d’interception pour les charges hors bande, et des outils de reconnaissance dont les empreintes réseau sont connues parce que ce sont celles de nuclei, sqlmap et ffuf. En clair, on ne détecte pas l’agent : on détecte les outils qu’il pilote, exactement comme on détecterait un testeur humain pressé.

La conséquence est organisationnelle. Un test mené par agent produit en une heure le bruit qu’un humain étalait sur une semaine. La fenêtre d’exécution, les adresses sources et les contacts doivent être déclarés à l’équipe de supervision avant le lancement, sans quoi la première exécution se termine en gestion d’incident, et la seconde en réunion.

Cadre légal : l’autorisation écrite, avant la première requête

Section intitulée « Cadre légal : l’autorisation écrite, avant la première requête »

Le dépôt lui-même ouvre par un avertissement : usage autorisé uniquement, systèmes dont on est propriétaire ou pour lesquels on détient une permission explicite et écrite, dans le périmètre convenu. La phrase n’est pas décorative.

En France, les articles 323-1 et suivants du code pénal répriment l’accès ou le maintien frauduleux dans un système de traitement automatisé de données (323-1), l’entrave ou le faussement de son fonctionnement (323-2), l’introduction, la modification ou la suppression frauduleuse de données (323-3), la mise à disposition sans motif légitime d’outils conçus pour commettre ces infractions (323-3-1), et punissent la tentative comme l’infraction (323-7). Les peines figurent dans les textes, à lire sur Légifrance plutôt que dans un résumé. La question des outils à double usage et de la bonne foi du chercheur est traitée dans la page sur les tensions juridiques du signalement de failles.

Trois conséquences propres à l’usage d’un agent. L’agent exploite réellement : une injection validée par preuve de concept est une modification de données au sens du texte, donc une action qui doit figurer dans le périmètre autorisé et non seulement « être tolérée ». L’accord du client ne vaut pas accord de son hébergeur, dont les conditions d’utilisation encadrent les tests. Et la rapidité de l’outil fabrique un risque nouveau : un périmètre élargi d’une ligne dans une instruction en langage naturel produit des requêtes vers un système que personne n’a autorisé, en quelques secondes, et sans que l’opérateur ait eu le temps de relire.

Ignorer cette catégorie d’outils ne la fait pas disparaître du paysage : elle est publique, documentée, et son coût par cible se compte en dollars. Une équipe qui ne l’a jamais vue tourner ignore le nouveau plancher de la menace, et continue de juger « peu probable » un enchaînement de failles qu’un agent assemble en vingt minutes. Elle n’a pas éprouvé sa supervision contre ce profil de trafic, et découvrira le jour venu que ses seuils d’alerte étaient calibrés sur la vitesse d’un humain. L’écart de connaissance joue entièrement en faveur de celui qui essaie : l’attaquant, lui, a déjà installé l’outil.

Un modèle d’intelligence artificielle ne sait produire que du texte. Pour qu’il agisse, on l’entoure d’un programme appelé harnais, qui exécute ce qu’il propose et lui renvoie le résultat, en boucle, jusqu’à ce que la tâche soit finie. Strix est un harnais de ce genre, consacré à une seule activité : chercher les failles d’un site ou d’une application.

Son fonctionnement est celui d’une petite équipe. Un agent principal reçoit la cible, découpe le travail et crée d’autres agents, chacun chargé d’une piste. Ils partagent leurs trouvailles par écrit, et chacun dispose d’une boîte à outils complète de spécialiste de la sécurité : un programme qui cherche les portes ouvertes du réseau, un autre qui essaie des attaques connues, un navigateur automatique, et de quoi écrire ses propres petits programmes d’attaque. Tout cela tourne dans un ordinateur simulé et séparé, un conteneur, pour que les outils dangereux n’abîment pas la machine de celui qui les lance.

Le point qui distingue Strix d’un simple scanner tient à la preuve. Un scanner classique dit « ce paramètre a l’air douteux », et laisse un humain vérifier des centaines de soupçons dont la plupart sont faux. Strix, lui, essaie vraiment : s’il réussit, il garde la trace de ce qu’il a fait et propose une correction. Si tu le croises dans un rapport, retiens la limite : il ne dit jamais ce qu’il n’a pas réussi à tester, et un rapport vide ne prouve pas qu’une application est sûre.

Deux avertissements, pour finir. Ce programme coûte de l’argent à chaque essai, parce qu’il interroge un modèle payant des milliers de fois ; sans plafond, la facture grimpe toute seule, et l’option existe pour le fixer. Et surtout, attaquer un système sans l’accord écrit de son propriétaire est un délit en France, même quand rien n’est cassé. Pour apprendre, on s’exerce sur des cibles mises à disposition pour cela, ou sur ses propres machines. L’outil ne demande jamais si tu as le droit : il a été écrit exprès pour ne pas poser la question.

À lire aussi

Pages voisines