Сложность киберфизических систем (cyber physical systems, CPS) растет по мере увеличения конвергенции ИТ-решений производства и бизнеса. Учитывая наличие у CPS множества взаимосвязанных функций, сетевых интерфейсов и свойств адаптивности, в случае несоблюдения требований при проектировании появляется риск ухудшения качества и возникновения юридической ответственности. Возможность прослеживания [1, 2] — одна из основ обеспечения качества, но, судя по нынешнему положению дел в различных отраслях, соответствующие процессы применяются редко. Прослеживаемость — инженерная концепция, позволяющая удостовериться, что система во всей ее полноте, включая документацию и тестовые случаи, соответствует изменениям, внесенным на различных этапах разработки. В большинстве случаев модели прослеживаемости по мере возрастания сложности систем не совершенствуются, не формализуются и не обновляются. Как следствие, возникают несогласованность, проблемы с техническим обслуживанием и безопасностью, растет количество кибератак [3]. Формальные методы обеспечения прослеживаемости — очевидное решение, но их применение может привести к задержке выпуска продукта на рынок, характеризуется высокими затратами и требует глубоких познаний. Многолетний опыт работы с критичными к безопасности CPS, от автомобильных до медицинских, показывает, что систематическое применение формальных методов — редкость по причине отсутствия готовых методик, квалификации специалистов, времени и необходимых инструментов. Для устранения этого пробела нужны более простые методы. Опишем такой метод на примере проверки безопасности конкретной киберфизической системы, но его можно применять и в других сферах, например, при проверке архитектурных моделей.

Формальные методы способствуют получению надежных и воспроизводимых результатов при тестировании, позволяя придерживаться четких правил. Описываемый упрощенный формальный метод обеспечения прослеживаемости позволяет сбалансированно выполнять характерные для промышленности требования к качеству, трудозатратам, пригодности и возможности аудита на протяжении жизненного цикла. Такая методика успешно применяется в различных проектах киберфизических систем в автомобилестроении и медицине. Для демонстрации практической пригодности опишем ее применение при тестировании безопасности медицинской CPS — инсулиновой помпы, от безопасного функционирования которой зависят многие сервисы и устройства.

Широко применяемый принцип перебора недостаточно эффективен для тестирования безопасности [3] — перебор обходится дорого и характеризуется бессистемностью, поэтому для проверки безопасности нужен формальный метод, например комплексное тестирование на проникновение по принципу «серого ящика» (пентестирование) на основе формальной модели прослеживаемости. Метод учитывает негативные тестовые случаи, такие как использование системы не по назначению, злоупотребления и создание помех. При этом благодаря балансу затрат и эффективности удается с минимальными усилиями обнаружить исчерпывающий перечень уязвимостей. При наличии механизма обеспечения прослеживаемости тестовые случаи полностью покрывают требования. При достаточном покрытии нужно меньше тестовых случаев для обнаружения уязвимости, так как уменьшается риск ложноположительных срабатываний и выполнения лишних тестов. Диаграмма дерева атаки будет более точной и ближе соответствовать архитектуре, что способствует формированию минимально необходимого набора тестовых случаев и уменьшению трудозатрат на тестирование.

Прослеживаемость дает преимущества при разработке ПО с точки зрения полноты, покрытия и согласованности. Эти характеристики можно измерять с помощью ключевых показателей эффективности (KPI), которыми разработчики могут руководствоваться для контроля и оптимизации процесса тестирования. Описываемая модель прослеживаемости соответствует функциональным требованиям серии стандартов ISO 250xx, а здесь она представлена применительно к безопасности конкретной CPS. При этом требования связываются с тестовыми случаями — обеспечивается горизонтальная прослеживаемость, но речь идет и о вертикальной прослеживаемости между различными уровнями абстракции, такими как системы, подсистемы и схемы, что позволяет составить систематизированный перечень всех уязвимостей на каждом уровне. Для обеспечения машиночитаемости и формализованного создания тестовых случаев и проверок прослеживаемости используются коммерчески доступные средства промышленного моделирования, такие как Rhapsody и Papyrus.

