14.54M
Category: internetinternet

Secure Platform Components Development

1.

Результаты Q1-Q2 2024
Secure Platform
Components
Development
Вадим Карасев

2.

Команда
SPD\Components
ALM
StoNe
Multimedia
Graphics
Team 1
Audio/Video
Team 2
Middleware
Crypto
https://confluence.kaspersky.com/display/FTSPD/2024H1+Components+res

3.

ALM

4.

Результаты Q1-Q2 2024
1.
Реализовали MVP менеджера логических томов для нужд хранилищ
приложений
2.
Добавили поддержку Runtime Configuration в Package Manager
3.
Провели фаззинг-тестирование для компонентов ALM в рамках релиза
KISG 3.1.0
4.
Провели глубокий рефакторинг Execution Manager
5.
Реализовали в Execution Manager’е новый интерфейс ProcessControl
[позволяет оперировать не бинарными файлами, а более общей
концепцией под названием «Run Configuration», которая описывается в
манифесте приложения и позволяет запускать один и тот же
исполняемый файл с разным окружением]
6.
Реализовали пример на Rust
[пример состоит из клиента, делающего запрос к Execution Manager’у
на запуск приложения и самого запускаемого приложения]
7.
Зафиксировали схему подписи kpa-пакетов в виде ADR
https://confluence.kaspersky.com/display/FTSPD/KPA+Signature+Sc
heme

5.

Планы на Q3-Q4 2024
1.
Документировать схему распространения и подписи kpa-пакетов
2.
Изучить возможность реализации изолированных хранилищ данных с использованием
менеджера логических томов
3.
Добавить возможность настройки окружения процесса с помощью полей манифеста
(VFS, BlobContainer, etc)
4.
Запуск приложений по зависимостям
5.
Подготовить архитектуру и POC поддержки многопользовательского режима в
KasperskyOS
6.
Реализация PoC Bootstrapper of User Space (в рамках работ по Mininmal KOS)
7.
Оптимизировать процесс проверки подписи kpa-пакетов

6.

Multimedia

7.

Графика. Результаты Q1-Q2 2024
CR 6965784
Запустить KasperskyOS на чипе
RockChip RK3588 - gpu - PoC scope
2023
CR 6938494
[Dell Wyse 5070] Полноценная
поддержка Graphics
CR 6938514
[Dell Optiplex 3000] Полноценная
поддержка Graphics:
• Display Port- готов. HDMI –поставили
на паузу вместе с CR
CR 7574630
Реализация драйвера дисплея
(фреймбуфера) fb_hw с получением
информации о фреймбуфере из
регистров устройства без модификации
7

8.

Графика. Активные задачи
CR 7251878
Поддержка драйвера дисплея для
MT6771 (AYYA T1)
CR 5994890
Поддержка использования
GPU UI сущностями
CR 4078987
Wayland transport refactoring PoC +
meta-compositor prototype
8

9.

Мультимедиа. Результаты Q1-Q2 2024
9
Выполнено
CR 5978689
[CR][KTC][Audio][Multimedia]
Иммуннизировать аудио-подсистему
CR 5978688
[CR][KTC][Audio][Multimedia]
Поддержать USB гарнитуру
CR 7331188
[CR][KTC] Поддержать h264 encoder в
ffmpeg
CR 7482725
[CR][KTC] Добавить в KB
компилятор nasm

10.

Мультимедия. Активные задачи
10
В процессе
CR 7399058
[CR][Mobile] Поддержка функционала
Camera Preview со стороны
графической подсистемы в KOS:
• Интеграция
CR 5978688
[KTC][Multimedia][Audio][CR]
Производительность звуковой
подсистемы:
• Исследование
CR 5830164
[CR][KTC][Video][Multimedia]
поддержка USB камеры для
TONK:
• Интеграция

11.

Иные активности Q1-Q2 2024
Планы Q3-Q4 2024
CR 7478139
CR 5830167
Добавить конфигурационные файлы
Gerrit code-owners в репозитории
содержащие код Components
[CR][KTC][Video] Обеспечить
производительность видеоподсистемы
CR 7510259
11
CR 6180952
[CR][KISG] Проверка KISG SDK 3.1.0
на отсутствие нежелательной
информации
[CR][KTC][Video] [Multimedia]
Обеспечить готовность видеоподсистемы для камеры к
кибериммунизации
CR 7244293
CR 7584751
[CR][KTC] Разработать фаззинг тесты
для wayland
[CR][Mobile] Исследование возможности
добавления в интерфейс опции
отключения дисплея мобильного продукта
на базе MT6765 без отключения тач
панели (пока не приоритезировано)

12.

Storage & Network
(StoNe)

13.

Общие работы Q1-Q2 2024:
Улучшили работу с таблицами маршрутизации теперь можно работать с таблицами
любого размера.
Реализовали алгоритм работы ресолвера с параллельным опросом всех серверов
в списке.
Добавили и реализовали конфигурирование лимитов для vfs-клиента через mconf.
Обновили Москито.
Обновили RUMP.
Реализовали возможность конфигурирования набора протоколов,
поддерживаемых сетевым стеком.
Актуализировали отчёты фазинга VFS на текущей кодовой базе.
Фаззинг сетевого стека. Сетевые протоколы (ARP,IP,TCP,ICMP)

14.

VFS.
Перешли на rtl_assert в место vfs_assert
Сделали настраиваемой зависимость от terminal.
Изменение поведения DNS резолвера для обнаружения изменений конфигурации.
Удалили использование handle_set из кода VFS.
FAT.
Существенно переработали собственную реализацию этой ФС.
Переделали механизм формирования псевдо-inode.
Реализовали fsync и dfatasync.
Change Request 7137078: [CR][KTC] Поддержка VFAT в продуктовом качестве
Улучшили EXT2/3/4.
Сделали полностью собственную реализацию ext2/3/4 свободную от
GPL.
Увеличили уровень доверия к коду ext2/3/4.

15.

Relay-VFS.
Библиотека RelayVFS представляет собой
mini-фильтр для всех операций VFS, с
возможностью пред и пост обработки
запросов. С её помощью можно создавать
каскады VFS и связывать множественные
VFS в любой топологии.
ссылки:
Архревью — relay vfs
Пример использования - RFC-NNNN File Access Control

16.

Subscribe/unsubscribe.
Реализовали механизм отслеживания
событий изменения файлов и каталогов
основанный на нативных нотификациях.
Теперь можно следить за файловыми
объектам.

17.

Реализовали Объекты Открытия в VFS.
«Объекты Открытия VFS» (vfs_object), это то, что
открывают выполняя операцию открытия файла
или директории.
Создавая сетевой сокет также создают ОО.
Одновременно открыть один и тот же Объект могут
разные процессы, и он будет единый для всех
клиентов VFS.
Изменение такого Объекта отразиться для всех
Открытий сразу.
Например при переименовании открытого файла,
сам VFS-объект останется тем же.
С VFS-объектом непосредственно связан SID.

18.

Сейчас в работе.
Реализация внутренней подсистемы конфигурирования VFS.
Метрики производительности и использования ресурсов для файловых систем, сети и VFS в
общем, на оборудовании.
EXT2/3/4
Асинхронная запись при работе без журнала.
Внедрение многопоточности.
Рефакторинг с целью повышения скорости работы.
Выделяем единый кеширующий слой для всех фс.
Увеличение производительности
Сквозные каналы от клиента до VFS-сервера включая RelayVFS.
Для сетевых операций внедряем групповые i/o операции чтения/записи мелких буферов.

19.

Планы
Автовостановление ext2/3/4 при монтировании.
Network Manager.
Расширенное управление dhcp клиентом (настройка и получение
текущего состояния).
Механизм проверки соединения с инетом.
Поддержка OpenVPN.
Поддержка хотплага флешек в VFS.
NPF статистика применения правил.
Продолжить писать документацию.
Таймстампы для запросов к VFS.

20.

Более отдалённые планы.
Реализовать возможность динамического отключения/подключения
клиента в VFS.
Реализация VPN API для VPN-вендоров
Расширенная статистика VFS
Тестирование ext2/3/4 и FAT, сложные прикладные сценарии.
Добавление требуемого функционала для поддержки ACL в KSM.
Расширение функционала RelayVFS.
Версионирование VFS.

21.

Middleware

22.

Q1-Q2 динамические библиотеки
Завершили исследование производительности подсистемы динамических
библиотек:
Выполнили профилирование загрузки телефона
Сбор статистики в BlobContainer и ld.so с использованием перфкаунтеров
Результаты для BC и ld.so
Исследовали повторную загрузку библиотек разными процессами
Имплементировали для BlobContainer метод получения статистики DumpStat и тест
Оптимизировали пути поиска библиотек
Добавили параллельную обработку IPC запросов в BC и тест
Итоги:
Проблем в подсистеме динамических библиотек не выявили
Добавленные оптимизации заметных улучшений не дали

23.

Q1-Q2 динамические библиотеки
ld.so, libc и pthread в виде динамической библиотеки:
Позволит уменьшить потребление памяти и упростить портирование 3rd party библиотек
Сейчас статически линкуемые к каждому процессу библиотеки для x86 занимают около 1.9Мб
Дизайн динамического загрузчика v2.0
Анализ libpthread.so
В активной фазе, продолжим в Q3
Развитие BlobContainer и ld.so:
RFC схема загрузки приложений с использованием ld.so
Преспективное развите BC

24.

