.git\configのGit脆弱性

Posted: 2014/12/21 カテゴリー: Uncategorized
タグ:, ,

本日、Gitコミュニティは、最悪の場合、開発者のマシンが乗っ取られる可能性がある、Gitにおける問題を公表しました。これは、Gitエコシステムの大半にわたって存在する問題であり、MicrosoftのGit実装やWindowsに固有の問題ではありません。問題と、Gitリポジトリを使っている我々のお客様をこの問題から保護されるようにするために、我々が講じた対策を説明します。

最初に、Hg (Mercurial) コミュニティの協力に感謝したいと思います。Hgでも、類似の問題が発見されました。彼らは時間をとってGitを調べ、同じ問題が存在することを発見しました。彼らは、コミュニティの適切な人々に注意深く知らせ、情報を共有し、問題を解決するための準備ができるまで、公表を制御しました。これは、コミュニティにおける協力の素晴らしい例です。

問題

Gitには、自分のローカルGitリポジトリの.gitフォルダーに格納される、configと呼ばれるファイルがあります。このファイルには、多数の個人設定が含まれています。その1つが、gitコマンドのエイリアスです。エイリアスを使うと、好きなことを何でも行うように、ほとんどすべてのgitコマンドを再目的化できます。

通常、Gitクライアントは、このファイルを上書きすることを避けています。たとえあなたが.git\configをコミットし、共有リポジトリにプッシュしたとしても、他の人のGitクライアントが、そのファイルを自分のプライベート リポジトリにチェック アウトすることはありません。しかし、.gitフォルダー名のさまざまな変形 (たとえば、大小文字混在のgIT、GiTなど、Windowsのファイル名短縮形の.git~123、無視できるUnicodeコードポイントを含む.g\u200cit\configなど) が、Gitクライアントのフィルタリング ロジックに捕捉されていなかったバグが、発見されました。そのため、誰かが、これらの変形の1つを使って悪意のあるconfigファイルをプッシュすると、他の人のGitクライアントがそれをチェック アウトし、自分の個人設定を含むconfigファイルを上書きし、Gitコマンドが乗っ取られるでしょう。これは、少なくとも (大小文字を区別しないファイルシステムである) Windows NTFS、Mac OS X HFS+ファイルシステムに影響を及ぼします。

危険性

危険性は、思ったほど悪くはありません。あなたに対してこれを行う誰かは、あなたがプルするリポジトリのコミット権限を持っている必要があります。企業内では、これは恐らく内部からの攻撃でしょう。最も可能性の高い (唯一ではありませんが、最も可能性の高い) シナリオは、小規模なOSSプロジェクトです。大規模なOSSプロジェクトには、通常、非常によく知られた/信頼されたコミッターがいます。また、次のように、この問題を解決する対策が講じられています。

修正

我々とGitコミュニティの他のメンバーが協力し、この問題を公表するための準備をしてきました。他人の代弁をするつもりはありませんが、GitとGitHubが両方ともこの問題を解決していることを知っています。我々 (Microsoft) が講じた対策について、具体的に説明します。

(1) 約1週間前、我々は、サーバーが.git\configファイルのプッシュの受け取るのを防ぐパッチを、VS OnlineとCodeplexの両方に適用しました。バグは実際にはサーバー側ではありません (クライアント側です) が、これを行うことによって、パッチが適用されていないクライアントが我々のサービスで悪用される可能性を減らしています。

(2) TFS 2013 (RTMとUpdate 4の両方) 向けの同じサーバー修正を準備しました。TFS 2013は、GitリポジトリをサポートしているTFSの唯一のバージョンです。この修正によって、TFS管理者は、我々がVS Online、Codeplexで取ったのと同じ予防対策を講じることができます。TFS 2013のUpdate 4以外 (Update 1、2、または3) を使っている場合は、パッチを適用する前に、Update 4にアップグレードする必要があります。

(3) お客様が安全のためにクライアントにパッチを適用できるように、Visual Studio 2013 RTM、Visual Studio 2013 Update 4、VS 2012 VSIX拡張機能向けのパッチをリリースしました。Visual StudioはGitエイリアスを使っていませんが、我々は、(開発者が初めてコマンドラインでgit CLIを使った時に、攻撃が完了する、といった形で) VSを悪意のあるconfigファイルを人々のマシンにダウンロードするための攻撃ベクトル (攻撃方法/経路) として使えないようにしたいことに注意してください。VS 2013のUpdate 4以外 (Update 1、2、または3) を使っている場合は、パッチを適用する前に、Update 4にアップグレードする必要があります。

(4) また、これらすべての一環として、(我々のGit実装の中核として、我々の多くが共有している) LibGit2オープン ソース ライブラリにパッチを適用するために、我々はコミュニティを協力しました。

他の重要な関連ポストは、こちらです:

このポストが問題と問題に対してできることを明確に説明していることを、願っています。

関連情報

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中