Integridad del flujo de control


La integridad del flujo de control ( CFI ) es un término general para las técnicas de seguridad informática que evitan que una amplia variedad de ataques de malware redirijan el flujo de ejecución (el flujo de control ) de un programa.

Las técnicas asociadas incluyen separación de puntero de código (CPS), integridad de puntero de código (CPI), canarios de pila , pilas de sombra y verificación de puntero vtable . [1] [2] [3]

Las implementaciones relacionadas están disponibles en Clang , [4] Control Flow Guard de Microsoft [5] [6] [7] y Return Flow Guard, [8] Verificaciones de llamadas de función indirectas de Google [9] y Reuse Attack Protector (RAP). [10] [11]

Google ha enviado Android con el kernel de Linux compilado por Clang con optimización de tiempo de enlace (LTO) y CFI desde 2018. [12]

La tecnología Intel Control-flow Enforcement Technology (CET) detecta compromisos para controlar la integridad del flujo con una pila de sombras y un seguimiento indirecto de las ramas. [13] [14]

La pila de sombras almacena una copia de cada CALL en una pila de sombras especialmente protegida y en un RET, verifica si la dirección de retorno almacenada en la pila normal y la pila de sombras son iguales. Si las direcciones no son iguales, el procesador genera un INT # 21 (Fallo de protección de flujo de control).