読者の皆様へ:ノイズを減らすための一連の機能を開発しました。関心のあるトピックについて電子メールとWeb通知を受け取ることができます。新機能の詳細をご覧ください。
Gitサブモジュール名の検証に対する脆弱性により、リモートの攻撃者が開発者マシン上で任意のコードを実行できる。さらに、攻撃者はシステムメモリの一部にアクセスできる。どちらの脆弱性もすでにGit 2.17.1、2.16.4、2.15.2、および他のバージョンでパッチが適用されている。
セキュリティ研究者のEtienne Stalmans氏によって報告されたように、Gitのパッチが適用されていないバージョンはサブモジュール名を検証しない。そのため、次の通りである。
リモートリポジトリは、リポジトリのクローン作成時に、ターゲットユーザのシステム上のファイルを作成または上書きするために特別に細工されたデータを返すことができます。その結果、ターゲットユーザのシステム上で任意のコードが実行できるようになります。
具体的には、Gitは$GIT_DIR/modules
ディレクトリ内のサブモジュールを、$GIT_DIR/.gitmodules
で定義された名前のディレクトリの下にミラーする。.gitmodules
ファイルの内容を巧妙に作り上げることにで、../
をサブモジュール名に埋め込み、Gitレポジトリの外側にサブモジュールを書き込むように指示することが可能である。悪質なポストチェックアウトフックと組み合わせることで、レポジトリを複製した直後に悪質なコードを実行することが可能になる。
この振る舞いの修正では、サブモジュール名のいくつかのルールを強制している。これにより、準拠していない名前はGitによって無視されるようになる。基本的に..
を許可せず、シンボリックリンクも認めない。これにより、確実に、サブモジュールディレクトリが$GIT_DIR
の外部に格納されないようにする。
Stalmans氏は、この脆弱性を悪用したGitHub Pagesでリモートコードを実行できると述べたが、攻撃が出回っていることは報告されていない。
修正された脆弱性の2つ目は、NTFSファイルシステムを使用するレポジトリに特有の脆弱性であり、攻撃者がランダムなメモリ内容を読み取れるようにNTFSパスの健全性チェックを欺くことができる。
Gitコミュニティは、Git 2.13.7の両脆弱性に対する修正を速やかに提供している。その修正は、Git 2.14.4、2.15.2、2.16.4、2.17.1にも適用されている。さらに、追加のセキュリティレベルとして、これらのリリースでは、問題のある.gitmodules
ファイルを含むリポジトリへのpushes
を拒否する。これは、次のことを意味する。
ホスティングサイトが悪意のあるコンテンツの拡散を防ぐことで、古いクライアントを使っている顧客を保護します。
GitHubやその他のコードホスティングサービスはすでにシステムにパッチ適用済みである。
Rate this Article
- Editor Review
- Chief Editor Action