Модель трех пиков

Модель трех пиков [1] — фундаментальная концепция, положенная в основу модели прослеживаемости и расширяющая модель двух пиков [2], согласно которой действия разработки требований и моделирования решения взаимосвязаны и могут быть представлены в виде двухспиральной структуры. Модель трех пиков соединяет потребности, проектирование и тестирование для обеспечения согласованности с требованиями и наоборот (рис. 1). При этом используется концепция тест-ориентированной разработки требований [1] — каждое требование прослеживается как минимум до одного тестового случая. Таким образом обеспечивается прямая прослеживаемость с хорошим покрытием требований тестами, что помогает в комплексной оценке безопасности. Реализована и обратная прослеживаемость, когда после выполнения тестовых случаев дорабатываются соответствующие требования, чтобы исключить найденные уязвимости.

Рис. 1. Модель трех пиков

Для полной проверки системы необходимо контролировать соответствие требований тестовым случаям и наоборот. Для обеспечения безопасности при проектировании и в ходе жизненного цикла нужен формальный метод прослеживаемости [1, 3]. Неформальные методы на основе контрольных проверок и осмотров нельзя оценить ни на полноту, ни на корректность. Формальный метод задается синтаксисом и семантикой, позволяя автоматизировать процесс обеспечения прослеживаемости. Имеется множество исследований в области формальных методов моделирования требований, верификации и валидации, прослеживаемости между функциями и кодом, а также функциональной и нефункциональной прослеживаемости. Но что касается прослеживаемости между требованиями и тестовыми случаями для обеспечения безопасности, здесь имеет место пробел. Зачастую тестирование безопасности проводится на основе имеющегося опыта работы с наборами произвольных тестовых случаев, без систематического планирования и реализации устойчивой стратегии регрессии и покрытия. Для устранения этого пробела и был разработан упрощенный формальный метод обеспечения прослеживаемости, позволяющий реализовать систематизированную стратегию контроля безопасности. Метод способствует согласованности независимо от применяемых абстракций разработки и этапов жизненного цикла, а также достаточному покрытию требований тестами, позволяя сформировать полный перечень уязвимости.

В одном из исследований подчеркивается необходимость автоматического обеспечения прослеживаемости вместо ручного прослеживания требований до тестовых случаев. В качестве лучшей практики при этом рекомендуется создание среды прослеживаемости путем задания соответствующей гранулярности следа. Например, различные уровни гранулярности следа можно устанавливать с помощью диаграмм класса в языке Unified Modeling Language, используя пакеты, классы и методы. Исследователи также рекомендуют обеспечивать прослеживаемость требований на уровне «не более достаточного». Прослеживаемость обязательна для критичных к безопасности систем, но, с точки зрения экономической эффективности, необходим баланс потребностей и трудозатрат. В другой работе представлен формальный метод отслеживания требований до спецификаций на базе формальных методик, созданных ранее для разработки пользовательских требований и спецификаций поведения системы. В основе описываемого здесь механизма используется принцип прослеживаемости по сценарию, который предусматривает связь требований с артефактами: проектами, кодом и тестами. Сценарии выводятся на основе функциональности и соотносятся с тестовыми случаями. Используются также антисценарии — попытки компрометировать систему с целью нанесения ущерба. Антисценариям присваивается уровень риска, их соотносят с тестовыми случаями для обеспечения прослеживаемости и возможности тестирования. Антисценарии соответствуют негативным требованиям — случаям непредусмотренного использования, злоупотребления и создания помех. Антисценарии обнаруживаются в случае непрохождения системой тестов и являются обязательными при тестировании безопасности.

Тестирование безопасности

