Contexte et architecture
SubImage, startup soutenue par Y Combinator, s’appuie sur Cartography, un projet CNCF né chez Lyft et déployé dans plus de 70 entreprises, dont sept du Fortune 100. Le moteur d’ingestion de Cartography collecte des métadonnées depuis des services cloud (AWS, Okta, GitHub…) et les injecte dans Neo4j, base de données orientée graphe. Le backend, écrit en Python avec FastAPI, orchestre les requêtes et expose les données via un serveur MCP destiné aux agents d’intelligence artificielle. Le front‑end utilise Svelte et un rendu WebGL propriétaire pour visualiser le graphe en temps réel. L’infrastructure d’orchestration repose sur Terraform, garantissant la reproductibilité des déploiements.
Cette pile technologique crée un « knowledge graph » qui représente chaque ressource, relation et politique d’accès. En stockant les dépendances de code et les flux de données, le système peut raisonner sur la surface d’attaque d’une organisation de façon programmatique.
Défis de sécurité et solutions proposées
Le premier défi consiste à triager et contextualiser les vulnérabilités. SubImage doit identifier si une faille touche un actif exposé, déterminer le chemin d’accès complet (services actifs, fonctions atteignables) et vérifier l’existence de contrôles compensatoires. Cette analyse repose sur la traversée du graphe Neo4j : chaque nœud représente un composant (instance EC2, fonction Lambda, rôle IAM) et chaque arête décrit une relation d’appel ou de confiance. En appliquant des algorithmes de recherche de chemins pondérés, le moteur calcule le nombre de sauts nécessaires pour atteindre une donnée sensible, ce qui permet de quantifier le risque réel.
Un second problème est la validation des correctifs générés par des agents de code. SubImage prévoit d’exécuter les patches dans un environnement sandbox, puis de comparer les états du graphe avant et après modification. Si la topologie change de façon inattendue (par exemple, suppression d’une arête critique), le correctif est rejeté. Cette approche garantit que les modifications automatisées ne compromettent pas la continuité opérationnelle.
Le besoin d’une carte « near‑real‑time » implique la mise à jour incrémentale du graphe. Cartography utilise des connecteurs qui pollent les API cloud à intervalles courts ; chaque changement déclenche une transaction Neo4j, assurant que les nouvelles ressources apparaissent immédiatement dans la visualisation. Le rendu WebGL actualise la vue sans rechargement complet, ce qui rend possible la détection d’attaques en cours.
Intégration IA et perspectives d’évolution
Le serveur MCP expose le graphe via une API compatible avec les modèles de langage. Les agents IA peuvent poser des questions du type « Qui possède ce bucket ? » ou « Quel est le chemin d’exploitation le plus court ? ». Pour éviter les hallucinations, SubImage limite le contexte fourni à l’agent aux sous‑graphes pertinents, sélectionnés par des filtres basés sur les tags, les logs et les heuristiques d’action. Cette contrainte réduit la charge cognitive du modèle et diminue le taux d’erreur.
Enfin, la fonctionnalité de « time travel » repose sur la journalisation des transactions Neo4j. En conservant les snapshots horodatés, il devient possible de reconstituer l’état du graphe à un instant donné et de rejouer les séquences d’événements qui ont conduit à une compromission. Cette capacité offre aux équipes de réponse incident une vue post‑mortem précise, facilitant l’identification des vecteurs d’intrusion et la mise en place de mesures correctives.