git の `--end-of-options` フラグ:知られざる引数インジェクション対策

git's –end-of-options Flag

git の `--end-of-options` フラグ:知られざる引数インジェクション対策

git には `--` とは別に `--end-of-options` というフラグが存在する。これは、リビジョンとパスを分けるために `--` が既に使われているため、オプション解析の終了を示す別のマーカーとして導入された。しかし、このフラグはサブコマンドごとにサポートが異なり、`git checkout` や `git reset` では 2024 年まで使えなかった。この記事では、パッケージマネージャやツールが git を呼び出す際に、このフラグを使わずに引数インジェクション(CWE-88)の脆弱性を生む問題を解説。実際の CVE 事例を挙げ、libgit2 などのライブラリ利用の利点も考察する。

`--` と `--end-of-options` は git では別物であり、それらを同じものとして扱うのは、私がこれまでいくつかの場所で見てきた誤りです。

この日のほかの記事

2026-07-23