概要
- GitHub Actions のポリシー機能は、アクションや再利用ワークフローの利用制限を目的とした仕組み
- しかし、この仕組みには 簡単に回避できる脆弱性 が存在
- GitHub側はこれをセキュリティ問題と認識していない が、筆者は問題視
- 回避方法やその影響、対応策について詳細に解説
- セキュリティ境界の誤認リスクがあるため 注意喚起
GitHub Actionsのポリシー機能とその回避
- GitHub Actions はGitHubが提供する CI/CDサービス
- ユーザーは ワークフロー内で実行するアクションや再利用ワークフロー の信頼性を十分に確認する必要
- アクションは Actions Marketplace などから取得
- 人気や活動状況、所有者の信頼性などで判断するが、 これらはあくまでヒューリスティック
- 有名なアクションでも サプライチェーン攻撃 のリスク
- 大規模なCI/CD構成では 管理が困難、未審査のアクション混入リスク
ポリシー機能の内容
- Actions policies で利用できるアクション/ワークフローを 組織・リポジトリ単位 で制限可能
- 設定例:
OWNER/REPOSITORY@TAG-OR-SHA形式で限定- 例:
actions/javascript-action@v1.0.1
- 例:
- ワイルドカード や カンマ区切り で複数指定も可能
- 同一組織内のみ許可 などのプリセットも用意
ポリシーの回避方法
-
uses: で指定するアクションは、本来リモートリポジトリを参照
-
しかし、 ローカルパス(例: uses: ./) も指定可能
-
ワークフロー内で git clone 等でアクションリポジトリをローカルに落とし、 uses: ./tmp/checkout のように実行すれば ポリシーを回避 可能
-
実際の例:
- run: | mkdir -p ./tmp git clone https://github.com/actions/checkout.git ./tmp/checkout - uses: ./tmp/checkout -
この方法で 制限を簡単に突破 できる現状
対応策とその課題
- GitHub側の対策案
- ローカルパス指定(uses: ./)も ポリシー対象 とし、許可されない場合は 拒否
- これにより バイパス封じ が可能
- ただし、 既存ユーザーの一部に影響 が出る可能性
- もしくは、 現仕様の制限事項として公式ドキュメントで明示
- 利用者が リスクを正しく認識 できるようにする
なぜこの問題が重要か
- 形だけのポリシー は、セキュリティ境界として 誤認されやすい
- 実際には 回避可能な仕組み であるにも関わらず、 安全だと誤信 されることでリスク増大
- 多くの場合、 開発者が業務上仕方なくバイパス するケースが多い
- GitHub側は修正または明確な注意喚起 を行うべき
まとめ
- GitHub Actionsのポリシー機能 には 簡単な回避手段 が存在
- セキュリティ境界の誤認 が組織・プロジェクトにリスクをもたらす
- GitHub側の対応 (修正またはドキュメント明記)が望まれる
- 利用者は 現状のリスクを十分認識 し、運用設計を行う必要