Уязвимость в PackageKit: гонка состояний позволяет непривилегированному пользователю получить root-доступ в Linux

vulnerability

Двадцатого апреля 2026 года исследователи из красной команды Deutsche Telekom публично раскрыли информацию о критической уязвимости в PackageKit - прослойке для управления пакетами, работающей через D-Bus (систему межпроцессного взаимодействия). Проблема получила идентификатор CVE-2026-41651 и название Pack2TheRoot. Она затрагивает все версии PackageKit начиная с 1.0.2, выпущенной более двенадцати лет назад, и вплоть до версии 1.3.4. Исправление было выпущено в релизе 1.3.5, который стал доступен для загрузки в день публикации.

Уязвимость CVE-2026-41651

Уязвимость была обнаружена в ходе целенаправленного исследования векторов локального повышения привилегий в современных Linux-системах. Примечательно, что исследователи использовали AI-модель Claude Opus (модель искусственного интеллекта от компании Anthropic) для направления анализа в нужное русло, однако окончательная верификация и подтверждение эксплуатируемости были выполнены вручную. Это первый известный случай, когда нейросеть помогла выявить уязвимость такого класса в системном ПО Linux.

Pack2TheRoot представляет собой уязвимость типа TOCTOU (разновидность ошибки, при которой проверка состояния и последующее использование разделены по времени). В данном случае речь идёт о состоянии гонки при обработке флагов транзакций в фоновом процессе PackageKit. Чтобы понять суть проблемы, необходимо разобраться в том, как работает эта прослойка. PackageKit выступает универсальным интерфейсом для пакетных менеджеров, таких как APT (Advanced Package Tool) в Debian и Ubuntu или DNF (Dandified Yum) в Fedora и RockyLinux. Обычный пользователь может без пароля выполнять некоторые операции, например, устанавливать пакеты из официальных репозиториев, если это разрешено политиками. Однако злоумышленник может обойти эти ограничения.

Технически уязвимость реализуется через три ошибки в исходном коде файла src/pk-transaction.c. Первая ошибка заключается в безусловной перезаписи флагов транзакции в функции InstallFiles(). Когда поступает запрос от непривилегированного пользователя, PackageKit сохраняет переданные флаги в кэш, не проверяя, была ли транзакция уже авторизована или запущена. Вторая ошибка связана с тем, что функция pk_transaction_set_state() молча отвергает обратные переходы состояния, например, из состояния RUNNING (выполняется) обратно в WAITING_FOR_AUTH (ожидание авторизации). Однако перезапись флагов к этому моменту уже произошла. Третья ошибка - чтение кэшированных флагов происходит не в момент авторизации, а в момент диспетчеризации при выполнении транзакции. Таким образом, если злоумышленник успевает отправить второй D-Bus-запрос с подменёнными параметрами до того, как первая разрешённая транзакция начнёт фактическое выполнение, флаги первой транзакции заменяются на флаги из второго запроса. После этого транзакция выполняется с новыми, неавторизованными параметрами.

На практике это означает, что непривилегированный пользователь может инициировать установку пакета, на которую у него есть разрешение, а затем мгновенно отправить дополнительный запрос на установку произвольного пакета, возможно, сохранённого локально. Такой пакет может содержать scriptlet (скрипт, выполняемый до или после установки), который запускается с правами root. Таким образом, атакующий получает возможность выполнить код с максимальными привилегиями.

Исследователи подтвердили работоспособность эксплойта в различных дистрибутивах при стандартной установке. Среди них Ubuntu Desktop 18.04, 24.04.4 и 26.04, Ubuntu Server версий 22.04 и 24.04, Debian Desktop 13.4, RockyLinux Desktop 10.1, а также Fedora 43 Desktop и Server. Поскольку PackageKit является опциональной зависимостью проекта Cockpit, многие серверы с установленной панелью управления также могут быть уязвимы, в том числе под управлением Red Hat Enterprise Linux.

Критичность проблемы подчёркивает её оценка по шкале CVSS 3.1 (общая система оценки уязвимостей): 8,8 из 10 баллов. Вектор атаки локальный, сложность низкая, для эксплуатации не требуется аутентификация, а повышение привилегий происходит на уровне системы.

Команда Deutsche Telekom подготовила рабочий концептуальный прототип эксплойта, но не публикует его в открытом доступе, чтобы дать администраторам время на обновление систем. В журналах системы после успешной атаки остаются характерные следы: аварийное завершение демона PackageKit с сообщением об ошибке утверждения pk_transaction_finished_emit. Этот индикатор компрометации может быть использован для обнаружения атак.

Процесс раскрытия уязвимости начался 8 апреля 2026 года, когда информация была передана в Red Hat и команду разработчиков PackageKit. Мейнтейнер Маттиас Клумп быстро подготовил патч, и к 15 апреля исправление было согласовано с Canonical (Ubuntu) и Red Hat. Двадцать первого апреля представители дистрибутивов получили патчи и были уведомлены о дате публикации. Двадцать второго апреля состоялся публичный релиз PackageKit 1.3.5, а также были выпущены обновлённые пакеты для Debian, Ubuntu, Fedora и других дистрибутивов.

Администраторам настоятельно рекомендуется проверить версию PackageKit в своих системах. Для этого можно выполнить команды поиска пакета с помощью dpkg или rpm, после чего сравнить номер версии с уязвимыми. Если версия меньше 1.3.5 и демон активен (проверяется через systemctl или утилиты мониторинга), систему следует незамедлительно обновить. Поскольку эксплойт будет опубликован позже, окно уязвимости ограничено, и промедление может привести к компрометации.

Уязвимость Pack2TheRoot демонстрирует, как давно существующие, но незамеченные ошибки в системном программном обеспечении могут оставаться опасными на протяжении более десяти лет. Комбинация нескольких мелких дефектов в логике, которые по отдельности безобидны, в совокупности приводит к серьёзному нарушению безопасности. В данном случае сработал принцип "гонки" - время между проверкой и использованием оказалось критическим. И хотя основная причина - ошибка проектирования, её исправление потребовало лишь корректировки порядка операций. Теперь администраторам остаётся лишь своевременно применить обновление, чтобы закрыть этой путь для потенциальных атак.

Ссылки

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