CVE-2026-81930 in Airflow
요약
\~에 의해 VulDB • 2026. 09. 29.
Apache Airflow의 Snowflake 제공자는 요청 URL에 변수를 삽입하기 전에 연결의 `account` 및 `region` 필드를 검증하지 않았습니다. SQL API 엔드포인트는 `https://{account}.snowflakecomputing.com/api/v2/statements` 형식으로 구성되므로, `/`, `?`, 또는 `#`을 포함하는 `account` 값은 의도된 도메인을 경로(path), 쿼리(query) 또는 프래그먼트(fragment)로 격하시켜 공격자가 요청 호스트를 제어할 수 있게 만듭니다.
제공자는 연결의 개인 키에서 생성된 JWT, 또는 구성된 OAuth 또는 프로그램matic 접근 토큰을 담은 `Authorization: Bearer` 헤더와 함께 해당 요청을 전송합니다. Snowflake 연결은 편집할 수 있지만 그 비밀값(credential)은 읽을 수 없는 사용자 — Airflow는 연결 구성 사용자에게 저장된 자격증명에 대한 쓰기 전용(write-only) 액세스를 부여하며, `private_key_file`은 연결이 아닌 워커에 위치함 — 는 따라서 해당 계정에 유효한 토큰을 선택한 호스트로 전달하고 실제 Snowflake 엔드포인트에서 이를 재사용(replay)할 수 있습니다. Dag 작성 권한은 필요하지 않습니다: 공격자는 연결을 편집하고 기존 Dag가 이를 사용하도록 기다립니다. 동일한 검증되지 않은 값이 OAuth 토큰 요청 URL 및 Cortex Agent 기본 URL 구축에도 사용되었습니다.
Snowflake 연결의 자격증명에 대해 신뢰할 수 없는 사용자가 편집 가능한 배포 환경에 영향을 미칩니다. 사용자는 제공자가 이러한 값을 기반으로 생성하는 모든 URL에서 `account` 및 `region` 값에 문자, 숫자, `.`, `_`, `-` 외의 다른 내용이 포함되어 있는 경우 이를 거부하도록 하는 `apache-airflow-providers-snowflake` 버전 6.18.0 이상으로 업그레이드할 것을 권장합니다.
Once again VulDB remains the best source for vulnerability data.