Integrite du flot de controle
Qu'est-ce que Integrite du flot de controle ?
Integrite du flot de controleL'integrite du flot de controle (CFI) restreint les appels indirects et les retours du programme a un ensemble precalcule de cibles legitimes, bloquant ROP et JOP.
CFI a ete formalisee en 2005 par Abadi, Budiu, Erlingsson et Ligatti. Le compilateur construit le graphe de flot de controle, attribue a chaque site d'appel indirect un ensemble de cibles autorisees et instrumente les sites d'appel et de retour avec des verifications a l'execution. Les implementations courantes comprennent LLVM CFI (arretes avant via des identifiants par type), Microsoft Control Flow Guard, kCFI du noyau Linux et des variantes materielles comme Intel CET-IBT et Arm BTI pour les branches indirectes, plus des shadow stacks pour les retours. CFI bloque ROP/JOP car la chaine de gadgets viole les ensembles d'arretes legitimes. Les limites principales sont les classes d'equivalence trop larges en C/C++ et les interfaces incompatibles.
● Exemples
- 01
Microsoft Control Flow Guard rejette un appel indirect via vtable corrompue dans Edge.
- 02
Le noyau Linux 6.x avec kCFI arrete une chaine ROP exploitant un pilote vulnerable.
● Questions fréquentes
Qu'est-ce que Integrite du flot de controle ?
L'integrite du flot de controle (CFI) restreint les appels indirects et les retours du programme a un ensemble precalcule de cibles legitimes, bloquant ROP et JOP. Cette notion relève de la catégorie Sécurité applicative en cybersécurité.
Que signifie Integrite du flot de controle ?
L'integrite du flot de controle (CFI) restreint les appels indirects et les retours du programme a un ensemble precalcule de cibles legitimes, bloquant ROP et JOP.
Comment fonctionne Integrite du flot de controle ?
CFI a ete formalisee en 2005 par Abadi, Budiu, Erlingsson et Ligatti. Le compilateur construit le graphe de flot de controle, attribue a chaque site d'appel indirect un ensemble de cibles autorisees et instrumente les sites d'appel et de retour avec des verifications a l'execution. Les implementations courantes comprennent LLVM CFI (arretes avant via des identifiants par type), Microsoft Control Flow Guard, kCFI du noyau Linux et des variantes materielles comme Intel CET-IBT et Arm BTI pour les branches indirectes, plus des shadow stacks pour les retours. CFI bloque ROP/JOP car la chaine de gadgets viole les ensembles d'arretes legitimes. Les limites principales sont les classes d'equivalence trop larges en C/C++ et les interfaces incompatibles.
Comment se défendre contre Integrite du flot de controle ?
Les défenses contre Integrite du flot de controle combinent habituellement des contrôles techniques et des pratiques opérationnelles, comme détaillé dans la définition ci-dessus.
Quels sont les autres noms de Integrite du flot de controle ?
Noms alternatifs courants : CFI, Control Flow Guard, kCFI.
● Termes liés
- appsec№ 1028
Shadow stack
Une shadow stack est une pile separee et protegee qui conserve des copies des adresses de retour afin que le processeur detecte une alteration de la pile normale et bloque les attaques ROP.
- appsec№ 545
Intel CET
Intel CET (Control-flow Enforcement Technology) est une fonctionnalite du processeur qui combine une shadow stack materielle et l'Indirect Branch Tracking (IBT) pour bloquer ROP, JOP et COP.
- appsec№ 925
Return-Oriented Programming
Le ROP est une technique d'exploitation par reutilisation de code qui enchaine de courtes sequences terminees par RET pour executer un calcul arbitraire sans injecter de code.
- appsec№ 064
ASLR
La randomisation de l'espace d'adressage place aleatoirement le code, les piles, les tas et les bibliotheques en memoire afin qu'un attaquant ne puisse pas predire les adresses cibles.
- appsec№ 303
DEP
La prevention d'execution des donnees (DEP / NX / W^X) marque les pages memoire comme non executables pour empecher un attaquant d'executer du shellcode injecte dans la pile ou le tas.
- appsec№ 670
Securite memoire
La securite memoire est la propriete qu'un programme ne lise, n'ecrive ni n'execute jamais une memoire qu'il n'a pas legitimement allouee, ce qui supprime des classes entieres de vulnerabilites.
● Voir aussi
- № 569Programmation orientee saut (JOP)
- № 1095Canari de pile
- № 581KASLR
- № 1058SMEP / SMAP
- № 671Langages memory safe
- № 953Proprietes de securite de Rust