PackageKit 本地权限提升(TOCTOU 竞态条件)
CVSS v3.1:8.8(高危) | CWE-367 | 发布时间:2026-04-22
本仓库整理了针对 2026 年 4 月公开的 PackageKit 本地权限提升漏洞 CVE-2026-41651(Pack2TheRoot) 的个人分析报告及研究资料。
| 项目 | 内容 |
|---|---|
| CVE ID | CVE-2026-41651 |
| 漏洞名称 | Pack2TheRoot |
| 受影响软件 | PackageKit 1.0.2 ~ 1.3.4 |
| 补丁版本 | PackageKit 1.3.5 |
| 攻击类型 | 本地权限提升(LPE) |
| 发现者 | Deutsche Telekom Red Team |
PackageKit 的 pk-transaction.c 中 3 个漏洞复合作用,导致本地非特权用户可获取 root 权限。
Bug 1:调用 InstallFiles() 时无条件覆盖 cached_transaction_flags(第 4036 行)
↓
Bug 2:状态转换被拒绝时,污染标志未回滚而残留在内存中(第 876~881 行)
↓
Bug 3:pk_transaction_run() 执行时读取被污染的标志(第 2273~2277 行)
↓
结果:绕过 polkit 认证 → 以 root 权限安装任意软件包 → 生成 SUID bash
InstallFiles(SIMULATE=0x4, dummy) → 绕过 polkit 认证InstallFiles(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
⚠️ 禁用后 GNOME Software 等 GUI 软件包管理工具将无法使用
本仓库仅用于安全研究与学习目的。
利用漏洞及未经授权访问系统将受到法律处罚,所有测试均在本人拥有的隔离环境中进行。
| 日期 | 内容 |
|---|
| 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,公开披露 |