Aller au contenu
Documentation

Modules

Chemins d'attaque

La page Combinaisons toxiques, les chaînes du catalogue et les chemins calculés, le score, le panneau de détail, comment casser une chaîne, et les propositions du Sapper.

Le module de chemins d'attaque relie entre eux des constats et des relations du graphe qui, pris un à un, restent moyens, mais qui mis bout à bout mènent de l'Internet à une donnée, une identité d'administration, une clé ou un cluster. La page « Combinaisons toxiques » présente le résultat. Le principe est décrit dans Chemins d'attaque ; cette page décrit le module tel qu'il est.

Deux sources de chemins

SourceCe que c'estClés de règle
Chaînes du catalogueDes combinaisons connues, écrites une à une comme des motifs du graphe : une ressource exposée qui porte tel constat et atteint telle donnée. Chaque chaîne est une règle de la page « Politiques », onglet « Combinaison Toxique », avec sa sévérité, sa catégorie et son interrupteur « Statut »TOX-…
Chemins calculésDes chemins que personne n'a écrits : Ctadel ne garde du graphe que ce qu'un attaquant utilise (où il entre, ce qu'il exploite, quelle identité il obtient, ce qu'elle atteint) et le parcourt en multipliant des probabilités. Un chemin est classé par ce qu'il atteintPATH-DATA (donnée sensible), PATH-ADMIN (identité administratrice), PATH-KEY (clé ou coffre de secrets), PATH-CLUSTER (cluster Kubernetes), PATH-STORE (dépôt de données sans classification)

Pour les chemins calculés, les probabilités de chaque pas sont fixées une fois pour toutes par Ctadel pour que tout chemin soit noté de la même façon : par exemple 0,9 pour une IP publique derrière un groupe de sécurité ouvert au monde, 0,5 derrière un groupe fermé, 0,7 derrière un équilibreur public, 1,0 pour un bucket public ; 0,9 pour un secret vérifié actif, 0,5 pour un secret non vérifié, 0,1 pour un secret inactif ; 0,9 pour une identité obtenue par IMDSv1, 0,6 par IMDSv2 ; 0,6 pour une évasion de conteneur. Un hôte exposé sans CVE connue garde une probabilité d'exploitation de 0,05 : il fait tourner une application. La recherche s'arrête à 4 pas par chemin, garde 5 chemins par point d'entrée et 500 en tout, et ne suit pas une branche sous 0,005. Une recherche qui atteint ces limites rend ce qu'elle a trouvé sans fermer les chemins qu'elle n'a pas pu revoir.

Score et sévérité

  • Chaîne du catalogue : base 80 pour CRITICAL, 60 pour HIGH, 40 pour MEDIUM, 20 pour LOW ; plus 5 par maillon (au plus 15) et 2 par ressource (au plus 10) ; plafond 100. Ctadel ajuste ensuite ce score avec ce qu'il sait de la ressource finale : +15 si elle est atteignable depuis l'Internet, +15 si elle porte une CVE exploitable, +10 si elle contient quelque chose de valeur, et -15 pour un hôte ou un dépôt de données qui n'est ni atteignable ni exploitable. Le résultat reste entre 1 et 100.
  • Chemin calculé : le produit des probabilités, multiplié par l'impact de la cible, donne un score entre 0 et 1. La sévérité en découle : CRITICAL à partir de 0,5, HIGH à partir de 0,2, MEDIUM à partir de 0,05, LOW en dessous. Le score affiché est 20 + 80 × racine carrée du score : un chemin certain vers une donnée sensible vaut 100, un chemin à une chance sur vingt vaut 38.

La page Combinaisons toxiques

La page « Combinaisons toxiques » (entrée du même nom dans le menu) liste les chaînes détectées, classées par score décroissant, avec les colonnes « Risque », « Sévérité », « Titre », « Catégorie » et « Ressources » (le nombre de ressources du chemin). Les filtres sont « Sévérité » et « Catégorie » (« Exposition », « Mouvement latéral », « Élévation de privilèges », « Accès aux données ») ; un champ « Rechercher des combinaisons toxiques… » et un bouton « Exporter CSV » complètent la liste. La page charge les 100 chaînes de plus haut score.

Un clic ouvre le panneau de détail, avec quatre onglets :

OngletContenu
« Vue d'ensemble »La description de la chaîne, les ressources affectées (chacune ouvre son panneau), les références de la règle, et le « Score de risque » avec sa décomposition : sévérité, « Bonus chemin et ressources », nombre de sauts et de ressources concernées
« Chemin d'attaque »La « Visualisation du chemin d'attaque » : les nœuds du chemin dans l'ordre, avec leur type. Un clic sur un nœud ouvre une carte avec son type, son nom, son identifiant et le nombre de « détections ouvertes » qu'il porte ; « Voir plus » ouvre le panneau de la ressource. Pour un chemin calculé, chaque nœud porte son rôle (entrée, pivot, cible) et la raison de chaque pas
« Remédiation »Les étapes de remédiation de la règle, et le Mason (voir Assistants)
« Historique »Les changements de statut du constat
La page Combinaisons toxiques, un chemin ouvert dans le panneau de détail avec ses maillons.
Figure 1. Figure 1. Un chemin d'attaque ouvert dans le panneau de détail, onglet « Chemin d'attaque ». Données de démonstration.