Объяснить концепцию прослеживаемости удобнее на примере оценки безопасности при тестировании на проникновение. При тестировании безопасности акцент делается на негативные требования, чтобы проверить способность системы обрабатывать неверные и непредвиденные входные данные и коммуникационные операции. Последнее актуально для киберфизических систем, которым присуща возможность адаптивного переключения интерфейсов связи, из-за чего возникают основные риски информационной безопасности. Негативные требования можно указывать в рамках функциональных требований в различных форматах, в том числе как случаи непредусмотренного использования, злоупотребления и исключения. На негативных требованиях базируются такие методы тестирования, как метод предельных значений, сканирование на уязвимости, анализ побочных каналов и тестирование на проникновение. Особенно эффективным является последний, когда тестировщик организует кибератаку на систему так же, как это сделал бы злоумышленник, рассчитывающий обнаружить уязвимости. Тестирование на проникновение можно проводить по принципу белого, черного и серого ящика. В первом случае тестировщик имеет полный доступ к исходному коду и закрытым данным, во втором у тестировщика нет знаний о системе — в его распоряжении только общедоступная документация и стандарты.

Зачастую при этом применяется метод перебора, но он отнимает много времени, лишен прослеживаемости, стандартных путей регрессии и схем контроля покрытия. Поэтому формальную прослеживаемость лучше обеспечивать с помощью тестирования на проникновение по методу серого ящика. В этом случае тестировщик знает про архитектуру системы, что позволяет ему провести интеллектуальный анализ возможных способов проведения атаки. При этом одновременно есть преимущества черного ящика — обзор системы со стороны, и знания, присущие методу белого ящика. Исследования в области тестирования на проникновение в основном касаются веб-приложений, а киберфизическим системам уделяется меньше внимания. Здесь предлагается универсальный тест на проникновение на основе серого ящика, который можно применять для встроенных систем в любых отраслях. Приведенные рекомендации по тестированию не предусматривают связи с концепциями проектирования систем, такими как разработка требований и механизмы прослеживаемости, что способствует более эффективной оценке.

Модель оценки безопасности
Рис. 2. Профиль атаки для инсулиновой помпы: преимущества прослеживаемости

На рис. 2 приведен профиль атаки высокой степени риска, используемой во многих попытках проникновения. Этот профиль создан в результате применения формального метода горизонтальной прослеживаемости к рабочим продуктам на первичных этапах анализа безопасности, в частности, в ходе анализа угроз и оценки рисков (Threat Analysis and Risk Assessment, TARA). На базе данного профиля выведены KPI действенности и экономической эффективности.

Десять этапов формального тестирования на проникновение

Модель оценки безопасности
Рис. 3. Десятиэтапный метод тестирования на проникновение по принципу серого ящика

