Назначение шаблона

Шаблон предназначен для организации безопасного обновления системы и приложений через канал связи с удаленным сервером обновлений.

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

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

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

Типовые цели безопасности

Типовые цели безопасности при применении шаблона: обеспечение целостности и аутентичности данных обновлений (бинарных образов, скриптов, конфигурационных данных обновлений и т.п.) в условиях доставки этих данных через каналы связи сетей общего доступа.

Предположения безопасности

Предположения безопасности отсутствуют.

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

Описание решения

Шаблон должен отвечать следующим требованиям:

  • реализация шаблона должна обеспечивать аутентификацию сервера обновлений;
  • реализация шаблона должна обеспечивать возможность отката обновления в случае, если оно неработоспособно;
  • реализация шаблона должна обеспечивать проверку целостности, аутентичности и актуальности обновления;
  • реализация шаблона должна обладать устойчивостью к атакам злоумышленника.

Нарушение хотя бы одного требования приводит к возможности атаки.

Например, в начале 2026 года произошли две атаки, где злоумышленникам удалось скомпрометировать источник обновления. В первом случае хакеры использовали просроченные данные разработчиков, во втором им удалось получить API-ключ официального магазина Chrome Web Store. В итоге злоумышленники обновляли вредоносом приложения, которые являлись частью инфраструктуры криптокошельков. Это привело клиентов к финансовым потерям.

Другой пример — ошибки в системе после обновления. Это частая проблема. Вот, например:
Ошибки в работе накопителей и синий экран после обновления Windows.
Проблемы с выключением, работой рабочего стола и почты после другого обновления Windows.
А тут, по заверениям пользователей, после обновления робот-пылесос Xiaomi S10+ отказался подавать воду во время уборки.

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

Элементы системы, реализующей шаблон:

  • сервер обновлений — удаленный сервер, содержащий данные обновлений (бинарных образов, скриптов, конфигурационных данных обновлений и т.п.);
  • элемент, реализующий обмен данными с внешней сетью (к примеру, реализующий ВФС для внешней сети);
  • менеджер обновлений — элемент, управляющий процессом обновления и предоставляющий пользователю интерфейс управления обновлениями;
  • загрузчик обновлений — элемент, обеспечивающий связь с сервером обновлений и загрузку обновления на устройство. Может выполнять проверку наличия обновлений при соответствующих настройках Менеджера обновлений;
  • аутентификация сервера должна осуществляться по безопасному каналу связи, к примеру, организованного посредством реализации шаблона «Терминатор TLS»;
  • временное хранилище обновления и связанных с ним метаданных (номер версии, ЭЦП, контрольная сумма), используется для изоляции обновления на время проверок;
  • верификатор данных — элемент, осуществляющий проверку обновления в соответствии с заложенной логикой и обеспечивающий вынесение вердикта (положительный или отрицательный) по результатам проверки файла обновления и связанных с ним метаданных. Типовые проверки могут включать: целостность (проверка контрольной суммы), аутентичность (проверка цифровой подписи), номер версии;
  • хранилище данных;
  • монитор;
  • установщик обновлений — компонент, осуществляющий запись в хранилище данных и должную установку обновления.

Разграничение доступа к Временному хранилищу данных и Хранилищу данных обеспечивается реализацией шаблона «Разделение потоков данных на уровне драйвера ресурсов».

Монитор реализуется на основе шаблона «Монитор».

Взаимодействие элементов шаблона представлено на рисунке 1.

Система может находиться в одном из трех состояний конечного автомата:

  1. Хранилище доступно для записи файла обновления. В этом состоянии Временное хранилище данных доступно только для записи.
  2. Хранилище запечатано. В этом состоянии Временное хранилище данных доступно только для чтения и только компонентом Верификатор данных. После верификации данные во Временном хранилище данных могут считаться доверенными (целостными, аутентичными, актуальными).
  3. Хранилище верифицировано. В этом состоянии данные во Временном хранилище данных доступны только для чтения компонентом Установщик данных.

Алгоритм установки обновления, реализуемый на основе шаблона:

Шаг

