GitHub Actionsは最も弱いリンクです
14時間前原文(nesbitt.io)
概要
- 近年のオープンソースサプライチェーン攻撃はGitHub Actionsワークフローの脆弱性に集中。
- pull_request_targetやissue_commentなどの危険なトリガーが多用されている現状。
- キャッシュ汚染、タグの不変性欠如、過剰な権限などが共通要因。
- セキュリティ対策は一部オプトインであり、デフォルトの安全性が不足。
- zizmor等の外部ツール利用やワークフロー見直しが急務。
近年のオープンソースサプライチェーン攻撃の実態
- ほぼ全ての事例で**.github/workflowsのYAMLファイル**が攻撃の起点。
- UltralyticsによるPyPIへの仮想通貨マイナー混入、nxパッケージの資格情報窃取化、tj-actions経由での23,000リポジトリの秘密漏洩、Trivyの短期間での二度の侵害、elementary-dataのコメント経由マルウェア公開など、多様な攻撃例。
- 各事例でGitHub Actionsの仕様通りの挙動が悪用。
- uses: 行が毎回可変タグを解決することで、依存性の固定や検証が困難。
- ワークフローの多くがプライベートCI前提の安全設計のまま、公開リポジトリやフォークでも利用されている状況。
主なインシデントの流れと特徴
- 2024年11月のspotbugs事件
- pull_request_targetトリガーで信頼されないフォークのコードをビルド・実行。
- PAT流出が後のtj-actions/changed-files侵害につながる。
- Ultralytics事件
- pull_request_targetでキャッシュ汚染、後続のリリースワークフローでマルウェア実行。
- tj-actions事件(2025年3月)
- mutableタグを利用した間接依存関係の乗っ取り。
- 23,000リポジトリが秘密情報を漏洩。
- s1ngularity事件(nx)
- PRタイトルのテンプレート展開経由でコードインジェクション、npmトークン悪用。
- Trivy事件
- pull_request_targetワークフローの設定ミスで複数回侵害。
- 過去バージョンのタグ書き換えによる“安全なバージョン”の裏切り。
- elementary-data事件
- issue_commentトリガー、$展開によるbash実行で即座にPyPIへマルウェア公開。
共通する要因
- pull_request_targetやissue_commentなど、未検証イベントでフル権限ワークフロー実行。
- シェルスクリプトの$展開による無検証テキスト挿入。
- GITHUB_TOKENのデフォルト権限(2023年2月以前作成リポジトリはwrite)。
- アクションのバージョン管理がmutableなgit ref、タグ書き換えが容易。
- キャッシュの信頼境界を超えた共有。
GitHubの対応と課題
- セキュリティロードマップ発表(2024年)
- ワークフローロックファイル、pull_request_targetの禁止ポリシー、ワークフロー単位のシークレットスコープ、egressファイアウォールなどを計画。
- すべてオプトイン、公開まで数か月のプレビュー、既存ワークフローの互換性重視。
- 既存の危険なデフォルトが温存されており、長期的なリスクが継続。
効果的な対策
- zizmor等のサードパーティ製リンター活用。
- 4行程度のYAML追加で危険なワークフローの自動検出。
- pull_request_targetやissue_commentの利用見直し、明示的なpermissions:ブロックの設定。
- uses: のSHA固定、外部アクションの信頼性検証。
- キャッシュの書き込み制御と信頼境界の明確化。
- 必要ならGitHub Actionsからの移行も検討。
Trusted Publishingの現状とリスク
- PyPI, npm, RubyGems, crates.io等がOIDCベースのTrusted Publishingを採用。
- 長期APIトークンのリポジトリ内保存を避けられる利点。
- ワークフローの安全性がパッケージ配布の根幹に。
- GitHub Actionsの脆弱性がサプライチェーン全体のリスクへ直結。
- OIDC連携の大半がGitHub Actions経由で実施されている現状。
今後の展望と提言
- セキュア・バイ・デフォルトな設計への転換が急務。
- オプトイン方式ではなく、危険なデフォルトの見直しが必要。
- 既存のワークフロー破壊を恐れず、安全性を最優先する判断。
- 外部ツールによる監査・自動検出とプラットフォーム自体の改善の両輪推進が重要。