
# Глубокий анализ CVE-2026-41651 (Pack2TheRoot) — локальное повышение привилегий в PackageKit. Включает разбор уязвимости, цепочку атаки, индикаторы компрометации (IoCs) и рекомендации по смягчению последствий.
PackageKit Local Privilege Escalation (TOCTOU Race Condition)
CVSS v3.1: 8.8 (HIGH) | CWE-367 | Published: 2026-04-22
Данный репозиторий содержит личный аналитический отчет и исследовательские материалы по уязвимости локального повышения привилегий CVE-2026-41651 (Pack2TheRoot) в PackageKit, раскрытой в апреле 2026 года.
| Элемент | Содержание |
|---|---|
| CVE ID | CVE-2026-41651 |
| Название уязвимости | Pack2TheRoot |
| Затронутое ПО | PackageKit 1.0.2 ~ 1.3.4 |
| Версия с патчем | PackageKit 1.3.5 |
| Тип атаки | Локальное повышение привилегий (LPE) |
| Обнаружитель | Deutsche Telekom Red Team |
Комбинация трех ошибок в pk-transaction.c PackageKit позволяет локальному непривилегированному пользователю получить root-права.
Bug 1: При вызове InstallFiles() безусловная перезапись cached_transaction_flags (Line 4036)
↓
Bug 2: При отказе в смене состояния загрязненные флаги остаются в памяти без отката (Line 876~881)
↓
Bug 3: Чтение загрязненных флагов в момент выполнения pk_transaction_run() (Line 2273~2277)
↓
Результат: обход аутентификации polkit → установка произвольного пакета с root-правами → создание SUID bash
InstallFiles(SIMULATE=0x4, dummy) → обход аутентификации polkitInstallFiles(NONE=0x0, payload) → загрязнение флагов (TOCTOU)NOT_AUTHORIZED пакет уже установлен/tmp/.suid_bash → получение euid=0(root)| Элемент | Содержание |
|---|---|
| Воспроизведение PoC | Docker (Ubuntu 24.04.4 LTS) |
| Сбор IoC | VirtualBox (Ubuntu 22.04.5 LTS, PackageKit 1.2.5) |
| Анализ кода | GitHub — PackageKit commit 2149735 (уязвимый) / 76cfb675 (патч) |
CVE-2026-41651-analysis/
├── README.md
└── CVE-2026-41651_분석보고서.docx # Подробный аналитический отчет
При попытке атаки в системе фиксируются следующие шаблоны логов.
# Команда обнаружения
journalctl -u packagekit | grep -i "assertion\|emitted\|failed"
PackageKit[PID]: pk_backend_job_emit: assertion 'PK_IS_BACKEND_JOB(job)' failed
PackageKit[PID]: g_signal_emit_valist: assertion 'G_TYPE_CHECK_INSTANCE(instance)' failed
PackageKit[PID]: GLib-Object:CRITICAL: g_object_unref: assertion 'G_IS_OBJECT(object)' failed
PackageKit[PID]: backend job failed
PackageKit[PID]: emit transaction failed
PackageKit[PID]: daemon stop ← Сбой
PackageKit[PID]: daemon start ← Автоматический перезапуск
# Обнаружение SUID-файлов
find /tmp -perm -4000 -type f 2>/dev/null
# → При наличии /tmp/.suid_bash требуется немедленное реагирование
# Ubuntu / Debian
sudo apt update && sudo apt upgrade packagekit
# RHEL / Fedora
sudo dnf update PackageKit
# Проверка версии (уязвимы версии 1.3.4 и ниже)
dpkg -l | grep -i packagekit # Debian/Ubuntu
rpm -qa | grep -i PackageKit # RHEL/Fedora
# Проверка состояния демона
systemctl status packagekit
# Отключение PackageKit
sudo systemctl disable --now packagekit
⚠️ После отключения станут недоступны GUI-инструменты управления пакетами, такие как GNOME Software
Данный репозиторий создан в исследовательских и образовательных целях.
Эксплуатация уязвимостей и несанкционированный доступ к системам могут повлечь уголовную ответственность; все тесты проводились в изолированной среде, принадлежащей автору.
| Дата | Событие |
|---|
| 2026-04-08 | Deutsche Telekom Red Team → первичное уведомление Red Hat/PackageKit |
| 2026-04-10 | Мейнтейнеры PackageKit приняли отчет и подтвердили воспроизведение |
| 2026-04-13 | Подготовлен черновой вариант закрытого патча |
| 2026-04-15 | Уязвимость передана в Canonical |
| 2026-04-19 | Закрытое уведомление вендоров дистрибутивов |
| 2026-04-22 | Релиз PackageKit 1.3.5, присвоение CVE, публичное раскрытие |