GitHub Actionsでスクリプトインジェクション攻撃を防ぐ
GitHub Actionsでは inputs として入力を扱うことができる。${{ var }} はYAMLからみると、ただの文字列として扱われる。そのため、この inputs を run にそのまま渡してはいけない。
inputs: version: required: trueruns: using: composite steps: - run: ls ${{ inputs.version }} # version="a; cat /etc/passwd" で壊れるこの場合、環境変数に入れて使えばいい。環境変数に入れることで、ただの文字列ではなくシェルの変数として解釈される。
inputs: version: required: trueruns: using: composite steps: - run: ls "$INPUT_VERSION" env: INPUT_VERSION: ${{ inputs.version }}より安全のために環境変数をクオートしておくといいが、シェル変数をクオートしない場合は単語分割とパターン展開されるので、この2つが必要ならクオートしなくてもいい。
おそらくリポジトリにCodeQLを設定すると検出してくれるんじゃないか。