The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Доступен TUF 1.0, фреймворк для организации безопасной доставки обновлений

14.03.2022 11:30

Опубликован выпуск фреймворка TUF 1.0 (The Update Framework), предоставляющего средства для безопасной проверки наличия и загрузки обновлений. Основной целью проекта является защита клиента от типовых атак на репозитории и инфраструктуры, включая противодействие продвижению злоумышленниками фиктивных обновлений, созданных после получения доступа к ключам для формирования цифровых подписей или компрометации репозитория. Проект развивается под эгидой организации Linux Foundation и применяется для повышения безопасности доставки обновлений в таких проектах, как Docker, Fuchsia, Automotive Grade Linux, Bottlerocket и PyPI (включение верификации загрузок и метаданных в PyPI ожидается в ближайшее время). Код эталонной реализации TUF написан на языке Python и распространяется под лицензией Apache 2.0.

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

Фреймворк TUF берёт на себя задачи проверки появления обновления, загрузки обновления и верификации его целостности. Система установки обновлений непосредственно не пересекается с дополнительными метаданными, проверку и загрузку которых берёт на себя TUF. Для интеграции с приложениями и системами установки обновлений предлагается низкоуровневый API для доступа к метаданным и реализация высокоуровневого клиентского API ngclient, готового для интеграции с приложениями.

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

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

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

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

