何が起きたか
Remote.pull() が位置引数の refspec を危険オプションの検査にかけないため、--upload-pack=コマンド のような値で任意のコマンドを実行されます。Git.ls_remote の URL、Repo.merge_base、IndexFile.move にも同様の検査漏れがあります。さらに、攻撃者のリポジトリを clone して Head.checkout() を呼ぶと、細工したブランチ名によってプロセスが読める任意のファイルを例外経由で読み出されます。
やること
3.2.0 へ更新します。CI、リポジトリ取り込み、スキャナーなど利用者の URL やブランチ名を扱うサービスは優先して更新してください。
出典
GitHub Advisory Database(GHSA-f9j4-qggq-h239)github.com英語 ↗GitHub Advisory Database(GHSA-w8jc-g24h-crhw)github.com英語 ↗GitHub Advisory Database(GHSA-23mf-xhv8-69c2)github.com英語 ↗上の要約は通り道編集部がまとめたものです。影響範囲と修正版は必ず各出典で確認してください。