概要
${{ }} テンプレート式はシェル起動前に展開されるため、攻撃者制御のコンテキスト(PR タイトル・ブランチ名・Issue 本文)をそのまま run に埋め込むとコマンドインジェクション成立。
対策
envで環境変数に渡して${VAR}で参照- actionlint・zizmor で自動検出
- サードパーティ Actions はコミットハッシュでピン留め
${{ }} テンプレート式はシェル起動前に展開されるため、攻撃者制御のコンテキスト(PR タイトル・ブランチ名・Issue 本文)をそのまま run に埋め込むとコマンドインジェクション成立。
env で環境変数に渡して ${VAR} で参照