
В популярных пакетных менеджерах Nix и Lix обнаружена критическая уязвимость, позволяющая злоумышленнику выполнить произвольный код с правами суперпользователя (root). Проблема затрагивает фоновый процесс nix-daemon, который отвечает за предоставление непривилегированным пользователям доступа к сборочным операциям и общему хранилищу пакетов в NixOS и других многопользовательских конфигурациях.
Суть уязвимости и механизм эксплуатации
Причиной возникновения бреши стала ошибка в коде, отвечающем за разбор архивов формата NAR (Nix Archive). В частности, отсутствие ограничений на глубину рекурсивной обработки вложенных директорий позволяет спровоцировать исчерпание стека сопрограмм.
Это приводит к перезаписи содержимого кучи (heap), которая в памяти размещена сразу за стеком без необходимых сторожевых страниц. Поскольку доступ к nix-daemon по умолчанию открыт для всех локальных пользователей системы, любой из них может воспользоваться уязвимостью для повышения своих привилегий до root.
Исправления и версии
Разработчики уже подготовили патчи, которые ограничивают уровень рекурсии 64 вложенными директориями, внедряют сторожевые страницы памяти между стеком и кучей, а также усиливают проверки для символических ссылок внутри архивов.
- Nix: Уязвимость появилась в версии 2.24.4. Исправления включены в релизы 2.34.7, 2.33.6, 2.32.8, 2.31.5, 2.30.5 и 2.29.4, 2.28.7.
- Lix: Проблема затрагивала версию 2.93.0. Исправления доступны в обновлениях 2.93.4, 2.94.2 и 2.95.2.
Важно отметить, что пакетный менеджер Guix данной уязвимости не подвержен.
Дополнительная уязвимость в Nix
В рамках тех же обновлений была устранена ещё одна проблема со средним уровнем опасности (4.3 по шкале CVSS). Она касается некорректной обработки путей при распаковке архивов с помощью команд nix-prefetch-url --unpack или nix store prefetch-file --unpack.
Уязвимость позволяет записывать файлы за пределами целевого корневого каталога. Это происходит из-за того, что элементы архива с абсолютными путями не преобразуются в относительные при извлечении, что может привести к перезаписи системных файлов.