Менеджер обновлений запрашивает проверку наличия обновлений у Загрузчика обновлений;

Шаг

Загрузчик обновлений проверяет наличие обновлений и при наличии актуальной версии скачивает обновление и сопутствующую мета-информацию во Временное хранилище данных;

Шаг

Загрузчик обновлений уведомляет Менеджера обновлений о загрузке файла обновления во Временное хранилище данных;

Шаг

После записи обновления во Временное хранилище данных система переходит в состояние запечатывания Временного хранилища данных;

Шаг

Менеджер обновлений запрашивает у Верификатора данных проверку файла обновления и метаданных;

Шаг

Верификатор данных читает данные из Временного хранилища данных, проводит проверки и в случае положительного вердикта передает данные в монитор; система переходит в состояние возможности передачи данных из Временного хранилища данных;

Шаг

В случае положительного вердикта Верификатор данных информирует Менеджер обновлений о том, что образ корректный;

Шаг

Менеджер обновлений передает в Установщик обновлений команду на обновление устройства;

Шаг

Установщик обновлений читает данные из Временного хранилища данных, выбирает один из разделов для записи обновлений, записывает файл обновлений и инициирует процедуру установки обновления. После передачи файла обновления Временное хранилище данных форматируется и переходит в стартовое состояние.

Какие могут быть атаки на системы обновления ПО:

Установка произвольного ПО. Атакующий компрометирует сервер обновления (или выдает себя за него) и предлагает целевой системе любые поддельные образы для установки.
Откат обновлений. Атакующий, используя уязвимые места менеджера обновлений или сервера обновлений, предоставляет образы более старой версии. В старых версиях сохраняются известные уязвимости. При этом пользователь считает, что система обновлена.
Атака перемотки. Атакующий компрометирует менеджер обновлений и принудительно увеличивает номер текущей версии. Система думает, что она обновлена до более новой версии, чем ей предлагает сервер и отказывается от установки.
Атака бессрочного зависания. Разновидность атаки «откат обновлений», когда целевой системе предлагаются легитимные образы, которые уже были установлены на систему. Так система думает, что новых обновлений нет.
Атака бесконечных данных. Атакующий использует недостатки загрузчика обновлений и в качестве образа отправляет клиенту бесконечный поток данных, который не может обработать клиент. Например, заканчивается память на диске.
Атаки смешения (mix-and-match). Атакующие миксуют части старых легитимных образов так, чтобы получить новый, но с другими свойствами.
Компрометация ключей. Раскрытие ключей для подписи произвольных образов.

Более подробно можно почитать в документации TUF. Это открытый фреймворк для создания безопасных систем обновлений.

Требования к технологии разработки элементов системы

Поскольку шаблон использует шаблон «Монитор», применяются требования к технологии, определенные для базового шаблона;

Поскольку шаблон реализуется на основе шаблона «Разделение потоков данных на уровне драйверов устройств», применяются требования к технологии, определенные для базового шаблона;

Необходимо реализовать подходы к обеспечению корректности верификации данных обновления, в первую очередь методические и кооперационные подходы, обеспечивающие безопасность и корректность работы программного кода компонента, реализующего проверку целостности, аутентичности и актуальности данных обновления.

Ограничения на применение шаблона

Поскольку шаблон реализуется на основе шаблона «Разделение потоков данных на уровне драйверов устройств», применяются ограничения, определенные для базового шаблона и шаблона «Монитор».

Допустимые модификации шаблона

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

Процесс обновления может адаптироваться в зависимости от особенностей систем. Например, при организации Over-the-Air обновлений на транспортном средстве функции из шаблона разделены между двумя элементами: часть выполняется на целевой подсистеме, остальные выводятся на выделенный элемент, так называемый, мастер обновлений. Мастер включает в себя функции «менеджера обновлений», «загрузчика обновлений», «обмена данными с внешней сетью», «верификации данных» (см. схему шаблона), хранит и использует ряд соответствующих ключей и сертификатов. На целевом элементе происходит сама установка, выполняется переключение состояния аналогичное описанному в алгоритме шаблона, область памяти разделяется на временное хранилище данных и активную область.

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