针对 PackageKit 守护进程的本地权限提升漏洞利用程序。
通过 TOCTOU 竞态条件漏洞,将权限从非特权本地用户提升至root。
CVE-2026-41651(也称为 Pack2TheRoot)是 PackageKit 中的一个严重 TOCTOU(检查时间到使用时间) 竞态条件漏洞。PackageKit 是许多 Linux 发行版用于包管理抽象的系统服务。
该漏洞允许本地非特权用户在特定条件下操纵 PackageKit 事务状态并绕过授权检查。
拥有本地访问权限的攻击者可能能够:
root 身份执行软件包维护者脚本polkit 授权行为| 组件 | 受影响版本 | 修复版本 |
|---|---|---|
| PackageKit | 1.0.2 – 1.3.4 | 1.3.5 |
该问题源于 src/pk-transaction.c 中的多个逻辑缺陷。
攻击者(非特权) packagekitd (root)
│ │
├── 1. InstallFiles(SIMULATE) ───────► │ polkit 被绕过 → 状态 = READY
│ │ 排入异步调度队列
│
├── 2. InstallFiles(payload) ─────────► │ 缓存的标志被覆盖
│ │ 无效的状态转换被忽略
│
│ [调度发生] │
│ │ payload 以 root 身份处理
│ │ 维护者脚本被执行
│
└────────────────────────────────────► │ 权限提升成功
安装所需的开发库:
sudo apt update
sudo apt install libglib2.0-dev
git clone https://github.com/Lutfifakee-Project/CVE-2026-41651.git
cd CVE-2026-41651
gcc -o exploit CVE-2026-41651.c \
`pkg-config --cflags --libs glib-2.0 gio-2.0` \
-Wall
以非特权用户身份运行。
./exploit
______ ______ ___ ___ ___ ____ ___________ _______
/ ___/ | / / __/___|_ |/ _ \|_ |/ __/____/ / < / __// __< /
/ /__ | |/ / _//___/ __// // / __// _ \/___/_ _/ / _ \/__ \/ /
\___/ |___/___/ /____/\___/____/\___/ /_//_/\___/____/_/
CVE-2026-41651 - PackageKit TOCTOU 本地权限提升
═══════════════════════════════════════════════════════════════════
[*] 正在构建软件包...
[*] 启动竞态条件...
[*] 等待调度...
[*] 轮询 payload...
[+] 成功 — 权限提升完成
pkcon --version
或:
dpkg -l | grep packagekit
1.0.2 – 1.3.41.3.5 或更高版本sudo apt update
sudo apt upgrade packagekit
官方发布页面:
本仓库仅供以下用途严格提供:
作者不对因使用本项目而导致的任何滥用、非法活动或损害负责。
请勿针对您不拥有或未经明确许可的系统使用本软件。
| 缺陷 | 位置 | 描述 |
|---|
| BUG 1 | 第 4036 行 | InstallFiles() 在没有正确状态验证的情况下覆盖缓存的事务标志和路径 |
| BUG 2 | 第 876–881 行 | pk_transaction_set_state() 静默拒绝向后状态转换 |
| BUG 3 | 第 2273–2277 行 | pk_transaction_run() 在调度期间(而非授权时)读取缓存的标志 |
| BYPASS | 第 2893–2900 行 | SIMULATE 标志 (0x4) 跳过 polkit 授权检查 |