PackageKit ローカル権限昇格 (TOCTOU レースコンディション)
CVSS v3.1: 8.8 (HIGH) | 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 を無条件に上書き (Line 4036)
↓
Bug 2: 状態遷移拒否時に汚染されたフラグをロールバックせずメモリに残存 (Line 876~881)
↓
Bug 3: pk_transaction_run() 実行時に汚染されたフラグを読み込み (Line 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 割り当て、公開開示 |