Компонент Kaspersky Control Flow Monitor

Компонент Kaspersky Control Flow Monitor (KCFM) предназначен для мониторинга и контроля работоспособности процессов посредством контроля потока управления.

Компонент KCFM позволяет в решении на базе KasperskyOS:

Принцип работы компонента KCFM

Используя исходный код программы, которую требуется контролировать, возможно построить граф потока управления (Control Flow Graph, CFG) этой программы. Этот граф определяет полный набор системных вызовов и вызовов библиотечных функций, которые могут быть выполнены во время исполнения программы, а также все возможные последовательности их выполнения. Построение CFG происходит во время сборки программы.

Во время работы процесса (исполняющейся программы) отслеживаются вызовы функций и IPC-вызовы, выполняемые процессом. При обнаружении несоответствия в работе (аномалии) программы ожидаемому поведению компонент KCFM позволяет остановить и перезапустить контролируемую программу.

Важно! Компонент KCFM является экспериментальным и работает с ограничениями, описанными ниже. Этот компонент доступен пользователям для тестирования и предоставления отзывов.

Ограничения в экспериментальной версии компонента KCFM

Компонент KCFM имеет следующие ограничения:

Состав компонента KCFM

Компонент представляет собой набор следующих файлов:

Построение графа потока управления программы

Граф потока управления строится во время сборки прикладной программы, если в файл CMakeLists.txt для сборки программы добавлена CMake-команда kcfm_generate_signature().

Подробнее см. "Пример kcfm_hello".

Контроль IPC-вызовов, выполняемых контролируемой программой выполняется с помощью данных аудита безопасности. Для того, чтобы компонент KCFM мог получить доступ к данным аудита безопасности контролируемой программы и настроить системную программу Klog, в файл CMakeLists.txt для сборки программы необходимо добавить CMake-команду kcfm_generate_audit_policy().

Код контролируемой программы может использовать статические или динамические библиотеки. В этом случае эти библиотеки также должны быть построены с помощью CMake, а в скрипт сборки должны быть добавлены CMake-команды kcfm_make_graph_lib() для построения графов потока вызовов этих библиотек.

Подробнее см. "Пример kcfm_http_server".

Обнаружение аномалий

Обнаружение аномалий выполняется модулем FlowChecker из состава компонента KCFM. Чтобы добавить модуль FlowChecker в решение, необходимо:

Подробнее см. "Пример kcfm_http_server".

Обработка аномалий

При обнаружении аномалии, ее обработка выполняется модулем FlowMonitor из состава компонента KCFM. Чтобы добавить модуль FlowMonitor в решение, необходимо:

Модуль FlowMonitor выполняет следующие действия:

Формирование политики безопасности

Компонент KCFM также позволяет автоматически сформировать часть политики безопасности решения в виде PSL-файла на основе исходного кода программы. В этом PSL-файле будут перечислены и разрешены все IPC-вызовы служб ядра и интерфейсов системной программы VFS, используемые в коде программы. Политика безопасности формируется так, чтобы разрешить программе доступ к используемым IPC-вызовам и запретить ко всем неиспользуемым.

Чтобы сгенерировать такой PSL-файл, необходимо в файл CMakeLists.txt для сборки программы добавить CMake-команду kcfm_generate_audit_policy(). Созданный PSL-файл необходимо включить в описание политики безопасности решения.

Подробнее см. "Пример kcfm_hello".

В начало