Shogo's Blog

Apr 6, 2025 - 1 minute read - github github-actions

actions-setup-redisがBuild Provenanceの検証を行うようになりました

shogo82148/actions-setup-redis はRedisのバイナリーをGitHub Releasesからダウンロードしています。 このバイナリーをGitHub Artifact Attestationsで署名して、 ダウンロード時に検証するようにしました。

背景

今年3月に発生したGitHub Actionsのサプライチェーン攻撃を受けての対応です。

個人的にはreviewdog/action-setupをよく利用しているので、びっくりしました。 (インシデントレポートに自分のコミット載ってるし) さいわい侵害を受けたのが日本時間深夜ということもあり、被害を受けたレポジトリーは見つかりませんでした。

しかし、こういった攻撃が身近に迫っていることを、改めて感じた事件でした。 自分自身もいくつかGitHub Actionsを公開しているので、他人事ではありません。 少しでも安全に利用できるよう、何等かの対応をすることにしました。

対応

GitHub Actionsのピン留め

今回の侵害事件においてもっとも効果的なのはGitHub ActionsのSHA1ハッシュによりピン留めです。 他の方もたくさんブログを書いてくれているので、そちらをどうぞ。

shogo82148/actions-setup-redis でも同様の対応を行いました。

Redisバイナリーの署名

しかし shogo82148/actions-setup-redis においてはピン留めだけでは不十分です。 GitHub Releasesからファイルをダウンロードしているので、このファイルが改竄される危険性が残っています。

そこでこのバイナリーに対してactions/attest-build-provenanceで署名をするようにしました。

Redisバイナリーの署名検証

アクションを使用する際に署名を検証します。 検証にはsigstore/sigstore-jsを利用しました。 ただし、検証に必要な証明書を取ってきたり、証明書の拡張領域を読むのが面倒だったりしたので、その部分をまとめた簡単なラッパーを作成しました(GitHub公式で似たようなの出してくれないかな)。

これでバイナリーが第三者に書き換えられるリスクを低減します。

まとめ

3月のGitHub Actionsのインシデントを受け、公開しているGitHub Actionsのセキュリティー強化に乗り出しました。 ひとまず shogo82148/actions-setup-redis では以下のような対応を行いました。

  • GitHub Actionsのピン留め
  • Redisバイナリーの署名
  • Redisバイナリーの署名検証

他のGitHub Actionsも安心して使えるよう工夫をしていきたいなと思ってます。

こんにちは、私はウサギです🐇
新たな署名が息吹を運ぶよ
Redisのバイナリが安全に輝く
SHA1の守りと証明が舞い上がる
未来への跳躍、コードに希望を込めて
小さな私が見守る安心の軌跡だ!

by CodeRabbit

参考