Опубликованный выпуск TUF 1.0.0 предлагает полностью переписанную и стабилизированную эталонную реализацию спецификации TUF, которую можно использоваться в качестве готового примера при создании собственных реализаций или для интеграции в свои проекты. Новая реализация содержит существенно меньше кода (1400 строк вместо 4700), более проста в сопровождении и может легко расширяться, например, при необходимости добавления поддержки специфичных сетевых стеков, систем хранения или алгоритмов шифрования.

  1. Главная ссылка к новости (https://github.com/theupdatefr...)
  2. OpenNews: Инициатива Alpha-Omega, нацеленная на повышение безопасности 10 тысяч открытых проектов
  3. OpenNews: Атаковавшие SolarWinds смогли получить доступ к коду Microsoft (дополняется)
  4. OpenNews: Google предложил SLSA для защиты от вредоносных изменений в процессе разработки
  5. OpenNews: Red Hat и Google представили Sigstore, сервис для криптографической верификации кода
  6. OpenNews: Атака на зависимости позволила выполнить код на серверах PayPal, Micrоsoft, Apple, Netflix, Uber и ещё 30 компаний
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/56847-tuf
Ключевые слова: tuf, theupdateframework
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (23) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, ryoken (ok), 12:12, 14/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    >>  В каждом отдельном ключе сосредотачивается только минимально необходимое доверие

    ...мнээ... Переведите плз кто-нибудь на обычный юзеропостижимый русский..?

     
     
  • 2.2, slava_kpss (ok), 12:34, 14/03/2022 [^] [^^] [^^^] [ответить]  
  • +12 +/
    Там лютый дроч на безопасность, но однажды найдут уязвимость, которая всё похерит
     
     
  • 3.5, распад олова (?), 13:23, 14/03/2022 [^] [^^] [^^^] [ответить]  
  • –12 +/
    потомучто не на расте
     
     
  • 4.24, Аноним (24), 03:09, 15/03/2022 [^] [^^] [^^^] [ответить]  
  • +/
    ну Python это отличный язык для прототипирования... примерно как Turbo Pascal раньше.
    концепт заложен теперь надо подождать программистов, которые перепишут хотя бы на сях это хоть под какой-то дистрибутив... хотя зачем?
     
  • 3.10, Жироватт (ok), 13:44, 14/03/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    И эта уязвимость сидит перед монитором, пишет интеграцию в TUF.
    Или это уязвимость с доступом к ревью коммитов самого TUF получила деньги от Конгресса неназванной страны, патриотических люлей от дрилл-сержанта морской пехоты неопределенной страны, а затем угрозы от бесноватых, живущих с ним рядом в андефайн-стране, в имярековой социальной сети во имя всего хорошего против всего плохого?
     
  • 2.3, n00by (ok), 13:17, 14/03/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Например, у Пока Линукс сломали два раза сайт, залили скрипт с редиректом на лохотрон. Они узнали об этом от пользователей ВК. Потеряно доверие ко всей системе обеспечения безопасности, ко всей инфраструктуре, мало ли что там ещё взломали. Обновляться нельзя, качать образы для установки нельзя. А тут как бы можно обновляться, если взломали маловажную часть инфраструктуры.
     
     
  • 3.16, Брат Анон (ok), 15:33, 14/03/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Только тут проблема: если кто-то смог залить зловред в репу -- значит ключ протёк. На ключ нужен другой ключ уровнем выше. Это пирамида без конца.
     
     
  • 4.26, n00by (ok), 13:36, 15/03/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > пирамида без конца.

    Безопасность это вообще процесс. Она не "есть", приходится её обеспечивать.

     
     
  • 5.27, Брат Анон (ok), 10:55, 17/03/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >> пирамида без конца.
    > Безопасность это вообще процесс. Она не "есть", приходится её обеспечивать.

    Я прекрасно в курсе, что безопасность это не состояние, а процесс.
    Также я в курсе, что описанную проблему верификации верификатора -- безопасность не решает.

     
  • 2.9, Жироватт (ok), 13:40, 14/03/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Принцип похож на обоснование герметичных толстых переборок в кораблях - если есть пробоина в каком-то отсеке, то он тупо задраивается и даже с полностью затопленным отсеком корабль сохраняет плавучесть, теряя в мореходности. Обычно там закладывается при проектировке рассчетно 2-3-5 затопленных отсеков, позволяющих судну своим ходом дойти до ближайшего порта, сбросить карго и в док, на ремонт.


     

  • 1.4, pashev.ru (?), 13:18, 14/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Фигня какая-то... Примеры предотвращенных атак есть, или опять "должно работать"?
     
     
  • 2.7, ryoken (ok), 13:30, 14/03/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Фигня какая-то... Примеры предотвращенных атак есть, или опять "должно работать"?

    Чего вы требуете от версии 1.0? :)

     
     
  • 3.12, Аноним (12), 14:15, 14/03/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хотя бы работы, а не одних деклараций.
     
  • 2.8, Жироватт (ok), 13:33, 14/03/2022 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Написал ниже. Нет обкатки в реальном мире - "должно работать".
    Тут же область бесконечной борьбы шита и меча. Как и военные игрушки, так и такие сесурити-средства должны постоянно тестироваться в реальной боевой, где мелочи решают: жив или умер. Ну или закрыт-чист или скомпрометирован.
     

  • 1.6, Жироватт (ok), 13:30, 14/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Спасёт ли это NPM или что-нибудь такое же скриптовое и популярное?
    В репах дистрибутивов DoS-атака в принципе невозможна: клиент запрашивает список у сервера, а не сервер пушит "есть апдейт - скачай апдейт, ой, есть еще апдейт".

    Остальное интересно, но не более того. Нужна обкатка, серьёзная военприёмочная обкатка и напилинг на реальных высокоопасных репозиториях, вроде рассадника лефтпадов. Далее, лет через пять, когда большую часть common-use-сценариев уже раскроют и исправят, тогда можно говорить о статусе выше proof-of-concept

     
  • 1.11, Аноним (11), 14:11, 14/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    > Код эталонной реализации TUF написан на языке Python

    Не продолжайте.

     
  • 1.13, Kusb (?), 14:31, 14/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну оно звучит интересно.
     
     
  • 2.17, Брат Анон (ok), 15:37, 14/03/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну оно звучит интересно.

    Лучше, чем ничего. Но тут даже зловреда не надо: из requirements.txt берём лижу типа
    pylint>=4.7
    и подтягивается pylint 18.3. Для python 4.5.
    И это отвратительно. К слову, в  golang такое не прокатывает.

     

  • 1.15, user90 (?), 15:21, 14/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Новость-то не фиктивная? А то подписи нет)
     
  • 1.20, Майор (??), 17:24, 14/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > фреймворк для организации безопасной доставки обновлений

    И как же я теперь буду бэкдоры вставлять? *плак-плак*...

     
     
  • 2.21, Адмирал Майкл Роджерс (?), 17:33, 14/03/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не унывайте, коллега. Специалисты что-нибудь придумают.
     
     
  • 3.22, Dzen Python (ok), 20:30, 14/03/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Я вам всем бюджетное финансирование урезал!
     

  • 1.25, Аноним12345 (?), 09:28, 15/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Надстройка над настройкой над настройкой
    Мы будем контролировать то, что вы сами контролируете, но плохо
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру