CVE-2026-41654Weblate是基于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)攻击,攻击者可借此探测内网端口或读取服务器本地敏感文件。