Gitプロジェクトは、6件のセキュリティ脆弱性を修正したバージョン2.56.1を公開しました。その一つは、悪意のあるリポジトリを再帰的にクローンした際に、他人のコードを実行されてしまうものです。残りは、意図しないファイルへの書き込みや、マージおよびバイナリパッチ処理中のメモリ破損に関するものです。Gitはエディタ、自動化ツール、多くの企業のサーバーに組み込まれているため、あらゆる環境で更新が必要です。
用語の確認、事実に入る前に 再帰的クローンとは、リポジトリをそのサブモジュールも含めてコピーすることです。サブモジュールは、あるリポジトリの中に置かれた別のリポジトリです。フックは、Gitが特定のタイミングで起動するプログラムです。パストラバーサルは、特殊な要素を含むパスを使って許可されたフォルダの外に出る攻撃手法です。CVEは、公開された脆弱性を識別するためのコードです。
Gitプロジェクトは何を公開したのか?
GitHubのブログによると、修正はバージョン2.56.1に含まれています。2.55.1、2.54.1、2.53.1、2.52.1、2.51.3、2.50.2のシリーズ向けにもバックポートが用意されています。
GitHubは、2.56.1または自分のシリーズに対応する修正版への移行を勧めています。Gitのコピーを含むアプリケーションも更新してください。日常の作業でGitがどれほど広く使われているかは、開発者向けGitの解説でもご紹介しました。
再帰的クローンでコード実行に至るまでの経緯は?
この欠陥はCVE-2026-111760として追跡されています。インデックス管理における整数の切り捨てが原因です。非常に長いパスはGitの検査を通過しますが、その後より短い名前でディスクに書き込まれ、攻撃者によって .git に変えられてしまうことがあります。
こうして、サブモジュールの .git ファイルが、悪意のあるフックや設定を含むフォルダへのシンボリックリンクに置き換えられます。The Hacker Newsの説明によると、Gitは .git フォルダをシンボリックリンクで置き換えることは拒否しますが、新しくクローンされたサブモジュールでは .git がファイルです。Gitがそのフォルダを使用すると、攻撃者のコードが実行される可能性があります。
修正では、長さが切り捨てられる前に、長すぎるパスを破棄するようにしています。
残りの5件の脆弱性は何か?
- CVE-2026-113408。プロトコルv2で空のリポジトリをクローンする際、悪意のあるサーバーがパストラバーサルを含む名前を指定できます。ファイルベースの参照バックエンドでは、後の更新によって想定外のフォルダの外へ書き込まれる可能性があります。
- CVE-2026-114467。GPG署名を3つ以上持つタグをマージすると、スタックが破損し、サービス拒否につながる可能性があります。
- CVE-2026-114469。サイズは小さいものの展開後に非常に大きくなるバイナリパッチが、約1GiBの制限を回避し、Gitをクラッシュさせます。
- CVE-2026-105437。多数のコンフリクトを伴う非常に大きなマージで、conflict-marker-size属性の値が大きいと、ヒープメモリが破損します。
- CVE-2026-114466。fast-importの3つの機能によって、任意のファイルを読み取られたり、ファイルを作成してデータを追記されたりする可能性があります。
最後のケースについては、Gitは受信ストリームでこれらの機能を拒否するようになりました。ただし、--allow-unsafe-features オプションで許可できます。このオプションは、ストリームを生成するプログラムを信頼している場合にのみ使用してください。
誰が最もリスクにさらされ、GitHubは何を更新したか?
ユーザーに代わってマージを行うサーバーが最も影響を受けやすいと考えられます。CVE-2026-105437を割り当てたGitLabは、サーバーがマージリクエストをマージ可能か確認するために使う git merge-tree が標的になりやすいと指摘しています。この属性はリポジトリの .gitattributes ファイルで設定されるため、リクエストを開くことができる人が欠陥を引き起こす可能性があります。
GitHubは、github.comとGitHub Enterprise Cloudを修正済みと発表しています。Enterprise Serverでは、3.19.15、3.20.11、3.21.9、3.22.4のいずれかのバージョンが必要です。GitHub Desktop、Copilotアプリ、Codespaces、Actionsには、修正されたGitが提供される予定です。
知っておくべき限界
情報源には、実際に行われている攻撃や、各CVEの深刻度の記載はありません。これらの欠陥がすでに悪用された形跡があるかどうかもわかっていません。The Hacker Newsによると、火曜日の19時09分(UTC)時点で、Git for Windowsには2.56.1をベースにしたバージョンがまだ提供されていませんでした。そのため、このプラットフォームの対応時期は変わる可能性があります。GitHub Desktop、Copilot、Codespaces、Actionsの対応時期も明らかになっていません。
デジタル業務に携わる人にとって何が変わるか
最初に行うべきことは、Gitがどこで動いているかを洗い出すことです。自分のコンピュータだけでなく、Gitのコピーを内包するプログラム、継続的インテグレーションのシステム、他人のリポジトリを処理するサービスも対象になります。第三者のリポジトリを扱うサーバーを管理している場合は、自動化の仕組みも更新してください。すぐに更新できない場合は、GitLabが示す回避策として、各リポジトリの info/attributes ファイルに conflict-marker-size=7 を追加するか、信頼できないリポジトリに対してこれらのチェックを無効にする方法があります。セキュリティ更新を管理しているホスティングを利用している場合は、この作業の一部を任せることができます。
私たちの見解
脆弱性は6件ありますが、伝えたいことは一つです。Gitは信頼できない入力を処理するソフトウェアとして扱うべきで、単なるローカルツールとして扱うべきではありません。私たちは外部のソースからリポジトリをクローンし、マージし、パッチを適用することを深く考えずに行っていますし、自動化の仕組みも代わりにそれを行っています。最も現実的なリスクは、他のプログラムの中に潜んでいるGitのコピーです。誰かがそれを思い出すまで、更新されないことがほとんどです。GitHubが挙げている予防策は代替策としては有用ですが、あくまで代替策にすぎません。Gitを集中的に使うツールについては、GitHub Rubiconに関する記事も書いています。そこでは、信頼できない入力という問題がさらに重要になっています。
よくある質問
どのバージョンのGitをインストールすればよいですか?
2.56.1、またはお使いのシリーズに対応する修正版、すなわち2.55.1、2.54.1、2.53.1、2.52.1、2.51.3、2.50.2のいずれかをインストールしてください。独自のGitのコピーを含むアプリケーションも更新してください。
面識のないリポジトリをクローンしなければ十分ですか?
役には立ちますが、それだけでは不十分です。GitHubは、信頼できるサーバーからのみクローンし、信頼できない提供元からの再帰的クローン、マージ、バイナリパッチを避けるよう勧めています。ただし、これらの予防策は更新の代わりにはならないと明記しています。
最も深刻な脆弱性はどれですか?
情報源には順位の記載はありません。再帰的クローン中にコードを実行できるCVE-2026-111760が、報道の中心になっています。
Git for Windowsはすでに更新されていますか?
The Hacker Newsによる最新の確認時点では、まだ更新されていません。火曜日の19時09分(UTC)時点で、2.56.1をベースにしたリリースタグは見当たりませんでした。
GitHubのユーザーは何かする必要がありますか?
状況によります。GitHubはgithub.comとEnterprise Cloudのバージョンをすでに修正しています。Enterprise Serverを使っている場合は、記載されたバージョンのいずれかに移行してください。ローカルのツールを使っている場合は、Gitを更新してください。
今後数日で確認すべきGitの更新
修正版は存在しますが、配布はまだ段階的です。まだリリースを出していない提供元の動向を追うのがよいでしょう。
- Git for Windowsが2.56.1をベースにしたビルドを公開する時期を確認し、公開され次第すぐに更新してください。
- GitHub Desktop、Copilotアプリ、Codespaces、Actionsの修正版がいつ届くかを確認してください。
- コードホスティングのサーバーを管理している場合は、更新できるまでGitLabの回避策を検討してください。




