概要

${{ }} テンプレート式はシェル起動前に展開されるため、攻撃者制御のコンテキスト(PR タイトル・ブランチ名・Issue 本文)をそのまま run に埋め込むとコマンドインジェクション成立。

対策

  • env で環境変数に渡して ${VAR} で参照
  • actionlint・zizmor で自動検出
  • サードパーティ Actions はコミットハッシュでピン留め

ソース記事