В GNU Guix обнаружены критические уязвимости, позволяющие повысить привилегии через подмену серверов

guix

Исследователь безопасности Кейлеб Ристведт (Caleb Ristvedt) раскрыл серию уязвимостей в пакетном менеджере GNU Guix. Проблемы затрагивают все установки, независимо от того, работает ли демон guix-daemon с правами root. Наиболее опасные из них позволяют злоумышленнику удалённо повысить привилегии до уровня пользователя демона сборки, повредить хранилище пакетов и локально раскрыть файлы, доступные этому демону. Разработчики выпустили исправления в серии из одиннадцати коммитов.

Детали уязвимости

Ключевая уязвимость связана с процедурой "restore-file", которая используется для распаковки бинарных подстановок (substitutes). Guix извлекал содержимое подстановки в процессе загрузки, до проверки контрольной суммы всего архива. Если злоумышленник контролирует сервер подстановок или может выполнять MITM-атаку, он способен подменить архив таким образом, что распаковщик запишет произвольные файлы в любую точку файловой системы, доступную пользователю демона. Когда daemon работает от root, атакующий может изменить, например, "/etc/passwd". HTTPS не предотвращает атаку, поскольку обработка метаданных позволяет заменить URL подстановки ещё до загрузки архива.

Вторая проблема затрагивает процедуру "fetch-narinfos", которая получает метаданные о доступных подстановках. Она не проверяет, что полученный narinfo соответствует запрошенному элементу хранилища. Злоумышленник, контролирующий сервер подстановок, может выдать один пакет за другой. Это позволяет принудительно установить устаревшие или уязвимые версии программ, если для них есть подписанные подстановки.

Третья уязвимость связана с тем, что "guix substitute" разрешает использование URI вида "file://" как для указания адресов серверов, так и для ссылок на архивы внутри narinfo. Локальный пользователь, имеющий доступ к сокету daemon, может заставить демона прочитать любой файл, доступный его учётной записи. Если содержимое файла не соответствует формату narinfo, Guix может вернуть исключение и backtrace, содержащий часть данных. Так потенциально раскрываются пароли, ключи и другая конфиденциальная информация. Кроме того, через ссылки на "/proc/PID/fd" злоумышленник может вмешиваться в чтение файлов другими процессами пользователя демона.

Четвёртая уязвимость отдельная: она затрагивает команды "guix pull" и "guix time-machine" в механизме кеширования аутентификации каналов. Если злоумышленник может контролировать файл каналов (например, при загрузке удалённого файла), он может указать в имени канала путь вида "../../../../newfile". Это приведёт к созданию или перезаписи файла в домашнем каталоге пользователя. Из-за ограниченного формата записываемых данных основная угроза - отказ в обслуживании, но атаки на специальные файлы в "/proc" могут нести дополнительные риски.

"Все системы уязвимы, - предупреждает Кейлеб Ристведт. - Если daemon работает от root, атакующий может получить контроль над системой. Даже без root-привилегий демона локальный злоумышленник может читать файлы, доступные пользователю демона". Разработчики подтвердили, что уязвимости были обнаружены при координации с Jörg Thalheim из проекта Nix и членами группы реагирования Guix.

Что делать

Обновление необходимо выполнить немедленно. Версия, содержащая исправления, соответствует коммиту "897832f374dcdc9eeaf19d01e70b9a92fccfc68c" или более позднему. Для пользователей Guix System последовательность действий:

На других дистрибутивах Linux обновление нужно выполнять от root и перезапускать сервис "guix-daemon". Временной мерой для защиты от удалённых атак является отключение подстановок флагом "--no-substitutes", но это не защищает от локальных атак через сокет демона. Полное исправление требует обновления.

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

Вывод покажет, какие из четырёх уязвимостей присутствуют. Если все четыре строки содержат "not vulnerable", система защищена.

Тенденция в сфере безопасности пакетных менеджеров такова, что механизмы подстановок и распаковки архивов требуют особенно тщательной проверки входных данных. Аналогичная уязвимость (CVE-2024-45593) ранее была найдена в Nix, что указывает на системную проблему в архитектуре таких инструментов.

Ссылки

Комментарии: 0