30秒で判断
- 対応すべき人: cal.com(旧 calcom、現 cal.diy)をフォーク・クローンして自前のGitHubリポジトリで運用し、CIワークフローをそのまま使っている方
- 対応不要な人: cal.com を利用していない方、外部からのPull Requestを受け付けない運用の方、該当ワークフローを削除・修正済みの方
- 確認事項:
.github/workflows配下にpull_request_targetトリガーと外部PRコードの「危険なチェックアウト」が残っていないか点検
概要
CVE-2024-58354 は、cal.com(calcom リポジトリ、後に cal.diy へ改名)のGitHub Actions ワークフローにおけるリポジトリ乗っ取り(CWE-77: コマンドインジェクション)の脆弱性です。
ワークフロー pr.yml が pull_request_target トリガーをリポジトリ既定の書き込み権限付きで利用し、その権限を check-types.yml に引き継いでいます。check-types.yml は攻撃者が提出したPull Requestのコードを「危険なチェックアウト」で取得し、依存インストールやスクリプト実行を通じて動作させてしまいます。この結果、攻撃者はPull Requestを開くだけで、書き込みスコープの GITHUB_TOKEN を用いた任意コマンド実行が可能となり、コミットのpush・PRのマージや改変・コメントの追加削除・ブランチの削除や強制pushなどによってリポジトリを掌握できます。main ブランチが影響を受け、執筆時点で修正版は提供されていません。
CVSSと攻撃の前提
| 項目 | 内容 |
|---|---|
| CVSSスコア | 9.9(Critical) |
| CWE | CWE-77(コマンドインジェクション) |
| 認証 | 不要(外部からのPR提出で成立) |
| 影響 | リポジトリの完全な掌握 |
影響を受けるソフトウェア
| 製品 | ベンダー | バージョン |
|---|---|---|
| cal.com / cal.diy | Cal.com, Inc. | main ブランチ(修正版未提供) |
修正バージョンと回避策
- 修正版が未提供のため、ワークフロー側での緩和を優先してください。
pull_request_targetを利用するワークフローを見直し、外部PRのコードを特権コンテキストで実行しないようにします。- ワークフローに付与する権限を最小化(読み取り専用など)し、
dangerous-git-checkout相当の処理を除去します。 - 外部コントリビュータのPRに対するCIは、承認を要するフロー(
pull_requestトリガー+承認制)へ変更することを検討してください。
関連リンク
データソース: NVD (NIST), GitHub Advisory Database AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
