概要
GitHubは10月14日、GitHub Actionsのワークフローが参照するアクションの依存関係を固定する「ワークフローロックファイル」機能をパブリックプレビューで公開した。対象はGitHub Enterprise Cloud、データレジデンシー付きEnterprise Cloud、Team、Freeの各プランで、gh actions-lockというCLI拡張を使ってワークフローごとに段階的に導入できる。GitHubは背景として「アクションが侵害された場合、タグやブランチの参照先が差し替えられると、リポジトリ側のコードを一切変更せずに悪意あるコードがワークフローに持ち込まれてしまう」と説明しており、タグ・ブランチ参照を悪用したサプライチェーン攻撃への対策を主眼に置いている。
ロックファイルの仕組みと運用
ロックファイルを有効化すると、ワークフローが参照するアクションとその推移的な依存関係のコミットハッシュが.github/workflows/actions.lockに記録される。一度「オンボード」されたワークフローは、以後タグやブランチの参照先が移動しても記録済みのコミットのみを実行するため、公開後に差し替えられた悪意あるコードが紛れ込む経路を塞ぐ。gh actions-lock拡張はロックファイルの生成・更新に加えて、ファイルを変更せずに最新性を検証する機能や、CI上で陳腐化をチェックする仕組みも提供する。さらに管理者向けには、エンタープライズ・組織・リポジトリ単位でロックファイルの利用を強制できる「Require lockfile」ポリシーも用意されており、組織全体でのガバナンス強化に使える。
Dependabotとの連携と今後
Dependabotがオンボード済みワークフロー内のアクションに対してバージョン更新のプルリクエストを作成する際には、同じプルリクエスト内でロックファイルの対応するエントリも同時に再生成される。これにより、参照先のバージョン表記とロック対象のコミットハッシュが常に同期した状態で保たれ、更新時にロックファイルの手動メンテナンスが発生しない。なおGitHub自身が注意を促している通り、ロック機能そのものは依存先アクションの安全性を保証するものではなく、ロック前に利用者がアクションのコードを確認しておく必要がある。サプライチェーン攻撃対策としては、SBOM生成や署名検証などと組み合わせた多層的な防御の一部として位置づけられるだろう。