jdx/mise-action で mise のバージョンを固定する
GitHub Actions におけるサプライチェーン攻撃への対策として、サードパーティのアクションを利用する際に commit SHA を指定するという方法がある。これによって、commit SHA を書き換えない限りはずっと固定のバージョンが使われることになり、ワークフローの書き換えなしでいつの間にか悪意のあるコードが実行されていた、ということを防げる。
mise を GitHub Actions で使用するための公式のアクションとして、jdx/mise-action がある。これを使うときも commit SHA を指定しておけば安心かというと、個人的には不十分なのではないかと考えている。というのも、jdx/mise-action では、mise のバージョンを指定しなかった場合に自動的に最新の mise がダウンロードされるようになっている。つまり、最新の mise が侵害された場合には、ワークフローの書き換えなしで悪意のあるコードが実行されることになってしまう。
対策としては、mise のバージョンも固定してしまえばよい。mise のバイナリは GitHub Release からダウンロードされるようになっており、mise のリポジトリでは Immutable Releases が有効なので、バージョンを固定しておけば常に同じバイナリが使われることになる。
- uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: version: 2026.1.8jdx/mise-action を何度も使う場合、すべての箇所でバージョンを指定するのはかなり面倒である。変数を使うのもよいが、Composite Action を使うのがスッキリ書けてメンテナンスもしやすいのではないかと思う。
name: Setup misedescription: Setup mise with version pinningruns: using: composite steps: - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: version: 2026.1.8使う側では uses: jdx/mise-action@... の代わりに以下のようにすればよい。
- uses: ./.github/actions/setup-mise