- 各ブランチの変更点追跡に使われる人気のGitHub Actionで、侵害されたコミットを通じて CI/CDシークレットの流出の試み が発生
- 23,000件のRepoが影響を受け、GitHubはこのActionを削除したため、現在は利用不可
- 代替Actionへの置き換え と、公開ワークフローログで シークレットが露出した可能性がある ため確認のうえ キーのローテーションが必須
- StepSecurityの Harden-Runner が発見し、セキュリティを強化した代替Action step-security/changed-files を無料で提供中
事件の概要
- tj-actions/changed-filesは23,000件以上のリポジトリで使われており、侵害が発生
- 攻撃者はActionのコードを改変し、バージョンタグを悪意あるコミットに再指定
- これにより GitHub ActionsのビルドログにCI/CDシークレットが出力 された
- 公開されたワークフローログでシークレットが露出した可能性あり
- Harden-Runnerが想定外のエンドポイントを検知した後に問題を発見
- 悪意あるPythonスクリプトがRunner Workerプロセスからシークレットをダンプするよう動作
- すべてのタグが同一の悪意あるコミットハッシュ (
0e58ed8671d6b60d0890c21b07f8835ace038e67) に設定された
GitHubの対応措置
- GitHubはtj-actions/changed-files Actionを削除し、利用を停止
- 公式CVEは CVE-2025-30066
復旧対応方法
-
1. StepSecurityが提供するセキュアな代替Actionを使用
tj-actions/changed-files Actionを step-security/changed-files@v45 に置き換え
-
2. すべてのtj-actions/changed-files参照を削除
-
3. GitHub Actionsワークフロー実行ログを監査
- 最近の実行ログでシークレットが漏えいしていないか確認が必要
- 漏えいしたシークレットが見つかった場合は直ちにローテーション(再設定)が必要
-
4. GitHub Actionsの許可リストを設定
- 信頼できるGitHub Actionsのみ実行できるよう許可リストを構成:
- GitHubの設定で許可可能:
- Settings → Actions → Allow select actions
-
5. StepSecurity Harden-Runnerを設定
- Harden-Runnerでネットワークトラフィックとワークフロー実行の監視設定が可能
次のステップ
- GitHubへ問題報告完了 → GitHub Issue: #2463
- tj-actions/changed-filesリポジトリは削除済み
- CVE-2025-30066 として正式登録
- StepSecurity Harden-Runnerにより類似のセキュリティ問題の検知と防止が可能
- セキュリティ体制を強化し、リアルタイム監視を行うためHarden-Runnerの設定を推奨
2件のコメント
昨夜は動かなかったのですが、今はまた動いていますね
Hacker Newsのコメント
Renovateの作者兼メンテナーが攻撃シナリオを説明
ここ数年でサードパーティの依存関係や拡張機能に対する信頼が低下している
リポジトリは再びオンラインになり、開発者が説明を提供
Clickhouse で github_events を調査し、攻撃に使われたアカウントを確認
CI/CD の実行方法が GitHub 上の任意のリポジトリを列挙するものになっているのは衝撃的
StepSecurity の共同創業者がセキュリティインシデントを検知した方法を説明
GitHub Actions の標準的な使い方が、不変ではない git タグを使うこと自体に問題がある
不変の GitHub Actions が導入予定
maven-lockfile プロジェクトが自動マージされた PR を説明
GitHub Actions は依存関係に対して lockfile を使うべき