Qu'est-ce que Intégrité du flot de contrôle (control-flow integrity) ?

Terme générique désignant les défenses qui empêchent le flot d'exécution d'un programme de sortir des chemins possibles dans le programme d'origine (son graphe de flot de contrôle). Il comprend des fonctions matérielles comme les piles fantômes et l'authentification de pointeurs, qui protègent les retours de fonction, et Intel IBT et Branch Target Identification d'Arm, qui limitent les cibles des appels et sauts indirects aux emplacements portant un marqueur désigné, ainsi que des contrôles des cibles insérés par les compilateurs. Il complique les attaques qui réécrivent des adresses de retour ou des pointeurs de fonction pour enchaîner des fragments de code existant.

Nom japonais: 制御フロー完全性

« Intégrité du flot de contrôle (control-flow integrity) » apparaît dans 1 questions d'entraînement réparties sur 1 thèmes, dont Sécurité matérielle : évolutions récentes.

Domaine: Sécurité matérielle : évolutions récentes

S'entraîner : questions sur Intégrité du flot de contrôle (control-flow integrity)

À propos des fonctions matérielles qui soutiennent l'intégrité du flot de contrôle, quelle association est correcte entre ce qui protège les retours de fonction et ce qui protège les appels et sauts indirects, comme ceux qui passent par des pointeurs de fonction ?

  1. ALes retours sont protégés par les piles fantômes ou l'authentification de pointeurs ; les appels et sauts indirects par des mécanismes qui exigent une instruction marqueur désignée au début de la cible
  2. BLes retours sont protégés par des mécanismes qui exigent une instruction marqueur désignée au début de la cible ; les appels et sauts indirects par les piles fantômes
  3. CLes retours sont protégés par KPTI (kernel page-table isolation) ; les appels et sauts indirects par la traduction d'adresses de l'IOMMU
Afficher la réponse et l'explication

Réponse : A. Les retours sont protégés par les piles fantômes ou l'authentification de pointeurs ; les appels et sauts indirects par des mécanismes qui exigent une instruction marqueur désignée au début de la cible

Une pile fantôme compare l'adresse de retour à sa copie, et l'authentification de pointeurs vérifie le code d'authentification ajouté à l'adresse de retour ; toutes deux protègent donc les retours de fonction. Pour les appels et sauts indirects, Intel IBT et Branch Target Identification d'Arm exigent une instruction marqueur au début de la cible (ENDBR64 sur x86) et transforment en exception les branchements vers le milieu d'une fonction, par exemple. Un emplacement portant un marqueur reste toutefois accessible depuis n'importe quel branchement indirect ; on les combine donc parfois avec des contrôles plus fins du compilateur, qui limitent les cibles aux fonctions d'un type compatible. KPTI est une contre-mesure à Meltdown et l'IOMMU restreint le DMA des périphériques ; aucun des deux ne protège le flot de contrôle.

Questions mentionnant « Intégrité du flot de contrôle (control-flow integrity) » (1)

  1. À propos des fonctions matérielles qui soutiennent l'intégrité du flot de contrôle, quelle association est correcte entre ce qui protège les retours de fonction et ce qui protège les appels et sauts indirects, comme ceux qui passent par des pointeurs de fonction ?

Termes associés

Pointeur de fonction Pile fantôme (shadow stack) Adresse de retour Authentification de pointeurs (PAC) KPTI Meltdown IOMMU DMA (accès direct à la mémoire) Arm CCA (Confidential Compute Architecture) Attaque par exécution transitoire

Retour au glossaire