BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Gitの脆弱性により任意のコードが実行できる

Gitの脆弱性により任意のコードが実行できる

ブックマーク

原文(投稿日:2018/06/03)へのリンク

読者の皆様へ:ノイズを減らすための一連の機能を開発しました。関心のあるトピックについて電子メールと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

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT