Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
pack2theroot-lab — CTFスタイルのDockerラボ CVE-2026-41651(Pack2TheRoot)用:PackageKitのpermissive-polkitによるローカル権限昇格 | Kitploit
ツール/GitHubGitHub/dinosn/pack2theroot-lab
防御ツール特権昇格コンテナセキュリティ脆弱性分析エクスプロイトCTFペネトレーションテスト学習と教育レッドチーミングラボと実践
GitHubdinosn/pack2theroot-lab

pack2theroot-lab

CTFスタイルのDockerラボ CVE-2026-41651(Pack2TheRoot)用:PackageKitのpermissive-polkitによるローカル権限昇格

814ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見る

Pack2TheRoot Lab — CVE-2026-41651

Docker化されたCTF形式のローカル権限昇格ラボです。PackageKit デーモンに存在する12年前の脆弱性である Pack2TheRoot アドバイザリ(CVE-2026-41651)を題材としており、ドイツテレコムのレッドチームによって 2026年4月22日 に公開されました。

このラボには 3つのコンテナ が含まれています:寛容なpolkit設定のCTFチャレンジ、堅牢化された比較対象、そして脆弱なPackageKitをソースからビルドして実際のCVE-2026-41651の根本原因エクスプロイトを実行する 完全なTOCTOUエクスプロイト再現 です。


1. 含まれるもの

コンテナポート役割エクスプロイト結果
pack2theroot-vulntcp/2222 (ssh)PackageKit ≤ 1.3.4 + 寛容なpolkitルール細工されたRPMによる root 権限取得
pack2theroot-patchedtcp/2223 (ssh)同一構成だがpolkitを堅牢化エクスプロイト失敗
pack2theroot-exploit—ソースからビルドした脆弱なPackageKit 1.3.4TOCTOU D-Busレースによる root 権限取得

さらに:

  • プレイヤー向けチャレンジ概要(docs/CHALLENGE.md)
  • 段階的なヒント(docs/HINTS.md)
  • 完全なウォークスルーとフラグ(docs/SOLUTION.md)
  • エクスプロイトフローの図解(docs/diagrams/)
  • 防御側ツール:バージョン確認、IOCモニター、サイドバイサイド比較、暫定polkit緩和スクリプト。

2. 脆弱性の概要

根本原因 — pk-transaction.c における3つの連鎖バグ

このエクスプロイトは、同じトランザクションに対して2つの非同期D-Bus InstallFiles() 呼び出しを送信します:最初に SIMULATE(polkitをバイパスし、GLibアイドルコールバックをキューに追加)、その後すぐに NONE + 悪意のあるパッケージ(アイドルが発火する前にキャッシュされたフラグ/パスを上書き)。GLibの優先順位付けにより、両方のD-Busメッセージがアイドルコールバックの前にディスパッチされることが保証されます — つまりこれはタイミングレースではなく決定的に動作します。

既知のIOC(アドバイザリより):

root@kitploit:~
journalctl --no-pager -u packagekit | grep -iE 'emitted_finished|pk_transaction_finished_emit|pk-transaction\.c:514'

3. クイックスタート

root@kitploit:~
git clone https://github.com/dinosn/pack2theroot-lab.git
cd pack2theroot-lab
docker compose build
docker compose up -d

CTFチャレンジ(寛容なpolkit経路)

root@kitploit:~
ssh labuser@localhost -p 2222     # パスワード: labuser
# その後 docs/CHALLENGE.md に従って進める

フラグは /root/flag.txt(モード 0400 root:root)にあります。形式: PACK2THEROOT{...}

TOCTOUエクスプロイト再現(実際のCVE根本原因)

root@kitploit:~
# ビルドして実行 — 自動モードでエクスプロイトを即座に実行:
docker compose run --rm exploit

# または手動モード:
docker compose run --rm --entrypoint /entrypoint.sh exploit
# コンテナ内で:
su - victim -c /exploit/cve-2026-41651

