Публикувана версия на фреймворка 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), по-лесна е за поддръжка и може лесно да се разширява, например, при необходимост от добавяне на поддръжка на специфични мрежови стеки, системи за съхранение или алгоритми за криптиране.
Източник: opennet.ru
