Git、コード実行などにつながる6件の脆弱性を修正
出典: github.com

分散型バージョン管理システムのGitで、6件の脆弱性を修正するセキュリティアップデートが公開されました。細工されたリポジトリの取得時に任意のコードが実行される問題や、マージ処理でメモリーが破損する問題などが対象です。

修正はGit 2.56.1に含まれ、旧バージョン向けにも提供されています。開発者の端末に加え、利用者に代わってリポジトリを処理するサービスにも影響する可能性があります。

修正版は2.50系から2.56系まで提供

修正版はGit 2.56.1のほか、2.55.1、2.54.1、2.53.1、2.52.1、2.51.3、2.50.2です。旧系列向けの修正も用意されています。Gitを同梱するアプリケーションにも更新が必要です。

GitHubのサービスにも修正が適用されています。対象はgithub.com、GitHub Enterprise Cloud、データ所在地を指定できるGitHub Enterprise Cloudです。GitHub Enterprise Server向けには、3.19.15、3.20.11、3.21.9、3.22.4が提供されています。

GitHub DesktopとGitHub Copilotアプリについては、修正版Gitを含む更新のリリースが調整されています。GitHub CodespacesとGitHub Actionsにも修正版Gitが提供される予定です。これらの環境でもGitを使った処理が行われます。

再帰クローンでコード実行のおそれ

CVE-2026-111760は、Gitが管理するファイルのパス長を扱う際に整数値が切り捨てられる問題です。リポジトリを構成する別のリポジトリをサブモジュールといい、それらを含めて取得する操作を再帰クローンと呼びます。細工されたリポジトリを再帰クローンすると、任意のコードが実行されるおそれがあります。

極端に長いパスが検証を通過した後、より短い名前で書き込まれることがあります。攻撃者はこの食い違いを利用し、サブモジュールの「.git」ファイルをシンボリックリンクに置き換えられます。シンボリックリンクは別の場所を参照するファイルです。

リンク先に悪意ある設定やフックが置かれていると、Gitがそのディレクトリを使う際に攻撃者のコードが実行される可能性があります。フックは特定の操作に連動して実行される処理です。修正では、長さが切り捨てられる前に極端に長いパスを拒否します。

参照先と署名の処理にも問題

CVE-2026-113408は、空のリポジトリをGitの通信プロトコルv2でクローンする際の参照先の検証に関わります。悪意あるサーバーが不正なパスを含むブランチ名を通知すると、後のブランチ更新で意図しない場所に書き込みが生じるおそれがあります。修正後は通知された参照先を受け入れる前に検証します。

CVE-2026-114467は、メッセージからGPG署名を取り除く処理に関する問題です。2つを超える署名を含むよう細工されたタグをマージすると、メモリーが破損し、サービス拒否につながる可能性があります。利用者に代わってマージを行うホスティングサービスも影響を受けます。

この問題は、署名が最大2つであるという処理上の前提から生じていました。修正では固定サイズの配列を取り除き、任意の数の署名を扱えるようにしています。

マージとパッチのサイズ計算を修正

CVE-2026-105437は、大きなマージ結果に必要なメモリーのサイズ計算で整数があふれる問題です。競合が多数あり、競合箇所を示すマーカーのサイズが大きい場合などに発生します。確保した領域の外へ書き込むことで、ヒープと呼ばれるメモリー領域が破損するおそれがあります。

ローカルでのマージに加え、信頼できない内容をマージするアプリケーションやホスティングサービスが影響を受けます。修正ではサイズに適した型と計算時の検査を使用し、安全に表現できないサイズの出力を伴うマージを拒否します。

CVE-2026-114469は、バイナリーパッチを適用する際の範囲外読み取りに関わります。圧縮されたパッチが展開後に約1 GiBの上限を超えても、従来の入力サイズ検査を通過する場合がありました。修正では、処理前に宣言された展開後のサイズも検査します。

インポート処理と各OSでの更新

CVE-2026-114466は、コマンドの流れからリポジトリを構築する「git fast-import」に関する問題です。一部の機能を通じて任意のファイルが読み取られ、エラーメッセージから内容が漏れる可能性があります。別のオプションではファイルの作成や既存ファイルへの追記が可能でした。

修正後、これらの機能は入力ストリーム内で指定されても原則として拒否されます。呼び出し側が「--allow-unsafe-features」を明示的に有効にした場合は使用できます。GitHubは、ストリームの生成元を信頼できる場合に限り、このオプションを有効にするよう案内しています。

Windows向けにはGitの公式サイトからGit for Windowsを入手できます。Git for Windowsは自動更新されず、新しいインストーラーで更新できます。macOS向けにもGitの公式サイトでインストーラーが提供されており、Homebrewを使ったインストールと更新も可能です。