このエクスプロイトはC言語で2つの .deb パッケージをビルドし(外部ツール不要)、2回のD-Busレースを送信して、/tmp/.suid_bash にSUID bashを作成します。完全な技術的ウォークスルーは docs/SOLUTION.md を参照してください。

終了:

root@kitploit:~
docker compose down -v

4. リポジトリ構成

root@kitploit:~
pack2theroot-lab/
├── README.md
├── docker-compose.yml
├── docs/
│   ├── CHALLENGE.md         # プレイヤー向け概要
│   ├── HINTS.md             # 段階的なヒント(両経路)
│   ├── SOLUTION.md          # 完全なウォークスルー + フラグ
│   ├── references.md        # 一次および二次情報源
│   ├── threat-model.md      # 攻撃者/防御者の前提条件
│   └── diagrams/            # エクスプロイトフローのSVG図解
│       ├── 01-docker-build.svg
│       ├── 02-container-startup.svg
│       ├── 03-exploit-execution.svg
│       ├── 04-dbus-race-sequence.svg
│       ├── 05-attack-overview.svg
│       └── 06-auto-mode-full-run.svg
├── exploit/
│   ├── Dockerfile           # 脆弱なPackageKit 1.3.4をソースからビルド
│   ├── entrypoint.sh        # dbus + polkitd + packagekitd を起動
│   ├── Makefile
│   └── src/
│       └── cve-2026-41651.c # TOCTOUエクスプロイト(公開PoC)
├── vulnerable/
│   ├── Dockerfile
│   ├── entrypoint.sh
│   └── policy/
│       └── 10-pack2theroot-lab-misconfig.rules   # CTFチャレンジ
├── patched/
│   ├── Dockerfile
│   ├── entrypoint.sh
│   ├── local/                # 1.3.5バックポートRPMをここに配置(任意)
│   └── policy/
│       └── 10-pack2theroot-lab-hardened.rules    # 修正版
└── scripts/
    ├── exploit-check.sh         # バージョン、polkit、D-Bus、IOCを確認
    ├── check-version.sh         # VULNERABLE vs PATCHED 判定
    ├── check-preconditions.sh   # pkcon / polkit / D-Bus の健全性確認
    ├── monitor-ioc.sh           # アドバイザリのIOCをjournalで監視
    ├── compare-env.sh           # 両コンテナを差分比較
    └── apply-polkit-mitigation.sh  # 未パッチホスト向け暫定堅牢化

5. 図解

docs/diagrams/ ディレクトリにはエクスプロイトフローを示すSVG図が含まれています。任意のブラウザで開いてください:

6. CTFチャレンジのプレイ方法

docs/CHALLENGE.md を参照してください。要約:

  1. labuser としてSSH接続(パスワード labuser)。
  2. polkitルールを偵察する。そのうちの1つが寛容すぎます。
  3. 悪意のあるRPMをビルドする(rpm-build、rpmdevtools がインストール済み)。
  4. pkcon install-local --allow-untrusted でインストールする。
  5. %post スクリプトレットがrootとして実行されます。/root/flag.txt を読み取ってください。

行き詰まった? docs/HINTS.md には段階的に具体的なヒントがあります。docs/SOLUTION.md は、解けた後か、本当に解説が必要な場合にのみ開いてください。

7. 防御側ツールの実行

どちらかのコンテナ内で、任意のユーザーとして:

root@kitploit:~
/opt/lab/check-version.sh         # VULNERABLE または PATCHED 判定
/opt/lab/check-preconditions.sh   # 露出の自己チェック
/opt/lab/exploit-check.sh         # バージョン + polkit + D-Bus + IOC確認
/opt/lab/monitor-ioc.sh           # IOCをjournalで監視

ホストからサイドバイサイドで:

root@kitploit:~
./scripts/compare-env.sh

脆弱なコンテナに暫定polkit緩和を適用:

root@kitploit:~
docker exec pack2theroot-vuln /opt/lab/apply-polkit-mitigation.sh
# その後エクスプロイトを再試行 — 失敗するはずです。

