Integridad del flujo de control
¿Qué es Integridad del flujo de control?
Integridad del flujo de controlLa integridad de flujo de control (CFI) restringe las llamadas indirectas y los retornos del programa a un conjunto precomputado de destinos legitimos, bloqueando ROP y JOP.
CFI fue formalizada por Abadi, Budiu, Erlingsson y Ligatti en 2005. El compilador construye el grafo de flujo de control, asigna a cada llamada indirecta un conjunto de destinos validos e instrumenta verificaciones en tiempo de ejecucion. Implementaciones practicas incluyen LLVM CFI (basada en IDs por tipo), Microsoft Control Flow Guard, kCFI del kernel Linux y variantes asistidas por hardware como Intel CET-IBT y Arm BTI para ramas indirectas, mas shadow stacks para retornos. CFI neutraliza ROP/JOP porque la cadena de gadgets viola los conjuntos de aristas validas. Las principales limitaciones son las clases de equivalencia amplias en C/C++ y las interfaces incompatibles.
● Ejemplos
- 01
Microsoft Control Flow Guard bloquea una llamada indirecta via vtable corrupta en Edge.
- 02
El kernel Linux 6.x con kCFI detiene una cadena ROP en un driver vulnerable.
● Preguntas frecuentes
¿Qué es Integridad del flujo de control?
La integridad de flujo de control (CFI) restringe las llamadas indirectas y los retornos del programa a un conjunto precomputado de destinos legitimos, bloqueando ROP y JOP. Pertenece a la categoría de Seguridad de aplicaciones en ciberseguridad.
¿Qué significa Integridad del flujo de control?
La integridad de flujo de control (CFI) restringe las llamadas indirectas y los retornos del programa a un conjunto precomputado de destinos legitimos, bloqueando ROP y JOP.
¿Cómo funciona Integridad del flujo de control?
CFI fue formalizada por Abadi, Budiu, Erlingsson y Ligatti en 2005. El compilador construye el grafo de flujo de control, asigna a cada llamada indirecta un conjunto de destinos validos e instrumenta verificaciones en tiempo de ejecucion. Implementaciones practicas incluyen LLVM CFI (basada en IDs por tipo), Microsoft Control Flow Guard, kCFI del kernel Linux y variantes asistidas por hardware como Intel CET-IBT y Arm BTI para ramas indirectas, mas shadow stacks para retornos. CFI neutraliza ROP/JOP porque la cadena de gadgets viola los conjuntos de aristas validas. Las principales limitaciones son las clases de equivalencia amplias en C/C++ y las interfaces incompatibles.
¿Cómo defenderse de Integridad del flujo de control?
Las defensas contra Integridad del flujo de control combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.
¿Cuáles son otros nombres para Integridad del flujo de control?
Nombres alternativos comunes: CFI, Control Flow Guard, kCFI.
● Términos relacionados
- appsec№ 1028
Shadow stack
Una shadow stack es una pila protegida y separada que guarda copias de las direcciones de retorno para detectar manipulaciones de la pila normal y bloquear ataques ROP.
- appsec№ 545
Intel CET
Intel CET (Control-flow Enforcement Technology) es una caracteristica de CPU que combina shadow stack hardware e Indirect Branch Tracking (IBT) para bloquear ROP, JOP y COP.
- appsec№ 925
Return-Oriented Programming
ROP es una tecnica de explotacion por reutilizacion de codigo que encadena secuencias cortas terminadas en RET para ejecutar computacion arbitraria sin inyectar codigo nuevo.
- appsec№ 064
ASLR
La aleatorización del espacio de direcciones distribuye al azar la ubicación en memoria de código, pilas, montones y librerías para impedir que un atacante prediga direcciones.
- appsec№ 303
DEP
La prevencion de ejecucion de datos (DEP / NX / W^X) marca paginas de memoria como no ejecutables para impedir que un atacante ejecute shellcode inyectado en pila o monton.
- appsec№ 670
Seguridad de memoria
La seguridad de memoria es la propiedad de que un programa nunca lee, escribe ni ejecuta memoria que no haya asignado legitimamente, evitando clases enteras de vulnerabilidades.