Weblate Vulnerable to Authenticated SSRF via Project Backup Import bypassing validate_repo_url
Moderate severity
GitHub Reviewed
Published
Apr 30, 2026
in
WeblateOrg/weblate
•
Updated Apr 30, 2026
Description
Published to the GitHub Advisory Database
Apr 30, 2026
Reviewed
Apr 30, 2026
Last updated
Apr 30, 2026
Impact
An authenticated user with
project.addpermission (default on hosted Weblate SaaS and for any user holding an active billing/trial plan) can import a crafted project backup ZIP whosecomponents/<name>.jsoncontains an attacker-chosenrepoURL pointing at a private address (e.g.http://127.0.0.1:9999/) or using a non-allow-listed scheme (e.g.file://,git://). Weblate persists the component viaComponent.objects.bulk_create([component])[0], which bypasses Django'sfull_clean()and therefore never runs thevalidate_repo_urlvalidator. The URL is subsequently written verbatim into.git/configbyconfigure_repo(pull=False).Patches
Workarounds
Limiting who can create projects limits the scope.
Resources
Weblate thanks @fg0x0 for reporting this vulnerability via GitHub.
References