8. パッチ済みイメージ — バックポート状況

patched イメージはPackageKitのバージョン状況を正直に扱います:

  • ディストリビューションが現在提供しているPackageKitをインストールします。
  • インストールされたバージョンが実際のパッチかディストリビューションのプレースホルダーかを示す明確なバナー(/etc/pack2theroot-banner)を表示します。
  • バージョンに関係なく、認証なしのインストール経路をブロックする 堅牢化されたpolkitルール を同梱します。

ディストリビューションがバックポートを公開したら、バージョン完全なパッチ済みイメージをビルドするには、RPMを patched/local/ に配置して再ビルドします:

root@kitploit:~
docker compose build --build-arg USE_LOCAL_RPM=1 patched

9. 安全性と責任ある使用

  • 信頼できないユーザーがいる共有Dockerホストに、どちらのコンテナイメージもデプロイ しないでください。
  • エクスプロイトコンテナは完全なdbus/polkitd/packagekitdスタックを実行するために --privileged が必要です。隔離された環境でのみ実行してください。
  • SSHパスワード(labuser)は意図的に弱いものです。再利用しないでください。
  • 許可された防御研究、教育、ペネトレーションテストのみを目的としています。

10. 参考文献

一次情報源:

  • Telekom Securityアドバイザリ — https://github.security.telekom.com/2026/04/pack2theroot-linux-local-privilege-escalation.html
  • NVD — CVE-2026-41651: https://nvd.nist.gov/vuln/detail/CVE-2026-41651
  • 上流修正 — PackageKit 1.3.5: https://github.com/PackageKit/PackageKit/releases/tag/v1.3.5
  • 修正コミット — 76cfb675: https://github.com/PackageKit/PackageKit/commit/76cfb675fb31acc3ad5595d4380bfff56d2a8697
  • 公開PoC — Vozec: https://github.com/Vozec/CVE-2026-41651

二次的な報道やディストリビューションの追跡状況については docs/references.md を参照してください。

11. ライセンス

MIT — LICENSE を参照してください。

ツールをダウンロード
フィールド値
CVECVE-2026-41651
名称Pack2TheRoot
分類ローカル権限昇格(TOCTOU / CWE-367)
コンポーネントPackageKit デーモン(pk-transaction.c)
影響を受ける範囲>= 1.0.2 かつ <= 1.3.4(12年間のリリース)
修正バージョンPackageKit 1.3.5(コミット 76cfb675、2026-04-22リリース)
CVSS 3.18.8 (HIGH) — AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
前提条件PackageKitを実行しているホスト上のローカル非特権シェル
発見者Deutsche Telekom Security GmbH — レッドチーム
バグ場所影響
BUG 1InstallFiles()(約4036行目)cached_transaction_flags と cached_full_paths を無条件に上書き — 状態ガードなし
BUG 2pk_transaction_set_state()(約876〜881行目)後方状態遷移をエラーにせず黙って破棄 — フラグはすでに汚染済み
BUG 3pk_transaction_run()(約2273〜2277行目)認可時ではなくディスパッチ時に cached_transaction_flags を読み取る
バイパスSIMULATEフラグ(約2893〜2900行目)PK_TRANSACTION_FLAG_SIMULATE(0x4)がpolkitを完全にバイパス
図説明
01-docker-build.svg2段階Dockerビルド — 脆弱なPackageKitのコンパイル
02-container-startup.svgコンテナ起動 — dbus、polkitd、packagekitdの起動
03-exploit-execution.svg注釈付きフェーズによるステップバイステップのエクスプロイト出力
04-dbus-race-sequence.svgD-Busシーケンス図 — BUG 1/2/3がGLib優先順位と連鎖する仕組み
05-attack-overview.svg高レベル攻撃フロー:タイムライン付きの攻撃者 vs システム
06-auto-mode-full-run.svg完全な --auto モードターミナル — コンテナ起動からrootシェルまで