Zenn
🌟

GitHub Action を commit hash で管理する

2025/03/20に公開

概要

dependabot を利用して、GitHub Action の更新などをおこなっているわけですが、reviewdog/action-setup@v1 がサプライチェーン攻撃を受けた話などもあり対応作業したメモです。

https://www.wiz.io/ja-jp/blog/new-github-action-supply-chain-attack-reviewdog-action-setup

作業内容

GitHub Action のバージョンを指定する際は、タグではなく、commit hash を利用することが推奨されています(知らなかった)。

https://docs.github.com/en/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions#using-third-party-actions

なぜかというと、タグは commit hash へのポインタみたいなもので、タグをずらすことによって、意図していないバージョン(commit)のコードが利用される可能性があるから、ということらしい。commit hash を利用していれば、少なくとも、自分が指定したものが知らない間にずらされる心配はない。(もちろん、指定したものがすでにダメである場合はもうどうしようもないが)

色々実験してみた結果、バージョン指定が commit hash であれば、dependabot は commit hash を指定して PR を作ってくれるようだ。なので、いまタグで v1.2.3 のように指定されているものを commit hash にさえ置き換えておけば、次回からは問題なくなる。もしくは dependabot でなく renovate を利用すると、commit hash でやってくれるらしい。

個人的な用途だと renovate を使うまでもないので、今あるタグを commit hash に直すことにする。shunsuke_suzuki=san が pinact というタグを commit hash に置き換えるありがたいツールを作って下さっているのでこれを使う。

https://zenn.dev/shunsuke_suzuki/articles/pinact-pin-github-actions-version

リポジトリのトップで以下のようにすれば事足りた:

go run github.com/suzuki-shunsuke/pinact/cmd/pinact@latest run

これで置き換えられる。次回から dependabot は commit hash で PR を作ってくれるので、後はこれまで通りに運用すればよさそう。

Happy hacking!

Discussion

ログインするとコメントできます