
PackageKitのTOCTOU競合状態(CVE-2026-41651)を狙ったローカル権限昇格エクスプロイト。polkitバイパスと状態操作により、Linuxシステム上で非特権ユーザーからrootへ昇格します。
PackageKit デーモンを標的としたローカル権限昇格エクスプロイト。
TOCTOU 競合状態の脆弱性を利用して、非特権ローカルユーザーからrootに権限昇格します。
CVE-2026-41651 (別名 Pack2TheRoot) は、多くの Linux ディストリビューションでパッケージ管理抽象化に使用されるシステムサービス PackageKit における重大な TOCTOU (Time-Of-Check to Time-Of-Use) 競合状態の脆弱性です。
この脆弱性により、ローカルの非特権ユーザーが特定の条件下で PackageKit のトランザクション状態を操作し、認可チェックをバイパスできる可能性があります。
ローカルアクセスを持つ攻撃者は、以下のことが可能になる可能性があります。
root として実行polkit 認可動作をバイパス| コンポーネント | 脆弱なバージョン | 修正バージョン |
|---|---|---|
| PackageKit | 1.0.2 – 1.3.4 | 1.3.5 |
問題の原因は、src/pk-transaction.c 内の複数のロジック欠陥にあります。
| バグ | 位置 | 説明 |
|---|---|---|
| BUG 1 | Line 4036 | InstallFiles() が適切な状態検証なしにキャッシュされたトランザクションフラグとパスを上書きする |
| BUG 2 | Lines 876–881 | pk_transaction_set_state() が後方状態遷移を黙って拒否する |
| BUG 3 | Lines 2273–2277 | pk_transaction_run() が認可時ではなくディスパッチ時にキャッシュされたフラグを読み取る |
| BYPASS | Lines 2893–2900 | SIMULATE フラグ (0x4) が polkit 認可チェックをスキップする |
Attacker (unprivileged) packagekitd (root)
│ │
├── 1. InstallFiles(SIMULATE) ───────► │ polkit bypassed → state = READY
│ │ queued async dispatch
│
├── 2. InstallFiles(payload) ─────────► │ cached flags overwritten
│ │ invalid state transition ignored
│
│ [dispatch occurs] │
│ │ payload processed as root
│ │ maintainer scripts executed
│
└────────────────────────────────────► │ privilege escalation achieved
必要な開発ライブラリをインストール:
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 Local Privilege Escalation
═══════════════════════════════════════════════════════════════════
[*] Building packages...
[*] Starting race condition...
[*] Waiting for dispatch...
[*] Polling for payload...
[+] SUCCESS — privilege escalation completed
pkcon --version
または:
dpkg -l | grep packagekit
1.0.2 – 1.3.41.3.5 以降sudo apt update
sudo apt upgrade packagekit
公式リリース:
このリポジトリは、以下の目的に厳密に提供されます:
著者は、本プロジェクトによって引き起こされる誤用、違法行為、損害について一切の責任を負いません。
所有していない、または明示的なテスト許可を得ていないシステムに対して本ソフトウェアを使用しないでください。