orangeitems’s diary

40代ITエンジニアが毎日何か書くブログ

Gitに危険な脆弱性が見つかった

f:id:orangeitems:20200418151948j:plain

 

バージョン管理システムについておさらい

Gitというのはバージョン管理システムで広く世の中に使われています。あのLinuxの大元を作ったLinusさんが2週間で作ったっていうのは有名な話です。

 

hyoshiok.hatenablog.com

 

だいたい、バージョン管理システム自体が一般の人々にとってはなんじゃらほいですよね。プログラマーが主に使います。プログラムって、どんどん修正していきますよね。で、修正したら機能が追加されたり動きが良くなったりするのですが、たまにとんでもないバグが埋め込まれていたりします。で、aaa.prgというソースコードを作っていて、aaa.prg.20200418とかってファイルを作ったりして古いソースコードファイルのバックアップを取ったりすると、そのうちバックファイルだらけになったり、バックアップを戻したタイミングで戻るべきではないものまで戻ったりして、現場は大混乱に陥ります。

で、このバージョン管理システムを使うと、あるファイルについて誰かが編集しているときは読み取り専用になり、修正が完了したら反映できる。そして前のバージョンに戻せたりもする。一人だったらそんなに便利じゃないですがこれが十人とかのチーム開発になるとバージョン管理システム無しでは生きていけません。

で、Git自体は普通のサーバーで動くんですがサーバー管理がめんどくさい。というのでインターネットのサービスとして動いている中で有名なのが、GitHubやGitLabです。

そういえば、GitHubはこの前、かなり無料化されましたね。

 

jp.techcrunch.com

 

GitHubを買収したMicrosoftも相当儲かっているので、余力でこんなこともやれちゃうんですね。現在のStay Home状況も、Microsoftにとっては追い風でしょう。

(Amazonもおかげで本業のEC事業が儲かってるはず。逆風なのは、広告事業に頼っているGoogleやFacebook。広告主が傷んでますからね・・。)。

 

まあそういうわけで、バージョン管理システムの中でもメインストリームであるGitについて、ヤバい脆弱性です。

 

 

CVE-2020-5260

ざっくり言えば、下記のニュース通りです。

 

www.security-next.com

分散型バージョン管理システム「Git」に深刻な脆弱性が含まれていることがわかった。アップデートがリリースされている。

同システムの「credential helper」において改行を含む細工したURLを用いることで、Gitクライアントより認証情報を任意のホストに送信させることが可能となる脆弱性「CVE-2020-5260」が明らかとなったもの。

 

で、もっと深掘りするために、CVEのサイトを確認・・。

 

Google翻訳様にて翻訳。

影響を受けるバージョンのGitには、Gitをだまして、攻撃者が制御するホストにプライベート認証情報を送信させることができる脆弱性があります。 Gitは、外部の「資格情報ヘルパー」プログラムを使用して、オペレーティングシステムが提供する安全なストレージからパスワードやその他の資格情報を保存および取得します。エンコードされた改行を含む特別に細工されたURLは、意図しない値を資格情報ヘルパープロトコルストリームに挿入する可能性があり、資格情報ヘルパーが別のサーバー(たとえば、good.example.com)に対するパスワードを取得して、別のサーバー(たとえば、evil.example.com)。前者の資格情報が後者に送信されます。 2つの関係に制限はありません。つまり、攻撃者は、任意のホストの保存された資格情報を選択したホストに提示するURLを作成できます。この脆弱性は、悪意のあるURLをgit cloneにフィードすることで引き起こされる可能性があります。ただし、影響を受けるURLは疑わしく見えます。可能性のあるベクトルは、GitサブモジュールやGitを中心に構築されたパッケージシステムなど、ユーザーに表示されないURLを自動的に複製するシステムを経由するものです。この問題は、2020年4月14日に公開されたバージョンでパッチされ、v2.17.xに戻ります。変更をさらにバックポートしたい人は、コミット9a6bbeeを適用することでそれを行うことができます(完全リリースにはgit fsckの追加チェックが含まれますが、そのコミットはクライアントを脆弱性から保護するのに十分です)。パッチが適用されたバージョンは、2.17.4、2.18.3、2.19.4、2.20.3、2.21.2、2.22.3、2.23.2、2.24.2、2.25.3、2.26.1です。

 

ああそういや、GitHub Desktopを自宅のパソコンに入れてたなってので、今バージョンどうなってたっけ。

 

C:\WINDOWS\system32>git --version
git version 2.20.1.windows.1

 

おっと・・ということで、私の端末にも、脆弱なGitクライアントが導入されていますね。ということで、ちゃんとバージョンアップしましたよ。

 

C:\WINDOWS\system32>git update-git-for-windows
Git for Windows 2.20.1.windows.1 (64bit)
Update 2.26.1.windows.1 is available
Download and install Git for Windows 2.26.1 [N/y]? y
############################################################################################ 100.0%############################################################################################# 100.0% C:\WINDOWS\system32>git --version
git version 2.26.1.windows.1

 

この脆弱性、変なURLを踏むと、Gitの認証情報を別のサーバーに取られちゃうというヤバいバグです。大事なソースコードを壊されかねません。

こうやって、ユーザーが気付いて更新するならいいんですけど、まずはこの脆弱性、どれだけの人が気付くんだか、ということで記事にしてみました。

 

 

セキュリティーの人、がんばれ

まあ、全員がんばれ、なのですが、こんな状況でネットワークのセキュリティーを保っていくのは普段以上に大変だと思います。

こういった脆弱性が見つかるのは、見つけてくれる人がいて知らせてくれる人がいて、そして修正してくれる人がいるから、秩序は保たれています。感謝します。

とりあえず私はアップデートをすぐやりました。

Gitを使っている人が周りの人にいるならば、知らせてあげてください。