Q1-Q2 Dump collector
Стабилизировали работу DC и libunwind
Провели работу по устранению утечек памяти и хендлов, написали тест
Сформулировали требования к исполняемым файлам при работе с DC
Выделение серверной библиотеки DC:
CR-зависимость для CR-а на имплементацию функционала Core dump-ов
Упростит написание тестов DC
Позволит иметь несколько экземпляров DumpCollector аналогично BlobContainer
Начали работу и закончим в первой половине Q3
Работа DC в условиях Out-of-Memory:
Требование продуктовых команд
Требование распространяется на используемые DC-ом компоненты
Провели исследование и готовим дополнительные CR-ы на другие команды
Продолжим в Q3

25.

Q1-Q2 Rust
Подготовка к обновлению Rust и LLVM:
Отвязали Rust от системной версии LLVM
Команда Core обновила LLVM
Готовы обновлять Rust
Исправление CVE уязвимостей в Rust тулчейне при подготовке релиза KISG:
Проанализировали список уязвимостей и сузили набор крейтов для исправления
Написали скрипт для автоматизации исправления дерева зависимостей
За разумное время получить рабочий Rust тулчейн не получилось
Подготовили отчет, у команды KISG получилось согласовать Rust тулчейн с уязвимыми крейтами.
Единственный нормальный способ устранения уязвимостей — полноценное обновление Rust.
Дополнительные примеры:
Приложение на языке C, слинкованное с библиотекой на языке Rust
Приложение на языке Rust, слинкованное с библиотекой на языке C
Приложение на языке Rust, собранное без использования стандартной библиотеки
Закончим работу в Q3
Передаем поддержку RUST в команду SPD/Tools.

26.

Q1-Q2 обновления библиотек
Boost — выполнено:
Обновили до 1.85
Оптимизировали сборочные скрипты
Доработали наш тулинг для автоматизации обновления 3rd party библиотек
Создали конфиг boost-minimal для тестирования Boost
Тестсьют Boost:
Выполнили исследование по портированию тестсьюта
Добились сборки тестсьюта
Добились выполнения тестов без параметров
Boost — продолжим в Q3:
Выполнение тестов с параметрами
Выполнение тестов с ресурсами
На данный момент заблокированы работами других команд
Libevdev — продолжим в Q3:
Обновили до 1.12.1
Переносим KOS-специфичные патчи
Планируем перенести из kosdev-mono в компоненты и забрать ответственность себе

27.

Q1-Q2 Qt
Исследование проброса комбинаций горячих клавиш в Citrix:
Разобрались с конфигурированием состава языков и их переключением при старте системы через
конфигурацию xkb
Доработали Qt тесты для проверки нажатия отдельных клавиш с учетом использования
модификаторов
Исследовали проблему конфигурирования состава языка в runtime
Описали особенности взаимодействия qtwayland и клавиатуры
Участие в подготовке релиза тонкого клиента:
Расширили набор цветовых конфигураций в kosfb для поддержки монитора Digma Progress 22A501F
Решили проблемы при двухмониторной конфигурации
Решили проблемы связанные с пробуждением монитора из состояния сна
Внесение изменений в Qt:
Поделили явно ответственность между командами
Описали процесс
Рефакторинг примеров Qt:
qt_http, qt_calculator, qt_graphicaleffects,
qt_openglwindow, qt_player. qt_qt3d
Удалили Env
Перевели на Qt6
Qt - конфигурирование раскладок клавиатуры в runtime (в процессе)

28.

Q1-Q2 дополнительная активность
Исследование по перфомансу тестов на CI:
Заметили, что иногда тесты аномально долго выполняются
Создали группу unstable тестов для сбора статистики
Собираем статистику для ktt, meow тестов, разных архитектур, статики, динамики и прочих кейсов
Временно на паузе, страница исследования
Работы связанные со сборкой и билдсистемой:
PoC сборки некоторых хостовых компонентов в KB с помощью Nix
Статья с идеями использования предсобранных компонентов для ускорения сборки
Оптимизация тулчейновых зависимостей
Работы над ktool

29.

Q3-Q4 планы
Примеры на Rust-е
ld.so, libc и pthread в виде динамической библиотеки
DumpCollector Out-of-memory
DumpCollector core dumps
Обновление Qt

30.

Полезные ссылки
ld.so, libc и pthread в виде динамической библиотеки
Qt
Использование предсобранных компонентов для ускорения сборки
Анализ скорости загрузки телефона
Описание qtwayland
Правила коммита в Qt репозитории
Идеи по билдсистеме
Дизайн динамического загрузчика v2.0
Анализ libpthread.so
RFC схема загрузки приложений с использованием ld.so
Преспективное развите BC
BlobContainer
ld.so
DumpCollector
Требования к исполняемым файлам при работе с Dump Collector

31.

Спасибо за внимание!
Время для вопросов
English     Русский Rules