Компонент Kaspersky Control Flow Monitor (KCFM) предназначен для мониторинга и контроля работоспособности процессов посредством контроля потока управления.
Компонент KCFM позволяет в решении на базе KasperskyOS:
Принцип работы компонента KCFM
Используя исходный код программы, которую требуется контролировать, возможно построить граф потока управления (Control Flow Graph, CFG) этой программы. Этот граф определяет полный набор системных вызовов и вызовов библиотечных функций, которые могут быть выполнены во время исполнения программы, а также все возможные последовательности их выполнения. Построение CFG происходит во время сборки программы.
Во время работы процесса (исполняющейся программы) отслеживаются вызовы функций и IPC-вызовы, выполняемые процессом. При обнаружении несоответствия в работе (аномалии) программы ожидаемому поведению компонент KCFM позволяет остановить и перезапустить контролируемую программу.
Важно! Компонент KCFM является экспериментальным и работает с ограничениями, описанными ниже. Этот компонент доступен пользователям для тестирования и предоставления отзывов.
Ограничения в экспериментальной версии компонента KCFM
Компонент KCFM имеет следующие ограничения:
Состав компонента KCFM
Компонент представляет собой набор следующих файлов:
/opt/KasperskyOS-Community-Edition-<platform>-<version>/toolchain/bin и /opt/KasperskyOS-Community-Edition-<platform>-<version>/sysroot-*-kos/bin./opt/KasperskyOS-Community-Edition-<platform>-<version>/sysroot-*-kos/include/kcfm.CMake-библиотеки для использования добавления модулей компонента KCFM в решение, расположенные в директории /opt/KasperskyOS-Community-Edition-<platform>-<version>/toolchain/lib/cmake/kcfm_tool./opt/KasperskyOS-Community-Edition-<platform>-<version>/examples/.Построение графа потока управления программы
Граф потока управления строится во время сборки прикладной программы, если в файл 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 в решение, необходимо:
Путь к файлу графа потока управления, построенного для контролируемой программы, задается с помощью переменной окружения FC_GRAPH_FILENAME.
Подробнее см. "Пример kcfm_http_server".
Обработка аномалий
При обнаружении аномалии, ее обработка выполняется модулем FlowMonitor из состава компонента KCFM. Чтобы добавить модуль FlowMonitor в решение, необходимо:
Имя контролируемого процесса задается в переменной окружения FM_ENTITY_NAME.
Контролируемый процесс не должен запускаться с помощью Einit, так как он будет запущен модулем FlowMonitor, который использует для этого системную программу ExecutionManager.
Модуль FlowMonitor выполняет следующие действия:
ExecutionManager;ExecutionManager;ExecutionManager;FlowChecker. В этом случае модуль FlowMonitor выполняет следующие действия:Формирование политики безопасности
Компонент KCFM также позволяет автоматически сформировать часть политики безопасности решения в виде PSL-файла на основе исходного кода программы. В этом PSL-файле будут перечислены и разрешены все IPC-вызовы служб ядра и интерфейсов системной программы VFS, используемые в коде программы. Политика безопасности формируется так, чтобы разрешить программе доступ к используемым IPC-вызовам и запретить ко всем неиспользуемым.
Чтобы сгенерировать такой PSL-файл, необходимо в файл CMakeLists.txt для сборки программы добавить CMake-команду kcfm_generate_audit_policy(). Созданный PSL-файл необходимо включить в описание политики безопасности решения.
Подробнее см. "Пример kcfm_hello".
В начало