
CVE-2025-48384は、広く使用されている分散型バージョン管理システムであるGitにおける重大な脆弱性です。これは、設定値における復帰文字(CR)の不適切な処理に起因し、サブモジュールのチェックアウト中にパストラバーサルの問題を引き起こす可能性があります。この欠陥により、特定の条件下で任意のコード実行が可能になる可能性があります。この脆弱性は2025年7月8日に公開され、2025年8月26日に最終更新されました。2025年8月25日に米国サイバーセキュリティ・インフラストラクチャ安全保障庁(CISA)の既知の悪用された脆弱性(KEV)カタログに追加され、実環境での活発な悪用が示されています。是正期限は2025年9月15日です。
この問題は、Gitが設定値を処理する方法に起因します:
この不整合により、パスに末尾のCRが含まれる場合、サブモジュールが誤った場所にチェックアウトされる可能性があります。攻撃者がこの変更されたパスをサブモジュールのフックディレクトリに指すシンボリックリンクを設定し、サブモジュールに実行可能なpost-checkoutフックが含まれている場合、チェックアウト後にフックスクリプトが意図せず実行され、任意のコード実行につながる可能性があります。
この脆弱性は、Gitの設定解析における解釈の競合を悪用します:
submodule/path<CR> のようなサブモジュールパスは、CRが失われた後、submodule/path と解釈される可能性があります。.git/hooks/post-checkout)へのシンボリックリンクを作成でき、git submodule update や git clone --recurse-submodules などの操作中に悪意のあるフックの実行を可能にします。これは以下のように分類されます:
攻撃経路はネットワークベース(AV:N)で、複雑度は高く(AC:H)、必要な権限は低く(PR:L)、ユーザー操作が必要で(UI:R)、スコープは変更され(S:C)、機密性、完全性、可用性に高い影響(C:H/I:H/A:H)を与えます。
この脆弱性は、以下の修正済みリリースより前のGitバージョンに影響します:
この脆弱性は、Linux、macOS、Windowsを含むさまざまなプラットフォーム上のGitに影響しますが、特に開発者環境、CI/CDパイプライン(例:GitHub Actions、GitLab CI)、および信頼できないリポジトリからGitサブモジュールがクローンされるあらゆる場所で関連性があります。
--recurse-submodules を使用したリポジトリのクローンなどのユーザー操作。CVSSの詳細はNVDではまだ完全にはスコアリングされていません(CVSS 4.0は保留中)が、アドバイザリのCVSS 3.1メトリクスに基づくと、重大な深刻度(推定CVSS 8.8、以前に広範なCVEリストで指摘されたとおり)に相当します。
--recurse-submodules)クローンしないでください。この脆弱性は、バージョン管理システム、特にサブモジュールにおける安全な処理の重要性を浮き彫りにしています。本番環境または開発環境でGitを使用している場合は、活発な悪用が確認されているため、直ちに更新を優先してください。
.gitmodules は https://github.com/s41r4j/CVE-2025-48384-submodule.git を指していますが、PoCはオフラインテスト用にローカルコピーへ書き換えます。実行:
bash scripts/poc.sh
処理内容:
$HOME/flag.txt にフラグを作成します。malicious-submodule-repo/ をコンテナ内の /tmp にコピーします。post-checkout フックをトリガーするため、チェックアウトを強制します。/tmp/flag.txt を出力します。注意事項:
sub^M(CR)です。サニタイズされたパス sub はシンボリックリンクを介して .git/hooks に解決されるため、サブモジュールが追跡する post-checkout が実際のフックとして配置され、実行されます。bash scripts/update-gitlink.sh を実行してください。