ХабрПостыНовостиМегапосты?

Безопасность обновления программного обеспечения

От переводчика: я наткнулся на TheUpdateFramework при поиске библиотек, реализующих автоматическое обновление ПО на десктопе. С одной стороны, мне показалось интересным и обстоятельным представленное ниже описание аспектов безопасности систем обновления ПО; с другой — наверняка помимо академических исследований, хоть и под крылом LinuxFoundation, можно найти много годных решений. Можете предлагать варианты в комментариях.


TheUpdateFramework


Безопасность


Мы можем считать систему обновления ПО "безопасной", если:



Чтобы этого добиться, требуются работоспособные превентивные стратегии против множества потенциальных атак.


Атаки и недостатки


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



Принципы обеспечения безопасности


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


Доверие


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



Уменьшение рисков для ключей (устойчивость к компроментации)


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


Обеспечение безопасности клиентов при компрометации ключа включает в себя:



Целостность


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


Актуальность


Так как обновления ПО часто исправляют уязвимости, для систем обновления ПО важно получать последние доступные версии. Атакующий может попробовать заставить клиента установить устаревшие версии ПО или просто убедить клиента в том, что новые обновления отсутствуют.


Обеспечение актуальности означает:



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


Безопасность реализации


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

@tumbler
19.08.2019 13:22 UTC
Первоисточник