Целостность потока управления
Что такое Целостность потока управления?
Целостность потока управленияЦелостность потока управления (CFI) ограничивает непрямые вызовы и возвраты программы заранее вычисленным множеством легитимных целей, блокируя ROP и JOP.
CFI была формализована Абади, Будиу, Эрлингссоном и Лигатти в 2005 году. Компилятор строит граф потока управления, для каждой точки косвенного вызова определяет допустимые цели и вставляет проверки в местах вызовов и возвратов. Практические реализации: LLVM CFI (прямые рёбра через типовые бакеты), Microsoft Control Flow Guard, kCFI ядра Linux и аппаратные варианты — Intel CET-IBT и Arm BTI для косвенных переходов плюс теневой стек для возвратов. ROP/JOP-цепочки нарушают допустимое множество рёбер и блокируются. Основные ограничения — широкие классы эквивалентности в C/C++ и несовместимые интерфейсы.
● Примеры
- 01
Microsoft Control Flow Guard отклоняет косвенный вызов через испорченную vtable в Edge.
- 02
Ядро Linux 6.x с kCFI блокирует ROP-цепочку в уязвимости драйвера.
● Частые вопросы
Что такое Целостность потока управления?
Целостность потока управления (CFI) ограничивает непрямые вызовы и возвраты программы заранее вычисленным множеством легитимных целей, блокируя ROP и JOP. Относится к категории Безопасность приложений в кибербезопасности.
Что означает Целостность потока управления?
Целостность потока управления (CFI) ограничивает непрямые вызовы и возвраты программы заранее вычисленным множеством легитимных целей, блокируя ROP и JOP.
Как защититься от Целостность потока управления?
Защита от Целостность потока управления обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия Целостность потока управления?
Распространённые альтернативные названия: CFI, Control Flow Guard, kCFI.