テック技報最新号へ →
セキュリティ

GitHub Actions の uses をコミット SHA で固定する(pinact)

uses: actions/checkout@v4 をフルコミット SHA に置き換え、Action のタグ書き換えによる侵害を防ぐ。pinact で自動化できる。

@ftnext · 2026-10-09
#github-actions#supply-chain#pinning#ci

何を解決するか

  • タグ(@v4)は後から別コミットに付け替え可能。Action のメンテナが侵害されると、タグ参照している全リポジトリで悪性コードが CI シークレット付きで動く。

手順

sh
pinact run          # .github/workflows 内の uses を SHA に変換(コメントでバージョンを残す)
pinact run -u       # 最新版に更新しつつ SHA で固定

変換後のイメージ:

yaml
- uses: actions/checkout@<40桁のSHA> # v4.2.2
  • Renovate の helpers:pinGitHubActionDigests で継続的に更新するとよい。
  • AI エージェントのスキルも同じ考え方で、gh skill はスキルをタグやコミットに固定できる(GitHub Changelog)。

注意点

  • SHA 固定でも「固定したコミット自体が悪性」なら防げない。導入時にレビューする。
  • composite action や reusable workflow の内部で使われる Action はさらに先でタグ参照している場合がある。

出典

X の元の投稿を開く