
大文字と小文字を区別しないファイルシステム上の悪意のあるGitフックを介したCVE-2021-21300の任意コード実行を示します。悪用手順と防御策を含みます。
CVE-2021-21300は、Git(バージョン2.14.2から2.30.1)における重大な脆弱性であり、攻撃者がシンボリックリンクと大文字小文字を区別しないファイルシステムを悪用して、被害者のマシン上で任意のコードを実行することを可能にします。
A/post-checkout を .git/hooks/post-checkout として解決する。Gitは.git/hooks/に保存されたユーザー定義フックを許可します。大文字小文字を区別しないファイルシステムでは:
A/post-checkout が .git/hooks/post-checkout として解釈される可能性があります。A/ を .git/hooks/ に置き換え、制限を回避します。Aと、悪意のあるコマンドを含むファイルA/post-checkoutを作成します。Aを.git/hooks/へのシンボリックリンクに置き換えます。A/post-checkoutを実行すると、実際には.git/hooks/内の悪意のあるファイルが実行されます。.git/hooks/へのシンボリックリンク。.gitattributesを作成して、A/post-checkoutのLFS処理をトリガーする。A/post-checkoutを追加する(例: "PWNED"と表示)。A/a、A/bを追加して正当に見せかける。A/を.git/hooks/へのシンボリックリンクに置き換える。git clone -c core.symlinks=true
git config --system core.symlinks true
##💡 その他の潜在的な防御策
Gitエイリアスで安全なクローンを自動化する
ディレクトリを作成する。
大文字小文字の区別を有効にする(Windows):
fsutil file setcasesensitiveinfo <DESTINATION FOLDER> enable
そのディレクトリにクローンする。
安全なクローンのためにこれらの手順を自動化するGitエイリアスを作成する。