Проиллюстрируем возможность получения исчерпывающего списка уязвимостей с использованием формальной модели прослеживаемости на примере тестирования на проникновение по принципу серого ящика. Десятиэтапный тест (рис. 3) разработан путем объединения модели трех пиков, TARA и KPI. Это «готовый рецепт» для инженеров по безопасности, который можно применять на протяжении всего жизненного цикла продукта.

  1. Сбор необходимой информации о системе. Из общедоступных документов собираются сведения о базовой функциональности, случаях непредусмотренного использования и злоупотребления, задачах пользователя. Сведения о функциональности являются отправной точкой формальной модели прослеживании.
  2. Моделирование архитектуры и интерфейса. Путем структурного анализа определяются компоненты продукта на уровне подсистем. Выполняется их вертикальное прослеживание до компонентов уровня системы и схемы, что позволяет провести рекурсивный тест на проникновение по принципу «сверху вниз».
  3. Определение ресурсов с использованием категорий воздействия, главными из которых являются безопасность, эксплуатационные характеристики, конфиденциальность и соответствие регулирующим требованиям. Каждый идентификатор функции прослеживается до идентификатора актива, тем самым обеспечивается исчерпывающее выявление ресурсов и достаточное покрытие требований.
  4. Получение технических характеристик оборудования и ПО. Сведения о процессоре и памяти, протоколах связи и версии ОС, лицензиях серийного коммерческого ПО, идентификаторе сервера со стеком TCP/IP выясняются с использованием всех доступных возможностей, как это сделал бы злоумышленник. Эта информация позволяет уточнить уязвимости по общедоступным базам наподобие Common Vulnerabilities and Exposures (CVE).
  5. Выполнение TARA. Этот этап позволяет составить исчерпывающий перечень сценариев нанесения ущерба по результатам отказов в тестовых случаях, ассоциированных с требованиями с опорой на прямые связи прослеживания. Анализ методом дерева ошибок помогает перечислить угрозы в рамках каждого сценария нанесения ущерба. После этого формируется перевернутое дерево атак, что позволяет перечислить все маршруты атак, способствующие реализации сценариев угроз. Для каждого маршрута атаки подсчитываются уровни риска. Выполняется прослеживание различных рабочих продуктов; затем каждый ресурс со сценарием нанесения ущерба, каждый такой сценарий с соответствующими сценариями угроз и каждый сценарий угроз ассоциируются с соответствующими способами проведения атак. Благодаря горизонтальной прослеживаемости открывается возможность полного выявления возможных способов проведения атаки.
  6. Формирование минимально необходимого набора тестовых случаев. Выбираются способы проведения атаки с высоким уровнем риска. На их основе реализуются тестовые случаи, и эти способы атаки отслеживаются по идентификатору для обеспечения достаточного покрытия. Благодаря формализованному механизму прослеживаемости составляется минимальный репозиторий тестовых случаев без повторов, охватывающий все уязвимости.
  7. Выполнение теста на проникновение. Проводится тестирование с использованием тестовых случаев, формируется отчет по реальным и нерелевантным уязвимостям. Преимущество вертикальной прослеживаемости в том, что перечисленные этапы можно выполнять для каждого уровня абстракции — системы, подсистемы и схемы, что позволяет получить исчерпывающий перечень уязвимостей.
  8. Измерение действенности и экономической эффективности с помощью KPI. На основе количества реальных уязвимостей и минимально необходимого числа тестовых случаев подсчитываются KPI, например, число уязвимостей с высоким риском как показатель действенности, и среднее количество тестовых случаев для выявления одной уязвимости как показатель экономической эффективности.
  9. Обновление функциональных требований к безопасности. Обнаруженные уязвимости необходимо устранить путем обновления механизмов безопасности, после чего систему нужно повторно протестировать, чтобы убедиться в том, что она работает, как предусмотрено. Итеративное тестирование облегчается благодаря обратной прослеживаемости (см. модель трех пиков).
  10. Проведение регрессионного тестирования. Назначение этого этапа — убедиться в том, что благодаря обновлению безопасности устранены все новые угрозы. С помощью формальной модели каждое требование прослеживается до тестового случая. Это помогает при систематическом повторном тестировании, поскольку выбираются только те тестовые случаи, которые соответствуют требованиям, затрагиваемым обновлением безопасности. Таким образом упрощается регрессионное тестирование.

Проверка на примере инсулиновой помпы

В СМИ появляется немало публикаций в связи с наличием брешей безопасности в инсулиновых помпах [3]. Опишем возможность проведения 10-этапного теста на проникновение на базе формальной модели прослеживаемости в отношении инсулиновой помпы для демонстрации возможности обнаружения уязвимостей с использованием минимального числа тестовых случаев.

Имплантируемые инсулиновые помпы — электронные медицинские приборы, помогающие при диабете, — они автоматически вводят в организм варьирующиеся и фиксированные дозы инсулина. Архитектурная схема такой помпы представлена на рис. 2. Датчик глюкозы крови, или глюкометр непрерывного действия, в режиме реального времени передает данные контроллеру, который подсчитывает необходимую дозу инсулина. Среди поверхностей атаки (ресурсов) таких устройств — Wi-Fi, Bluetooth, радиопорты, через которые можно осуществлять смертельные для пациента атаки путем передозировки или недостаточной дозировки гормона.

Действенный механизм прослеживания позволяет выполнить полноценную оценку безопасности, например анализируя каждый ресурс по схеме TARA. При этом определяются сценарий нанесения ущерба и соответствующие угрозы, что позволяет выяснить пути выполнения атаки для конкретной архитектуры и уменьшить число ложноположительных результатов. На основе построенных деревьев атак формируются тестовые случаи. Каждая ветвь дерева атаки соответствует маршруту атаки, что дает возможность создать тестовый случай. Уязвимости с высоким риском помогают сформировать минимально необходимый набор тестовых случаев. Если провести тесты на проникновение с использованием случаев, ведущих к фатальной передозировке инсулина, выясняется, что уязвимыми являются сеансы связи через радиопорт, Bluetooth и Wi-Fi. В ходе экспериментов с реальной инсулиновой помпой удалось количественно и качественно доказать, что десятиэтапный тест на проникновение по схеме серого ящика с соответствующей формальной моделью прослеживаемости более эффективен для поиска уязвимостей, чем тест на основе черного ящика (рис. 2): обеспечивается достаточное покрытие категорий уязвимостей со стопроцентной действенностью (охвачены все 13 категорий) и экономической эффективностью теста на уровне 80%. Иными словами, для обнаружения каждой уязвимости достаточно одного тестового случая, что говорит о высокой эффективности данной стратегии тестирования.

***

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

Формальная модель прослеживаемости, масштабируемая с учетом роста сложности систем, обеспечивает необходимое покрытие требований и позволяет выстроить действенную стратегию тестирования. При ее использовании в различных промышленных проектах был обнаружен ряд ограничений. В частности, нередко имеет место неполнота требований, что препятствует созданию связной модели прослеживаемости. Аналогично, отсутствие должной формализации спецификаций мешает выработке необходимых тестовых случаев. Часто встречается ситуация, когда создано слишком много тестовых случаев, не связанных друг с другом и с требованиями. При таком беспорядочном наборе тестовых случаев нельзя четко определить покрытие — теряется эффективность тестирования. Для устранения подобных проблем можно дополнить модель программным роботом, который бы выполнял синтаксический разбор неструктурированных требований и списков функций, выявляя по ключевым словам кандидатов на прослеживание до тестовых случаев. Пробелы можно было бы обнаруживать с помощью эвристических алгоритмов, которые бы аналогичным образом обрабатывали неполные и избыточные наборы тестовых случаев, позволяя проследить их до требований и сформировать минимально необходимый набор.

Еще одно ограничение связано с ручным вычислением KPI. Сейчас избыточные и новые тестовые случаи приходится удалять из набора и добавлять в него вручную — нужны автоматизация и соответствующие инструменты. Автоматизированное прослеживание повышает экономическую эффективность стратегии тестирования. Представленную формальную модель прослеживаемости можно было бы дополнить каталогом угроз и эвристическим механизмом, который бы анализировал архитектуру системы, определял уникальные ресурсы и прослеживал бы их до угроз и уязвимостей. Подобная автоматизация помогла бы формировать полный перечень уникальных тестовых случаев на основе уязвимостей, за счет чего выросла бы эффективность тестирования.

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

Литература

1. Ebert C., Ray R. Test-driven requirements engineering // IEEE Software. 2021; 1 (38): 16–24. DOI: 10.1109/MS.2020.3029811.

2. Nuseibeh B. Weaving together requirements and architecture // Computer. 2001; 3 (34): 115–119. DOI: 10.1109/2.910904.

3. Haider N., Gates C., Sengupta V., Qian S. Cybersecurity of medical devices: Past, present, and future. In Deer's Treatment of Pain, T. Deer, J. Pope, T. Lamer, and D. Provenzano, Eds. Cham: Springer-Verlag, Aug. 2019, pp. 811–820.

Кристофер Эберт (christof.ebert@vector.com) — старший научный сотрудник, IEEE; Раскил Рэй (ruschil.ray@vector.com) — научный сотрудник, Штутгартский университет.

Christof Ebert, Ruschil Ray, Toward a Formal Traceability Model for Efficient Security Validation. IEEE Computer, November 2021, IEEE Computer Society. All rights reserved. Reprinted with permission.