LoginSignup
2
1

More than 3 years have passed since last update.

Git LFSに「素人でも理解できる」脆弱性発見。(CVE-2020-27955)

Posted at

TL;DR

もしあなたがWindowsユーザーで、Git LFSを使っているなら、いますぐバージョン2.12.1にアップデートすること。

脆弱性の概要

Git LFSに脆弱性が発見され、約1日前(2020年11月5日)にバージョン2.12.1で修正、そして数時間前にCVE(CVE-2020-27955)が公表されました。影響を受けるプラットフォームはWindowsのみのようです。(理由は下)

発見者による情報によると、脆弱性の攻略は極めて簡単です:

  • 攻撃者がリポジトリを用意し、
  • git.batという名のファイルを作る。中身はご自由に。
  • 適当なファイルを作成し、Git LFSでトラックする。
  • これらをコミットし、pushする。
  • 被害者がこのリポジトリをgit cloneすると、git.bat内のコードが実行される。

原因

攻略法からもわかる通り、これは「カレントディレクトリから実行ファイルを実行する」という、Uncontrolled Search Path Elementの問題です。「DLLハイジャッキング」と原理は同じです。

Go言語は書いたことがありませんが、以下の説明でだいたい理解できます (リリースノートより):

This occurs because on Windows, Go includes (and prefers) the current directory when the name of a command run does not contain a directory separator. This has been solved by always using PATH to pre-resolve paths before handing them to Go.

この問題は、Windowsにて、ディレクトリの区切り文字が含まれないコマンド名を実行するときに、(実行ファイルの検索場所に)カレントディレクトリを含め、そして優先するからです。この問題は、Goにコマンドを渡す前に、いつも環境変数PATHを使って事前に実行ファイルを検索することによって修正されました。

分析

私の分析では以下の通りです:

  • CVSSv3.1: 8.8(High) (CVSS3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H)
  • CVSSv2: 6.8(High) (CVSSv2/AV:N/AC:M/Au:N/C:P/I:P/A:P)

参考資料

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1