Пример kcfm_http_server

12 января 2026

ID http_server_kcfm_example

Пример демонстрирует работу с компонентом KCFM в решении на базе KasperskyOS. Для программы, выполняющей функции веб-сервера, выполняется мониторинг работоспособности с помощью компонента KCFM.

Директория примера в SDK

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

/opt/KasperskyOS-Community-Edition-<platform>-<version>/examples/kcfm_http_server

Список программ

  • Klog – системная программа, выполняющая аудит безопасности.
  • ExecMgrEntity – системная программа, управляющая жизненным циклом процессов.
  • BlobContainer – системная программа, предназначенная для загрузки бинарных данных в память и используемая программой ExecutionManager для запуска процессов.
  • FlowChecker – программа, являющаяся модулем компонента KCFM, которая на основе аудита безопасности обнаруживает аномалии поведения прикладной программы Server. В случае обнаружения аномалии FlowChecker сообщает об этом FlowMonitor.
  • FlowMonitor – программа, являющаяся модулем компонента KCFM, который обеспечивает контроль выполнения программы Server, а именно: обеспечивает запуск программы и обработку сообщения о выявлении аномалии.
  • VfsNet – системная программа, поддерживающая сетевые протоколы.
  • Dhcpcd – системная программа, реализующая DHCP-клиент, который в фоновом режиме получает параметры сетевых интерфейсов от внешнего DHCP-сервера и передает их виртуальной файловой системе.
  • VfsSdCardFs – системная программа, поддерживающая файловую систему SD-карт.
  • Server – контролируемая прикладная программа, выполняющая функции веб-сервера.
  • DCM – системная программа, позволяющая динамически создавать IPC-каналы.
  • EntropyEntity – системная программа, реализующая генератор случайных чисел.
  • DNetSrv – драйвер сетевой карты.
  • SDCard – драйвер SD-карты.
  • BSP – пакет поддержки аппаратной платформы (англ. Board Support Package). Обеспечивает кросс-платформенную настройку периферии.

При сборке примера для целевой аппаратной платформы в решение автоматически включаются платформенно-зависимые драйверы:

  • NameServer – для Raspberry Pi 4 B и Radxa ROCK 3A.
  • Bcm2711MboxArmToVc – драйвер для работы с сопроцессором VideoCore (VC6) через технологию mailbox для Raspberry Pi 4 B.

Описание инициализации

Файл описания инициализации решения init.yaml генерируется в процессе сборки решения на основе шаблона ./einit/src/init.yaml.in. Макросы вида @INIT_*@, которые содержатся в шаблоне, автоматически раскрываются в итоговом файле init.yaml. Подробнее см. "Шаблон init.yaml.in".

Описание политики безопасности

Файл security.psl содержит описание политики безопасности решения и генерируется в процессе сборки решения на основе шаблона:

./einit/src/security.psl.in

Макрос @INIT_EXTERNAL_ENTITIES@ в шаблоне security.psl.in при сборке решения заменяется на список системных программ, поставляемых в составе KasperskyOS SDK.

Файл logrr.psl содержит описание политики безопасности и включен в шаблон security.psl.in через декларацию use.

Подробнее см. "Шаблон security.psl.in".

Описание политики безопасности решения в этом примере разрешает любые взаимодействия процессов между собой и ядром. Эту политику можно использовать только в качестве заглушки на ранних стадиях разработки решения, чтобы модуль безопасности не препятствовал взаимодействиям.

Дополнительно в файл hello/CMakeLists.txt для сборки программы Server добавлена CMake-команда kcfm_generate_default_policy(). Эта команда автоматически формирует часть политики безопасности решения в виде PSL-файла на основе исходного кода программы. В этом PSL-файле перечислены и разрешены все IPC-вызовы служб ядра и интерфейсов системной программы VFS, используемые в коде программы. Политика безопасности формируется так чтобы разрешить программе доступ к используемым IPC-вызовам и запретить ко всем неиспользуемым. PSL-файл создается в директории ./build/server/Server и включить в описание политики безопасности решения следующим макросом в файле security.psl.in:

@KCFM_DEFAULT_POLICY@

Также в файл hello/CMakeLists.txt для сборки программы Server добавлена CMake-команда kcfm_generate_audit_policy(), которая создает профили аудита безопасности, необходимые для того, чтобы компонент KCFM мог получить доступ данным аудита безопасности контролируемой программы. Эти профили аудита добавляются в политику безопасности решения следующим макросом в файле security.psl.in:

@KCFM_AUDIT_POLICY@

Ресурсы

В директории ./resources/xdl/server расположен файл Server.edl – EDL-описание программы Server.

В директории ./resources/hdd/etc расположены файлы конфигурации для программ VfsNet и Dhcpcd: hosts и dhcpcd.conf соответственно.

Директория ./resources/hdd/var/db/dhcpcd используется программой Dhcpcd для хранения данных о подключении к сети.

В директории ./resources/hdd/certs расположены сертификаты, которые могут быть использованы для поддержки https-соединения. Это возможно только при подключении компонента TLSTerminator. Подробнее о том, как настроить TLS соединение см. "Пример Secure Login".

В директории ./resources/hdd/www расположены файлы, используемые программой Server в процессе работы веб-сервера.

Сценарий работы

  1. В файл hello/CMakeLists.txt для сборки программы Server добавлены следующие CMake-команды:
    • kcfm_generate_audit_policy() для автоматического формирования части политики безопасности решения;
    • kcfm_generate_signature() для построения графа потока управления.
  2. При сборке программы Server формируется часть политики информации в файле build/_headers_/hello/Hello/kcfmDefaultPolicy.psl и файлы, содержащие граф потока управления в директории build/hello/kcfm_generated.
  3. После сборки образа решения программа Server запускает веб-сервер, доступный по адресу http://localhost:1106.
  4. При переходе по адресу http://localhost:1106 в браузере открывается веб-страница, содержащая следующие кнопки:
    • Info – открывает сайт https://www.kaspersky.com/.
    • Data – открывает локальную веб-страницу data.html.
    • Stop – останавливает программу Server. Компонент KCFM обнаруживает остановку программы и перезапускает ее, так как остановка является аномалией в поведении программы.
    • Hack – вызывает переполнение буфера в программе Server. Компонент KCFM обнаруживает аномалию в поведении программы и перезапускает ее.
    • Static lib – вызывает функцию из статической библиотеки fs_lib, скомпанованной с программой Server.

Сборка и запуск примера

Для сборки и запуска примера используется система CMake из состава KasperskyOS Community Edition.

См. "Сборка и запуск примеров".

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!