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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-31133 — CVE-2025-31133 PoC | Kitploit
ツール/GitHubGitHub/skynet-f-nvidia/cve-2025-31133
特権昇格脆弱性分析エクスプロイトペネトレーションテストレッドチーミングコンテナエスケープ
GitHubskynet-f-nvidia/cve-2025-31133

CVE-2025-31133

CVE-2025-31133 PoC

リポジトリを見る
212210ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2025-31133 PoCエクスプロイト

このドキュメントでは、runc の脆弱性 CVE-2025-31133 に対する提供された Proof-of-Concept (PoC) スクリプトの機能について説明します。

概要

  • 脆弱性: CVE-2025-31133 - runc の maskedPaths 処理におけるシンボリックリンクの競合状態。
  • 影響: 悪意のあるコンテナが maskedPaths の保護をバイパスし、ホストシステム上の機密ファイルに書き込むことができます。これは コンテナエスケープ を構成します。
  • PoCの目標: コンテナ内部からホストの /proc/sys/kernel/core_pattern ファイルを変更することで、脆弱性を安全に実証すること。
  • 安全性: このPoCは非破壊的です。対象ファイルに文字列 "pwned" を書き込むだけで、ホスト上で任意のコードを実行しません。また、元の値を復元する手順も提供します。

脆弱性の説明

コンテナのOCI仕様 (config.json) における maskedPaths 機能は、コンテナが機密システムファイルにアクセスするのを防ぐセキュリティメカニズムです。この機能は、これらの機密パスに対して /dev/null (空のデバイスファイル) をバインドマウントすることで動作し、コンテナ内部からこれらのファイルを事実上読み取り不可かつ書き込み不可にします。

脆弱性 (CVE-2025-31133) は Time-of-Check to Time-of-Use (TOCTOU) 競合状態です。エクスプロイトは次のように動作します:

  1. 欠陥: runc がコンテナをセットアップする際、機密パス (例: /proc/sys/kernel/core_pattern) をマスクするバインドマウントのソースとして、コンテナのrootfsにある dev/null ファイルを使用する準備をします。
  2. 競合: runc が rootfs/dev/null へのパスを解決してから実際にマウント操作を実行するまでの間に、わずかな時間の窓があります。
  3. エクスプロイト: 攻撃者は、ホスト上で rootfs/dev/null ファイルを正規のデバイスノードと、ホスト上のターゲットファイル (/proc/sys/kernel/core_pattern) を指すシンボリックリンクとの間で連続的かつ非常に高速に切り替えるスクリプトを作成できます。
  4. 競合に勝利: タイミングが完璧に合えば、runc は rootfs/dev/null がシンボリックリンクである瞬間にマウント操作を実行します。これによりカーネルがシンボリックリンクをたどり、/proc/sys/kernel/core_pattern に対する意図されたマスク操作が失敗します。
  5. コンテナエスケープ: マスクが失敗したため、コンテナ内部のパスは保護されなくなります。コンテナ内で実行中のプロセスは /proc/sys/kernel/core_pattern に書き込むことができ、これによりホストのファイルが直接変更され、コンテナエスケープが達成されます。

このPoCはこの手法を使用して /proc/sys/kernel/core_pattern に書き込みます。これは、プロセスがクラッシュしたときにホスト上で任意のコード実行につながる可能性があるため、このようなエクスプロイトの一般的なターゲットです。ただし、このPoCは書き込みプリミティブが存在することを証明するために、無害な文字列のみを書き込みます。


PoCスクリプトの動作方法

poc.sh スクリプトは、上記のプロセス全体を自動化します。

  1. セットアップとクリーンアップ:

    • runc バイナリ、コンテナ名、rootfsパスの変数を定義します。
    • スクリプトによって作成された以前のコンテナやファイルを確実に削除する、堅牢な cleanup 関数を含みます。この関数は、終了時、中断時、または終了時に自動的に呼び出されます。
  2. 準備:

    • ホストの /proc/sys/kernel/core_pattern の元の内容を一時ファイルに保存します。これは後でエクスプロイトが成功したかどうかを確認し、ユーザーがシステムを復元するのに役立ちます。
    • 最小限のコンテナrootfs (./rootfs) と config.json ファイルを作成します。
    • config.json は /proc/sys/kernel/core_pattern を maskedPaths の下に明示的にリストします。これはエクスプロイトがバイパスしようとするまさにその機能です。
  3. レース関数 (symlink_race)

    • これがエクスプロイトの核心です。バックグラウンドで実行されるように設計されています。
    • 20秒間継続するタイトなループに入ります。
    • ループ内で、以下の処理を繰り返し実行します:
      1. rootfs/dev/null を削除します。
      2. rootfs/dev/null からターゲットホストファイル (/proc/sys/kernel/core_pattern) への シンボリックリンク を作成します。
      3. 微小な時間 (500マイクロ秒) だけ一時停止します。
      4. シンボリックリンクを削除します。
      5. rootfs/dev/null を適切な キャラクタデバイス (mknod) として再作成します。
      6. やや長い時間 (5000マイクロ秒) だけ一時停止します。
    • この高速な切り替えにより、競合状態が発生する機会の窓が作られます。
  4. 実行:

    • symlink_race 関数がバックグラウンドプロセスとして開始されます。
    • 直後に、スクリプトは runc run ... を実行してコンテナを作成し起動します。これが runc が maskedPaths を適用しようとするタイミングです。
    • コンテナが実行中になると、スクリプトは runc exec を使用してコンテナ内部でコマンドを実行します: echo 'pwned' > /proc/sys/kernel/core_pattern。
  5. 検証:

    • スクリプトはバックグラウンドのレースプロセスが終了するのを待ち、コンテナをクリーンアップします。
    • その後、ホストの /proc/sys/kernel/core_pattern の現在の内容を読み取ります。
    • 現在の内容を期待される "pwned" 文字列および元の値と比較します。
    • 結果に基づいて、明確な [+] EXPLOIT SUCCEEDED! または [-] Exploit did not succeed. メッセージを表示します。

使用方法

前提条件:

  • 脆弱性のあるバージョンの runc。
  • busybox-static がインストールされていること (コンテナのシェル用)。
  • runc を実行し /proc を変更するための root 権限 (sudo)。

手順:

  1. スクリプトを poc.sh として保存します。
  2. 実行可能にします: chmod +x poc.sh。
  3. sudo で実行します: sudo ./poc.sh。

出力の解釈

  • 成功: [+] EXPLOIT SUCCEEDED! メッセージが表示された場合、競合状態に勝利したことを意味します。ホストの /proc/sys/kernel/core_pattern がコンテナ内部から正常に変更され、脆弱性が確認されました。
  • 失敗: [-] Exploit did not succeed. が表示された場合、この試行では競合に勝利できませんでした。競合状態は確率的であり、システムのタイミングと負荷に大きく依存します。スクリプトをさらに数回実行してみてください。

システムの復元 (成功した実行後)

PoCはシステムファイルを変更します。元の状態に復元するには、スクリプトが提案するコマンドを実行します:

# The 'ORIGINAL_PATTERN' will be the actual value from your system
echo 'original_core_pattern_value' | sudo tee /proc/sys/kernel/core_pattern
ツールをダウンロード