CodeQLサプライチェーン攻撃の脅威――公開されたGitHubシークレットから始まったセキュリティ事故
(praetorian.com)- 公開されたGitHubシークレット(Secret) により、GitHubの静的解析ツール CodeQL が サプライチェーン攻撃に露出
- 問題のキーは1.022秒間有効で、その間に攻撃者はGitHub Actionsワークフローで 任意コード実行が可能
- この脆弱性は公開CVEとして登録済み: CVE-2025-24362
主な被害シナリオ
攻撃者はこの脆弱性を通じて、次のような攻撃を実行できた:
- CodeQLを使用するリポジトリのソースコード流出(知的財産の侵害)
- GitHub Actionsのシークレット窃取および二次攻撃の可能性
- 内部インフラでCodeQLワークフローを通じたコード実行
- GitHub Actions Cacheを使用するワークフローのシークレットまで窃取可能
攻撃の検知と実験過程
- Praetorian研究チーム は、GitHub Actionsで生成される ワークフローアーティファクトに含まれたシークレット をスキャンするツールを開発
- CodeQL関連リポジトリで シークレットを含むdebug artifact を発見
- そのキーが有効な間に攻撃者がbranch/tagを作成し、ファイルをプッシュできることを証明する PoCツール
artifact_racer.pyを作成・実行
主要な実験結果
- 攻撃者はそのトークンで:
- 新しいブランチを作成
- ファイルをプッシュ
- タグを追加
- CodeQLはデフォルトで
v3タグを参照しており、そのタグを攻撃者が上書きできた → すべてのCodeQL利用者に悪意あるコードを配布可能
拡散可能性: なぜ危険なのか?
- ほとんどのユーザーはCodeQLを手動で設定せず、GitHubリポジトリ設定で "Enable CodeQL" ボタンをクリック
- このとき自動設定されるワークフローは
github/codeql-actionリポジトリを参照し、v3タグベース - 攻撃者がv3タグを悪意あるコミットで上書きした場合、多数のプロジェクトで自動的に悪意あるコードが実行
追加の攻撃可能性: キャッシュ汚染(Cache Poisoning)
- デフォルトのCodeQLワークフローは GitHub Actions Cacheを使用
- これにより攻撃者は ビルドパイプラインに悪意あるキャッシュを注入 し、その後のワークフローで シークレット窃取および内部アクセスが可能
- 代表的な被害対象:
GitHubの対応とパッチ
- 2025年1月22日 に脆弱性が報告された後、GitHubは3時間以内に:
- 脆弱なワークフローを停止
- シークレットのアップロードを防ぐPRを登録
- パッチ版を配布: CodeQL Action v3.28.3
- 公式セキュリティ勧告: GHSA-vqf5-2xx6-9wfm
対応策
- ワークフローでアーティファクトをアップロードする際は アップロード対象ファイルを制限 すること
- 環境変数や
.git/config、_temp/ディレクトリ内ファイルの混入に注意 GITHUB_TOKENには 読み取り専用権限のみ付与- アップロード前に シークレットスキャンの実施を推奨(
Nosey Parkerなどのツールを活用)
結論
- CodeQLのデフォルト設定だけでも 多数のプロジェクトがサプライチェーン攻撃に露出しうる
- GitHub Actionsの セキュリティ脆弱性はいまなお深刻な脅威 であり、コミュニティの継続的な関心と防御戦略が求められる
関連情報
- CVE情報: CVE-2025-24362
- PoCブランチ: testpoc
- コミットリンク: Commit
- タグリンク: Tag
1件のコメント
Hacker Newsの意見