Gitのセキュリティ脆弱性に関する発表
Published at February 14, 2023
Category: Open Source,Security,Git
Author: Taylor Blau

本日、Git プロジェクトは、バージョン 2.39.1 以降に存在するセキュリティ脆弱性(CVE-2023-22490およびCVE-2023-23946) に対応した新バージョンをリリースしました。それぞれ、Gitのローカルクローンの最適化、およびgit apply
に影響を及ぼします。
CVE-2023-22490
リポジトリをクローンするとき、Git はクローンの URL スキームに適したトランスポート機構を選択して使用します。しかし、ローカルリポジトリをクローンする場合、Git は代わりに別のローカルクローン最適化を使い、コピー元からコピー先まで直接ファイルをコピーします。
特別に作られたリポジトリは、ローカルでないトランスポートを使うときにローカルクローン最適化を使うようにGitをだますことができます。Gitは、$GIT_DIR/objects
ディレクトリにシンボリックリンクが含まれるリポジトリからのクローンを中断します。しかし、トップレベルの$GIT_DIR/objects
ディレクトリは、それ自体がシンボリックリンクである可能性があります。
この2つを組み合わせることで、被害者のファイルシステムから既知のパスに基づいた任意のファイルをクローンの作業コピーに含めることができ、CVE-2022-39253 と同様の方法でデータを流出させることが可能です。
CVE-2023-23946
Git では、git apply
でリポジトリの履歴に任意のパッチを適用することができます。悪意のあるパッチが作業コピーの外にファイルを作成するのを防ぐために、git apply
はシンボリックリンクを越えてファイルを書き込もうとするパッチを拒否します。
しかし、悪意のあるパッチがそのシンボリックリンクを最初に作ってしまうと、この仕組みがだまされてしまうことがあります。これを利用して、信頼できないソースから悪意のあるパッチを適用すると、被害者のファイルシステム上に任意のファイルを書き込むことができます。
Gitの最新バージョンにアップグレードする
これらの脆弱性から保護する最も効果的な方法は、Git 2.39.2 にアップグレードすることです。すぐにアップデートできない場合は、以下のステップを踏んでリスクを減らしてください。
- 信頼できないリポジトリに対して
git clone
を--recurse-submodules
付きで実行しないようにする。 - 信頼できないリポジトリからの入力に対して
git apply
/git am
を実行しないようにします。
ワークフローでサブモジュールが必要な場合は、各.gitmodules
ファイルに疑わしいモジュールの URL が含まれていないことを確認した上で、サブモジュールの各レイヤーを繰り返しクローンすることができます。
パッチを適用しても安全かどうかわからない場合は、git apply --stat
でパッチの内容を調べます。シンボリックリンクとその先にあるファイルを作成するようなパッチを適用するのは避けましょう。
これらの攻撃からユーザーを守るために、GitHubは積極的な措置をとっています。具体的には、以下の通りです。
- CVE-2023-22490およびCVE-2023-23946において、GitHub.com が攻撃のベクトルとして使用されることを防ぐための緩和策を実施しました。
- 本脆弱性の悪用を防止するGitHub Desktopのリリースを本日2月14日以降に予定しています。
- GitHub CodespacesとGitHub Actionsに、Gitのバージョンをアップするためのアップデートを予定しています。
- GitHub Enterprise Serverに、パッチを適用したバージョンのGitのアップデートを予定しています。
CVE-2023-22490のクレジットは yvvdwf に、CVE-2023-23946のクレジットは GitLab の Joern Schneeweisz に帰属します。この修正は、GitHub の Taylor Blau 氏と GitLab の Patrick Steinhardt 氏がそれぞれ行い、さらに git-security メンバがフィードバックとレビューを行っています。
Source
Git security vulnerabilities announced
Today, the Git project released new versions to address a pair of security vulnerabilities, (CVE-2023-22490 and CVE-2023-23946 ) that affect versions 2.39.1 and older. These affect Git’s local clone optimization, as well as git apply , respectively. CVE-2023-22490 When cloning a repository, Git …