Junto con el Infraestructura de Rust para la solicitud de extracción de Linux 6.1, otra extracción temprana presentada por el mantenedor del kernel Kees Cook para Linux 6.1 es la introducción de una nueva implementación de Integridad de flujo de control”CFI”para el kernel de Linux para reemplazar el código anterior, menos que ideal.
El kernel de Linux ha admitido la implementación de CFI de Clang que ha dependido de la habilitación de la compatibilidad con Clang LTO (optimización del tiempo de enlace), entre otras advertencias en la compatibilidad. Esta implementación de Clang CFI ahora está siendo reemplazada por la implementación”KCFI”más nueva de Clang que está diseñada teniendo en cuenta el uso del kernel y aborda los dolores de cabeza anteriores en torno a la implementación Clang CFI existente. También se espera el soporte de GCC para KCFI en el futuro.
De este nuevo soporte Clang KCFI para Linux 6.1, Kees Cook lo resumió así:
Esto reemplaza el soporte anterior para la instrumentación de integridad de flujo de control (CFI) estándar de Clang, lo que ha requerido muchas condiciones especiales (por ejemplo, LTO) y soluciones alternativas. La implementación actual (“Kernel CFI”) es específica de C, está diseñada directamente para el kernel de Linux y aprovecha características arquitectónicas como IBT de x86. Esta serie conserva la compatibilidad con arm64 y agrega compatibilidad con x86. Se espera soporte arquitectónico”genérico”adicional pronto.
Más detalles a través de KCFI solicitud de extracción enviada en preparación para la inminente ventana de fusión de Linux 6.1.
KCFI de Clang (-fsanitize=kcf) es un esquema de integridad de flujo de control avanzado para llamadas indirectas. KCFI está diseñado para código de bajo nivel y este desinfectante se ha integrado en LLVM desde principios de año. Este soporte de KCFI ha sido liderado por Google durante los últimos meses.