セキュリティ

バージョン管理システム「Git」にセキュリティ上の脆弱性、Git for Windowsユーザーやマルチユーザー環境利用者が取るべき対処法は?


プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムの「Git」に、セキュリティ上の脆弱性があると指摘されています。すでにこの脆弱性に対応した最新バージョンとなる「Git 2.35.2」が公開されており、Git for Windowsユーザーやマルチユーザー環境でGitを使用しているユーザーには、Gitのアップグレードが推奨されています。

Git for Windows' uninstaller vulnerable to DLL hijacking when run under the SYSTEM user account · Advisory · git-for-windows/git · GitHub
https://github.com/git-for-windows/git/security/advisories/GHSA-gf48-x3vr-j5c3

Git security vulnerability announced | The GitHub Blog
https://github.blog/2022-04-12-git-security-vulnerability-announced/

問題となっている脆弱性のひとつが「CVE-2022-24765」で、悪意のある攻撃者が作業ディレクトリ上の共有スペースに「.gitディレクトリ」を作成できてしまうというもの。例えば、攻撃者が「C:\.git」というディレクトリに「config」というファイルを配置したとすると、リポジトリの外部で発生するすべてのGitコマンド呼び出しにその設定値を読み込ませることが可能となります。「core.fsmonitor」などの一部の設定変数は、Gitに任意のコマンドを実行させることができるため、脆弱性を悪用して任意のコマンドを実行させることも可能です。

Gitを利用するサービスの中でも最も著名なGitHubは、今回の脆弱性の影響を受けません。しかし、Git for Windowsユーザーやマルチユーザー環境でGitを使用しているユーザーは影響を受けるため、Gitを最新バージョンの「Git 2.35.2」にアップグレードすることが推奨されています。Git 2.35.2では、ディレクトリトラバーサルが現在のユーザーから所有権を変更した時に停止するトップレベルディレクトリを探す際のGitの動作を変更することで脆弱性に対処しており、この動作に例外を設けるための新しい複数値「safe.directory」も用意されています。


さらに、すぐにGitのアップグレードができないというユーザーのために、リスクを軽減するための最も効果的な方法も紹介されています。方法は以下の通り。

・ユーザープロファイルの親ディレクトリを含むように環境変数の「GIT_CEILING_DIRECTORIES」を定義(macOSなら「/Users」、Linuxなら「/home」、Windowsなら「C:\Users」)
・作業ディレクトリが信頼できるリポジトリ内にない場合、マルチユーザー環境でGitを実行しない

また、Git Bash、posh-git、VisualStudioのGit for Windowsといったツールでは、内部でGitコマンドを実行することに注意するよう指摘されており、マルチユーザー環境では最新バージョンへアップグレードするまでこれらのツールの使用を避けることが推奨されています。


もうひとつ問題となっている脆弱性が、ユーザーの一時ディレクトリで実行されるGit for Windowsのアンインストーラーに影響をおよぼす「CVE-2022-24767」です。Git for Windowsのアンインストーラーは一時フォルダにコピーされてから実行されますが、この一時フォルダは既定で誰でも書き込み可能となっているため、ここに悪意のあるファイルを配置することでアンインストーラー実行時に悪意のあるファイルを読み込んでしまう可能性があります。

この脆弱性からマシンを保護するための最も効果的な方法は、Git for Windowsをバージョン2.35.2にアップグレードすることです。すぐにアップグレードできない場合は、以下の方法でリスクを軽減することが推奨されています。

・アップグレードするまでGit for Windowsのアンインストーラーを実行しない
・ユーザーアカウントの権限をユーザーのみが書き込み可能となるように変更
・アンインストーラーを実行する前に不明なファイルを削除
・ユーザーアカウントとしてではなく管理者アカウントとしてアンインストーラーを実行

この記事のタイトルとURLをコピーする

・関連記事
Gitの操作を間違ってしまった時に簡単に元に戻せる「git undo」を使う方法 - GIGAZINE

バージョン管理システム「Git」がどのように発展してきたのかを可視化した「Git: An Interactive Development History」 - GIGAZINE

GitとGitHubの機能をひとつのバイナリに詰め込んだ「Fossil」レビュー - GIGAZINE

バージョン管理システム「Git」の使い方はどのように教えるのが良いのか? - GIGAZINE

ハッカーがPHPの開発者になりすましてソースコードにバックドアを仕込んでいたことが判明 - GIGAZINE

in ソフトウェア,   セキュリティ, Posted by logu_ii

You can read the machine translated English article here.