Posez n'importe quelle question à vos données OpenCTI avec notre Chatbot
La Cyber Threat Intelligence est désormais abondante et, comme toute information, elle peut s'avérer écrasante et impossible à traiter réellement. OpenCTI agit comme un point unique de centralisation et d'ingestion automatique des flux CTI, mais une fois stockées, ces données nécessitent des connaissances spécifiques pour être digérées. C'est comme être dans une bibliothèque, capable de lire n'importe quel livre, mais sans comprendre les acronymes et codes de classification pour trouver le genre spécifique que nous recherchons.
Parce que les êtres humains et donc les utilisateurs d'OpenCTI préfèrent utiliser le langage naturel pour travailler, nous avons précédemment développé NLQ, une fonctionnalité permettant à chacun de traduire une requête en langage naturel en un ensemble de filtres sur la plateforme. Maintenant, l'idée est d'aller plus loin et de faciliter l'intégration des données dans une conversation, tout comme vous discuteriez de la dernière cyberattaque avec un collègue.
Sauf qu'ici, le collègue est un véritable logiciel avec une façon très particulière de récupérer les données, l'API GraphQL, maintenant doté d'une voix et d'un nom : ArianeAi, votre assistant IA. Et vous n'avez peut-être ni le temps ni la motivation d'apprendre à parler ce langage ésotérique. Ainsi, la grande ambition se résume à un problème très brièvement énoncé : Est-il possible de traduire n'importe quelle question posée à la plateforme en une requête GraphQL, et de générer une réponse pertinente et conviviale à partir du résultat ?
TL;DR
- Ce que c'est :
- Une capacité conversationnelle au sein du frontend OpenCTI
- Les réponses du Chatbot IA sont basées sur les données de la plateforme
- Ce que ce n'est pas :
- Un compagnon CTI ou Cybersécurité qui répond aux questions générales
- Un autre moyen de mettre à jour ou de créer des données dans OpenCTI
Embarquer dans le train de l'IA agentique
Grâce à la fonctionnalité NLQ, nous savons déjà qu'extraire des informations pertinentes d'une requête en langage naturel est faisable, et que les mapper à une structure donnée (disons les filtres dans une page OpenCTI) peut être réalisé avec une chaîne d'étapes rigoureuse. L'approche en "chaîne d'étapes" peut également être appliquée au problème actuel, mais pourrait représenter un travail long et fastidieux d'explicitation de toutes les différentes combinaisons, en tenant compte à la fois de la grammaire GraphQL et de l'implémentation spécifique d'OpenCTI. Compte tenu des derniers résultats, il nous a semblé naturel de regarder du côté du paradigme agentique, en retournant le problème. Au lieu de décrire des tâches atomiques et de les ordonner dans un workflow rigide, nous avons décidé d'essayer de décrire toutes les différentes capacités nécessaires pour accomplir la tâche et de les fournir à un "agent", qui sélectionnerait et utiliserait de manière autonome l'outil pertinent à une étape donnée de son processus.
Construire les fondations : Model Context Protocol (MCP)
Pour commencer, il est nécessaire de décrire ces outils selon un standard, un cadre commun, pour s'assurer qu'ils peuvent être utilisés par n'importe quelle implémentation agentique. Le standard leader au moment de la rédaction est Model Context Protocol (MCP) avec une grande variété de serveurs open source, certains traitant du problème en question. Cependant, nous nous sommes rapidement rendu compte qu'il n'y avait pas de solution prête à l'emploi à utiliser, et nous avons décidé d'implémenter la nôtre avec l'ADN open source de Filigran : vous pouvez y jeter un œil ici.
Comme vous pouvez le voir dans le code source, nous avons élaboré des outils pour comprendre un schéma GraphQL donné, générer une requête qui fonctionne, et l'exécuter dans un environnement OpenCTI. L'étape suivante consiste alors à connecter un agent avec ces outils, et espérer que la magie opère. Mais comme l'oncle Vernon l'a dit un jour "la magie n'existe pas", et une telle implémentation naïve s'est avérée sous-performante à la fois en termes de temps de traitement (la génération de réponse était longue) et de pertinence (les réponses n'étaient pas toujours exactes, en particulier pour les questions non pertinentes). Afin d'avoir un contrôle plus fin sur la génération de requêtes, nous avons compris que nous pouvions utiliser des agents, mais dans un flux plus granulaire.
Un flux granulaire
Pour relever les défis décrits précédemment, nous avons implémenté un workflow IA logique qui guide l'agent étape par étape dans la réponse aux questions des utilisateurs. Cette approche granulaire décompose le processus comme suit :
View the interactive product demo
1 : Traiter la question
- Déterminer si la question est pertinente
- Identifier si des entités sont explicitement nommées, et vérifier leur présence dans les données
- Classifier le type d'entité impliquée (par exemple, malware, attack pattern)
2 : Construire et exécuter la requête
- Sélectionner les types d'entités pertinents en fonction de la question (tels que malware ou vulnérabilité)
- Récupérer les définitions de champs, filtres et options de tri en utilisant les outils MCP pour construire la requête.
- Exécuter la requête
3 : Interpréter les résultats et rédiger une réponse
Chacune de ces étapes est orchestrée par ArianeAi, garantissant que la question passe logiquement de l'interprétation à l'exécution.
Le schéma suivant fournit un aperçu visuel de la façon dont l'agent construit les réponses à travers ce processus en plusieurs étapes.
Flux d'exécution du chatbot OpenCTI
Pourquoi la granularité compte
Ce flux modulaire offre une flexibilité significative. Il permet de combiner des composants IA (agents, outils MCP) avec une logique personnalisée comme l'authentification, la limitation de débit et la génération d'URL adaptées aux besoins du chatbot OpenCTI. De plus, selon la complexité de chaque étape, différentes tailles de modèles peuvent être employées - des LLM plus petits et plus rapides pour les tâches plus routinières, et des modèles plus grands et plus puissants pour l'interprétation complexe.
Selon nos benchmarks internes, cette approche offre de meilleurs résultats et plus rapides par rapport à la dépendance d'un agent unique tentant d'utiliser directement le(s) outil(s) MCP approprié(s). En décomposant le problème, chaque étape peut être optimisée indépendamment, améliorant l'efficacité et la précision.
Où en sommes-nous, et quelle est la suite ?
Cette première itération n'est que le début, et nous ne faisons qu'effleurer la surface de ce que l'IA agentique peut accomplir au sein de la suite XTM de Filigran. Pour l'instant, le chatbot fonctionne avec le gpt-4.1-mini d'OpenAI, mais notre objectif est de le faire fonctionner sur notre propre infrastructure. Les premières expériences avec des modèles à poids ouverts comme Qwen3 et gpt-oss ont montré des résultats encourageants.
Limitations actuelles
Les grands modèles de langage, cependant, comportent des limitations inhérentes. Par exemple, ils ne comptent pas bien. Un exemple bien connu est que de nombreux modèles (même les grands) échouent à répondre à des questions simples comme "combien de R y a-t-il dans Strawberry ?". Par conséquent, le chatbot d'OpenCTI a du mal à compter les éléments dans des listes très longues et ne réussira pas bien aux questions telles que "quels sont les 5 pays les plus ciblés ?", "quel est l'acteur de menace le plus actif ?". Sans parler des limitations dues à la fenêtre de contexte des LLM. Nous avons identifié des moyens de résoudre ce problème et les mettrons en œuvre dans les prochaines itérations.
La structure de données sous-jacente dans OpenCTI ajoute une autre couche de complexité, avec de nombreux types d'entités et champs potentiellement pertinents pour chaque requête utilisateur. Parfois, il est difficile pour le modèle de déterminer exactement ce qui doit être interrogé et comment interpréter les résultats retournés pour les questions nuancées.
Capacités futures
Actuellement, le chatbot se limite à la lecture des données ; il ne peut pas créer, modifier ou supprimer des informations. Avant d'étendre ces capacités, notre priorité avec ArianeAi est de s'assurer que le modèle interprète et répond constamment aux questions correctement. Dans les prochaines versions, il y aura la possibilité de créer des rapports avec le chatbot.
Conclusion
L'intégration de l'IA agentique dans OpenCTI marque une étape importante vers une cyber threat intelligence plus accessible et exploitable. En tirant parti d'un workflow agentique granulaire, nous avons permis aux requêtes en langage naturel d'être traduites en requêtes GraphQL précises, fournissant des insights lisibles par l'humain dans un chatbot directement dans l'application OpenCTI, 24h/24 et 7j/7.
L'adoption du Model Context Protocol (MCP) et d'outils personnalisés a amélioré la capacité du chatbot à naviguer dans la structure de données complexe d'OpenCTI, malgré des défis comme les limitations des LLM en matière de comptage ou de traitement de requêtes nuancées. Bien que l'itération actuelle, alimentée par gpt-4.1-mini, excelle à lire et interpréter les données, les versions futures, comme OpenCTI 6.9, introduiront des capacités telles que la création de rapports. Les expériences en cours avec des modèles à poids ouverts comme Qwen3 et gpt-oss signalent une transition vers une infrastructure auto-hébergée, promettant une plus grande évolutivité et flexibilité. Ce n'est que le début, car nous continuons à affiner et à étendre le potentiel du chatbot au sein de la suite XTM de Filigran. Venez l'essayer, nous serions ravis d'avoir vos retours !
Profitez-en et n'hésitez pas à poser vos questions à ce sujet sur notre canal communautaire Slack !
Lire la suite
Explorez des sujets et analyses associés
Votre SOC n'a pas de problème de données. Il a un problème de coordination.

Workflows d'approbation de l'intelligence : garantir la qualité des données et rationaliser les processus