Casser une chaîne

Une chaîne n'existe que tant que tous ses maillons existent. Chaque maillon est un fait du graphe : un constat ouvert sur une ressource, une exposition, un droit d'accès, un secret, une CVE. Corriger un seul maillon suffit : à l'évaluation suivante, la chaîne ne correspond plus et le constat passe à résolu, avec une entrée dans son historique. Les constats ne sont fermés que si l'évaluation a été complète ; une évaluation interrompue laisse les chaînes qu'elle n'a pas revues ouvertes.

Pour choisir le maillon, l'onglet « Chemin d'attaque » montre le nombre de constats ouverts sur chaque nœud, et le Mason propose dans « Remédiation » un « Maillon à couper » : il préfère le maillon géré par du code et celui dont le moins de choses dépendent, et dit pourquoi. Le constat d'une ressource corrigée peut être réévalué sans attendre le prochain inventaire par « Vérifier la correction ».

Quelques chaînes du catalogue sont désactivées par défaut ; dans « Politiques », onglet « Combinaison Toxique », elles apparaissent avec ce statut, et les réactiver à la main ne les fera pas se déclencher.

Propositions du Sapper

Le Sapper est l'agent qui cherche dans le graphe des chemins qui ne sont ni dans le catalogue ni parmi les chemins calculés : des chaînes de faiblesses moyennes qui s'additionnent, ou une CVE dont le sens compte (une SSRF à côté d'IMDSv1). Il ne fait que lire. Son bloc « Sapper » est en tête de la page « Combinaisons toxiques ».

  1. « Chercher maintenant » lance une recherche ; une seule tourne à la fois. Ctadel commence par relever le graphe (« Lecture du graphe… ») : le nombre de nœuds, les cibles qui valent la peine d'être atteintes, et celles qu'aucun chemin connu n'atteint. Sans graphe ou sans cible, la recherche s'arrête là et le dit.
  2. Le modèle remonte depuis les cibles vers ce qui est exposé, vérifie chaque chaîne contre le graphe (un pas qui n'existe pas met fin à la chaîne), écarte ce qu'une règle ou un chemin ouvert couvre déjà, puis dépose au plus 5 propositions par recherche. Une règle qui nomme des types, des relations ou des propriétés absents du graphe est refusée.
  3. Le compte rendu s'affiche : « N nœuds lus, N cibles, N qu'aucun chemin connu n'atteint ; N remontées, N déposées », et le cas échéant « La recherche s'est arrêtée sur son budget : il peut rester des chemins à trouver. »
  4. Chaque proposition montre son titre, sa sévérité, « confiance N % », le nombre de « correspondances » actuelles, le « Chemin vérifié », les « Preuves » (les faits lus, maillon par maillon) et la « Règle généralisée (Cypher) ».
  5. « Accepter comme règle » crée une règle toxique personnalisée de l'instance (clé SAPPER-…), évaluée aussitôt sur la première ressource du chemin puis à chaque évaluation. « Rejeter » archive la proposition. Rien n'entre dans le catalogue sans ce geste.

Le Sapper n'est accessible qu'aux utilisateurs dont le rôle couvre tous les projets, car il lit le graphe entier. Il tourne aussi à intervalle régulier si l'opérateur de l'instance l'a réglé ; par défaut, cette planification est désactivée.

Limites

  • Les chemins calculés ne connaissent que les points d'entrée, les exploitations et les pas que Ctadel sait peser : IP publique et groupes de sécurité, équilibreur, service Kubernetes, point de terminaison de cluster, fonction publique, bucket et base publics ; CVE à vecteur réseau ; identité d'instance, compte de service, secret trouvé, droit d'accès effectif, évasion de conteneur. Ce qui n'est pas dans cette liste n'est pas un pas.
  • Les probabilités sont des jugements fixés par Ctadel, pas des mesures. Elles servent à classer les chemins entre eux.
  • Une recherche qui atteint ses limites (4 pas, 500 chemins) est tronquée ; elle ne ferme pas les constats des chemins non revus.
  • Les chaînes désactivées restent dans le catalogue sans se déclencher.
  • La page charge au plus 100 chaînes ; le compteur en tête donne le total.
  • Les propositions du Sapper dépendent d'un modèle de langue : il peut ne rien trouver, ou s'arrêter avant d'avoir épuisé les cibles. Une proposition acceptée est une règle de graphe écrite par le modèle et vérifiée par Ctadel sur ses seuls noms de types, de relations et de propriétés ; sa pertinence est celle que vous lui reconnaissez en l'acceptant.
  • L'identité de charge de travail Kubernetes (IRSA, Workload Identity) n'est pas modélisée : un chemin d'un pod vers une donnée cloud par ce moyen n'est pas trouvé.