Постоянно возрастающая сложность программных систем приводит к необходимости уделения повышенного внимания к процессам обеспечения их качества. Применение методов тестирования программ как правило не позволяет обнаруживать критические ошибки реализации программы, поскольку программисты и специалисты по тестированию проверяют заранее известный набор требований к функционированию системы и её компонент и не имеют возможности проведения тестирования на всём множестве значений внешних данных программы или компонента. Государственные стандарты Российской Федерации регламентируют использование автоматических инструментов анализа программ в цикле разработки безопасного ПО. В докладе производится обзор методов автоматического анализа программ и способов их применения для обеспечения качества программных систем.
Защита ядра Linux — очень сложная предметная область. Она включает большое количество взаимосвязанных понятий, а именно: классы уязвимостей, техники их эксплуатации для проведения атак, механизмы выявления ошибок, технологии защиты. Александр Попов разработал карту средств защиты ядра Linux, которая отражает взаимосвязи между перечисленными выше понятиями. В докладе он даст обзор текущего состояния безопасности ядра Linux используя данную карту: https://github.com/a13xp0p0v/linux-kernel-defence-map
В докладе будет представлено описание модели управления доступом к электронным документам компьютерных систем, обеспечивающей выполнение требований мандатного контроля целостности и конфиденциальности без учета информационных потоков по времени. Отличительной особенностью модели является учет особенностей жизненного цикла электронных документов и порядка работы с ними. Для задания модели управления доступом был выбран язык темпоральной логики действий Лэмпорта, поскольку его нотация представляется наиболее близкой к общепринятой математической, выразительные возможности и инструментальные средства позволяют описывать и верифицировать системы, заданные в виде конечных автоматов.
В модели определены следующие действия: создание/удаление субъекта, чтение, запись, дозапись ("слепая" запись), создание/удаление объекта, назначение/удаление прав доступа, вложение объекта в объект, исключение вложенного объекта, утверждение объекта (документа), отправка объекта (документа) в архив, отмена действия утвержденного объекта (документа), копирование объекта (документа). Также определены следующие инварианты: проверки типов (включает в себя проверку соответствия всех полей объектов, также проверку соответствия типу субъектов и проверку уникальности идентификаторов субъектов и объектов) и проверки безопасности (включает в себя проверку меток конфиденциальности и целостности взаимодействующих субъектов и объектов, а также корректность процедуры назначения прав).
Доклад рассказывает о том, как, опираясь на уже существующие популярные Open Source библиотеки, можно быстро и успешно решать задачи добавления поддержки национальных стандартов, о том, что можно и чего нельзя ожидать от сообщества в этом направлении.
При сертификации средств защиты информации с 1 июня 2019 г. подлежат применению «Требования по безопасности информации, устанавливающие уровни доверия к средствам технической защиты информации и средствам обеспечения безопасности информационных технологий», утверждённые приказом ФСТЭК России от 30.07.2018 № 131, и «Методика выявления уязвимостей и недекларированных возможностей в программном обеспечении», утверждённая ФСТЭК России 11.02.2019 [1]. Этими документами закрепляются требования по применению при сертификации средств защиты информации широкого спектра методов статического и динамического анализа программного кода, эффективная реализация которых невозможна без применения соответствующих инструментальных средств.
По скольку отечественная защищённая операционная система специального назначения (ОССН) Astra Linux Special Edition [2] уже много лет сертифицирована по самым высоким классам защиты [3], то у её разработчика ООО «РусБИТех-Астра» (ГК Astra Linux) накоплен существенный опыт по применению методов и инструментальных средств, позволяющих достичь такое высокое доверие к механизмам защиты ОССН.
Для этого в связи с значительным объёмом подлежащего анализу программного кода ОССН с целью обеспечения автоматизации процесса его сборки, верификации и тестирования используется практика непрерывной интеграции (continuous integration) в инструментальной среде GitLab [4], в которой в том числе осуществляется:
Статический анализ кода осуществляется инструментальными средствами cppcheck [6] и Svace [7]. Использование различных анализаторов программного кода и обработка их результатов в единой среде GitLab позволяют более точно выявлять ошибки, в том числе уменьшить число ложных срабатываний самих анализаторов. Например, в результате статического анализа обновлений кода модуля PARSEC с помощью cppcheck и Svace ими было дано несколько сотен предупреждений о возможных ошибках, из которых при последующем ручном анализе кода ошибками той или иной степени критичности были признаны около 30 (при этом cppcheck и Svace, как правило, обнаруживали разные ошибки), что позволило своевременно устранить эти ошибки при окончательной доработке модуля PARSEC.
Для фаззинга программного кода ОССН также используются несколько инструментальных средств. Применительно к библиотечным вызовам применяется libFuzzer [8], для пользовательских приложений — AFL-фаззер [9], для фаззинга ядра – инструмент Syzkaller4Astra (специально модифицированный с учётом специфики ОССН фаззер syzkaller [10]). Например, с помощью Syzkaller4Astra удалось выявить и устранить десятки ошибок в нескольких модулях ядра, реализующих механизмы защиты ОССН, а также в других модулях, не относящихся к механизмам защиты.
Техника ручного анализ кода в первую очередь применятся к программному коду механизмов защиты, в которых были обнаружены ошибки с использованием перечисленных инструментальных средств, для дальнейшей оценки их степени критичности и последующего устранения.
Помимо рассмотренных инструментальных средств для обеспечения доверия к ОССН используется разработанный ИСП РАН комплекс инструментальных средств AstraVer Toolset [11] верификации формальной модели управления доступом ОССН (МРОСЛ ДП-модели) и её реализации непосредственно в программном коде [12].
Все перечисленное позволяет говорить не только о выполнении при разработке ОССН требований актуальных нормативных документов ФСТЭК России [1], но также о том, что ОССН стала по сути первой отечественной промышленной операционной системой, для достижения доверия к механизмам защиты которой были применены самые современные инструментальные средства, благодаря чему были развиты заложенные в эти средства научно обоснованные технологии.
При создании гипервизора QP VMM разработчики НТП «Криптософт» столкнулись с необходимостью анализа исполнения гипервизором кода виртуальных машин. Для этого был разработан отладчик PathFinder. Запуск виртуальной машины с разрешенной отладкой позволяет отладчику получать контроль над виртуальной машиной. PathFinder имеет возможность анализировать состояние виртуальной машины и управлять им. PathFinder выгодно отличается от обычных отладчиков, поскольку способен отлаживать моменты переключения режимов работы процессора, обработку программных и аппаратных прерываний, настройку сегментов и таблиц страниц, а также другие операции, которые не под силу выполнить обычному отладчику.
Разработка ПО критически важных систем имеет дело с повышенными требованиями в части функциональной безопасности и защиты от кибер-угроз. Оберон-технологии представляют собой широкий спектр решений подобных задач как с использованием, так и без использования ОС . Исключение избыточной сложности в сочетании с модульностью и жесткой типизацией дает возможность построения настраиваемых компиляторов для определенных задач.
Операционная система обеспечивает базовый уровень безопасности устройства или решения, в основе которого она лежит. Различные решения и устройства предъявляют разные и часто не сравнимые между собой требования к безопасности, а значит и к ОС. Для разработчиков ОС и системного ПО важно предельно ясно описать не только реализуемые этим ПО функции безопасности, но и стратегию развития ПО, его поддержки и сопровождения от версии к версии.
Другим важным требованиям к базовому ПО является описание поддерживаемых им специфических аспектов применения (такие как исполнение в режиме реального времени), на которые не оказывают влияния должным образом реализованные механизмы безопасности, и ограничений (например, по требуемым аппаратным ресурсам).
Зрелая с точки зрения безопасности система характеризуется достаточным набором мер защиты, которые в то же самое время не влияют негативно на её функциональность. Модель зрелости безопасности интернета вещей (IoT Security Maturity Model, IoT SMM), разработанная Консорциумом промышленного интернета (Industrial Internet Consortium) при участии специалистов Лаборатории Касперского, предназначена для коммуникации требований безопасности к системам интернета вещей от представителей бизнеса к техническим специалистов. В докладе предлагается способ представления возможностей применения операционных систем на основе описания целевых профилей зрелости безопасности для этих операционных систем.
Модель зрелости безопасности подходит так же для установления, согласования и ограничения требований к целевой платформе в рамках технического задания, оценки состояния безопасности существующих систем относительно определенного профиля и неформальной оценки гарантий, предоставляемых системой относительно различных аспектов безопасности в течение ее жизненного цикла.
Доклад рассматривает автоматизацию процесса обнаружения и анализа ошибок, выявляемых в процессе эксплуатации решений Virtuozzo. Целью автоматизации является предоставление разработчикам как можно более полной и подробной, но не избыточной информации, необходимой для решения проблемы. Отдельное внимание уделяется проблемам, возникающим при обработке ошибок в крупных гиперконвергентных инфраструктурах.
В докладе рассмотрены задачи и проблемы автоматического тестирования дистрибутива операционной системы. Кратко рассказывается о существующих механизмах реализации этого процесса и о причинах собственной разработки комплекса. Рассмотрены инструменты и средства используемые в процессе создания среды, и ее компоненты. В заключении рассказывается о достоинствах и будущем расширении системы.
В докладе будет рассказано об инструментах автоматизации поддержки пакетов программ в Альт Linux и о репозитории autoimports с автоматизацией полного цикла сопровождения пакетов на их основе.
В докладе будут рассмотренны особенности портов ALT на архитектуру MIPS и сборочной инфраструктуры, применяемой для их разработки.
В докладе представлен подход к созданию инструментов управления деревом объектов по протоколу LDAP с помощью стандартных средств администрирования в POSIX-совместимых операционных системах. Данный подход представлен на примере решения для управления объектами, их свойствами и специальными операциями над ними (например, смена пароля) в Active Directory.
Для задач импортозамещения является актуальным вопрос портирования современного дистрибутива Linux широкого назначения на отечественную архитектуру процессора общего назначения Эльбрус (e2k), работа с которой имеет как технические, так и организационные особенности. О них и пойдёт речь в данном докладе, в частности, - о родном режиме сборки программного обеспечения на платформе Эльбрус, о разделении компонент системы программирования, о взаимодействии с upstream проектов СПО, об особенностях работы с компилятором lcc и архитектурных отличиях e2k с точки зрения сборки ПО.
Создание надежных беспилотных летательных аппаратов (дронов) - важная задача в развитии науки и техники, ведь такие беспилотники могут быть использованы как в реализации задач цифровой экономики, так и при защите безопасности. В данном исследовании предполагается сборка дрона из дешевых комплектующих с целью получения прототипа аппаратной части и разработка программного решения полётного контроллера с увеличенными требованиями надежности, который будет в какой-то мере отвечать стандартам программного обеспечения авионики ARINC 653, решать задачи удаленного управления и автопилотирования, использовать существующие программные наработки с открытым исходным кодом, а также служить моделью для преподавания курсов проектирования компонентов операционных систем и верификации программного обеспечения.
В докладе будет проведен анализ существующих дронов, описано решение для самостоятельной сборки состоящее из рамы, четырех полётных двигателей и бесщеточных электронных регуляторов хода, компаса, датчика GPS координат и устройство передачи радио-телеметрии и удаленного управления.
Будет описано свободное программное обеспечение Ardupilot (APM), соотвествующий контроллер и будет предложено использование в качестве целевого полётного контроллера платы Raspberry Pi, из-за отличного соотношения цены и производительности, ARM архитектуры, интересной для изучения, возможность реализации сложной логики и подключения периферийных устройств (модули, датчики, камера).
Сегодняшним стандартом надежного программного обеспечения для полётных контроллеров являются партиционированные (partitioning) операционные системы реального времени, которые способны с ожидаемой скоростью реагировать на поступающие от аппаратуры события и разделять процессорное время и память между изолированными рабочими процессами. Хорошим примером такой ОС является POK, которая содержит в своем репозитории пример проектирования системы на основе Ardupilot в качестве рекомендаций. В России на основе POK разрабатывается ОС для реальных летательных аппаратов - JetOS, которая, по сообщениям, уже портирована на архитектуру ARM. В докладе будет рассмотрены вопросы портирования существующего программного кода на партиционированные ОС ARM архитектуры (все на основе открытых технологий).
В докладе будут рассмотрены вопросы обеспечения качества разработки, программной верификации таких полетных систем, приведены примеры проверяемых свойств безопастности и надежности.
Для упрощения повторного использования кода используется компонентно-ориентированный подход к разработке. С целью реализации этого подхода в проекте FX-RTOS был разработан инструмент FX-DJ, который, используя метаданные внутри исходных текстов, позволяет управлять сборкой и отслеживать зависимости между компонентами. При наличии нескольких вариантов одного компонента, выбор делается на основе внешней конфигурационной информации. В докладе рассматриваются принципы работы инструмента, а также опыт его применения в проекте FX-RTOS для создания ядра ОС с конфигурируемой архитектурой, способной масштабироваться на системы разных классов производительности. FX-DJ свободно распространяется под лицензией BSD.
ОС Apertis - это FOSS (Free and open source) GNU/Linux платформа, основанная на базе Debian/Ubuntu и предназначенная для embedded устройств. В докладе я хочу провести обзор ключевых и интересных компонентов Apertis, таких как: безопасные и надежные OTA/offline апгрейды и откаты ОС на базе libostree, утилита для создания дисковых образов Debos, а также краткий обзор CI инфраструктуры. Все компоненты, которые используются в ОС Apertis, открыты и доступны для использования как по-отдельности, так и в составе других проектов, а большая часть изменений становятся частью апстрима.
В докладе рассматривается опыт разработки специализированной системы сборки и языка описания для нее. Система сборки направлена на упрощение сертификации и тестирования программных систем, созданных с ее помощью. В докладе также рассказывается об опыте применения системы сборки Mybuild в составе открытого проекта по созданию RTOS для встроенных систем Embox.
В докладе рассмотрены средства трассировки ОС РВ семейства Багет, используемые в качестве инструментария отладки приложений реального времени. Приведено описание принципов реализации графического пользовательского интерфейса (GUI) программы просмотра и анализа протоколов событий (трасс), а также механизмов доступа к записям трассы и результатам ее вторичной обработки.
Одним из требований к организации процесса верификации авиационного ПО, содержащихся в документе RTCA DO-178C (и его российском аналоге - КТ-178C), является проведение анализа структурного покрытия исходного кода ПО. Такой анализ предполагает обеспечение сбора структурного покрытия, для чего используются соответствующие инструменты. Различные инструменты для сбора покрытия присутствуют на рынке уже довольно давно, однако лишь в немногих из них заявлена функциональность сбора покрытия связности по данным и управлению, при этом ни один из них не обеспечивает анализ покрытия связности по данным в той мере, в которой можно было бы считать их обеспечивающими соответствующее требование DO-178C. В докладе представляются результаты НИР по разработке инструментария сбора и анализа структурного покрытия, проводимых в последние годы в ГосНИИАС.
Встраиваемые операционные системы конфигурируются на этапе сборки, позволяя создать образ ОС, предназначенный для выполнения на определенной аппаратной платформе и нацеленный на выполнение фиксированных задач. Если проследить как требуется модифицировать ОС для выполнения различных задач на различных аппаратных платформах, то можно заметить, что чаще требуется модифицировать не всю ОС, а некоторые ее подсистемы. Например, сетевую или файловую подсистемы. Доклад посвящен способу декомпозиции частоизменяемых подсистем на компоненты. Данный способ позволяет гибко конструировать и конфигурировать указанные подсистемы. Компоненты слабо связаны и могут взаимодействовать только через заранее специфицированный интерфейс. Предлагаемый способ поддерживает следующие модификации композиции компонентов:
Предлагаемый модульный подход был успешно апробирован на ОСРВ JetOS при построении сетевой подсистемы. Файловая подсистема, основанная на модульном подходе находится в стадии разработки.
Конференция прошла 10-11 июня 2019 года.