See how weblate compares to other vendors in security performance
Weblate is a web-based continuous localization platform used to manage software translations. In versions prior to 2026.7, a project administrator can read files outside their repository through the App store metadata download feature, which resolves attacker-influenced paths without adequately confining them to the repository. This is an incomplete fix for CVE-2026-34242, whose original patch failed to fully prevent the path traversal, allowing the arbitrary file read to persist. A user with project-administrator privileges can therefore disclose the contents of files on the Weblate host that lie outside the project's repository. This issue is fixed in version 2026.7.
Impact The API did not properly handle project- and workspace-scoped teams and allowed setting invalid configurations, including granting access to projects the user has no access to.
Patches https://github.com/WeblateOrg/weblate/pull/19970
References
Parts of this issue were independently reported by four reporters: @H3xV0rT3x via GitHub imhego via HackerOne v01demort via HackerOne b4nder via HackerOne
Impact The several endpoints could leak object existence information to users who had no access to it by HTTP status code 403 instead of 404.
Patches https://github.com/WeblateOrg/weblate/pull/19971
References Thanks to Yaohui Wang for reporting this via GitHub.
Weblate is a web-based continuous localization platform used to manage software translations. In versions prior to 2026.8, a user permitted to manage component repository URLs can perform server-side request forgery against internal services through DNS rebinding during VCS operations. Weblate validates the hostname's first DNS resolution, but the external VCS clients that later connect perform a separate DNS lookup, so an attacker-controlled hostname that initially resolves to a public address can be re-pointed to an internal or private address before the connection is made. By triggering a clone, fetch, push, or similar remote operation, the attacker can cause Weblate to reach internal VCS-compatible services and potentially expose private repository contents. Installations that permit untrusted repository hostnames while using VCSRESTRICTPRIVATE=True are affected. This issue is fixed in version 2026.8.
Weblate is a web based localization tool. Prior to 2026.8, an authenticated user can change the account's primary email through PUT or PATCH requests to /api/users/{username}/ without verifying the new address, allowing a later team invitation for that address to be accepted without access to the intended recipient's mailbox. This issue is fixed in version 2026.8.
Weblate is a web-based continuous localization platform used to manage software translations. In versions prior to 2026.8, Weblate's object-scoped RSS feeds do not apply the permission checks used elsewhere, allowing unauthorized users to read change-history metadata from private projects and restricted components. On installations that permit anonymous access, this metadata can be retrieved without any authentication. The exposed information can include project and component identities, contributor usernames and full names, action types, timestamps, and translation or unit links, though translated-string content is not included in the feed. Installations using private projects or restricted components are affected. This issue is fixed in version 2026.8.
Weblate is a web-based continuous localization platform used to manage software translations. In versions prior to 2026.7, a user with the built-in "Edit source" role can store a malicious regular expression in a source string's flags that is executed without any timeout, allowing them to stall requests and deny service. Regular expressions supplied through the regex: quality check and regex placeholders are compiled during validation but later run against translation content in RegexCheck and PlaceholderCheck with no time limit, so a catastrophic-backtracking pattern like ^(a|aa)+$ can consume CPU indefinitely. Because Weblate re-runs these checks for every linked target unit in the same request when a source unit's flags change, a single edit can trigger sustained CPU-bound denial of service. This issue is fixed in version 2026.7.
Weblate is a web-based continuous localization platform used to manage software translations. In versions prior to 2026.7, an authenticated user with access to a project can retrieve the change history of restricted components in that project through nested API change endpoints, even without permission to view those components directly. The nested endpoints do not apply the component-level access checks enforced on the direct component views, so the requester can enumerate changes for components that should be hidden from them. The exposed data can include the restricted component's identity, translation and unit links, and change payload fields such as source or translated string content in the target, old, and details values. This issue is fixed in version 2026.7.
Weblate is a web-based continuous localization platform used to manage software translations. In versions prior to 2026.7, a team can require its members to configure two-factor authentication before receiving the team's permissions, but this requirement is not enforced for site-wide global permissions. As a result, a user who belongs to a team that enforces 2FA and grants a global permission still receives that global permission even without 2FA configured, while the same requirement is correctly applied to project-, component-, and workspace-scoped permissions. Such a user can act on the granted global permission, including reaching the site management interface at /manage/. This issue is fixed in version 2026.7.
Impact
Weblate's VCSRESTRICTPRIVATE did not properly account for some transitional IPv6 ranges, multicast addresses, or some semi-private IPv4 ranges, which allowed some addresses to bypass private range restrictions.
Patches
https://github.com/WeblateOrg/weblate/pull/19768
Resources
The issue was reported by @tonghuaroot via GitHub, and the same user also provided the initial patch.
The password reset form in Weblate before 2.10.1 provides different error messages depending on whether the email address is associated with an account, which allows remote attackers to enumerate user accounts via a series of requests.
Impact The Create Component functionality in Weblate allows authorized users to add new translation components by specifying both a version control system and a source code repository URL to pull from. However, the repository URL field is not validated or sanitized, allowing an attacker to supply arbitrary protocols, hostnames, and IP addresses, including localhost, internal network addresses, and local filenames.
When the Mercurial version control system is selected, Weblate exposes the full server-side HTTP response for the provided URL. This effectively creates a server-side request forgery (SSRF) primitive that can probe internal services and return their contents. In addition to accessing internal HTTP endpoints, the behavior also enables local file enumeration by attempting file:// requests. While file contents may not always be returned, the application’s error messages clearly differentiate between files that exist and files that do not, revealing information about the server’s filesystem layout.
In cloud environments, this behavior is particularly dangerous, as internal-only endpoints such as cloud metadata services may be accessible, potentially leading to credential disclosure and full environment compromise.
Patches
This has been addressed in the Weblate 5.15 release.
https://github.com/WeblateOrg/weblate/pull/17103 https://github.com/WeblateOrg/weblate/pull/17102
Workarounds
Removing Mercurial from VCSBACKENDS avoids this vulnerability, as the Git backend is not affected. The Git backend was already configured to block the file protocol and does not expose the HTTP response content in the error message.
References Thanks to Jason Marcello for responsible disclosure.
wlc is a Weblate command-line client using Weblate's REST API. Prior to version 2.0.0, the HTML output format in wlc embeds API response data into HTML without escaping, allowing cross-site scripting when the output is rendered in a browser. This issue has been patched in version 2.0.0.
Impact
The screenshots, tasks, and component link API allowed for the enumeration of translations in a project inaccessible to the user.
Patches https://github.com/WeblateOrg/weblate/pull/19258
Acknowledgement Weblate thanks Luay for reporting this vulnerability according to the organization's security issues guideline.
Impact When a user changes their password, browser sessions are correctly invalidated via cyclesessionkeys(), but DRF API tokens (wlu prefix) stored in authtokentoken are not revoked.
Patches https://github.com/WeblateOrg/weblate/pull/19057
Resources Weblate thanks Sang Yu Jeon for reporting this via GitHub.
Impact An authenticated user with project.add permission (default on hosted Weblate SaaS and for any user holding an active billing/trial plan) can import a crafted project backup ZIP whose components/<name>.json contains an attacker-chosen repo URL 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 via Component.objects.bulkcreate([component])[0], which bypasses Django's fullclean() and therefore never runs the validaterepourl validator. The URL is subsequently written verbatim into .git/config by configurerepo(pull=False).
Patches https://github.com/WeblateOrg/weblate/pull/19061 https://github.com/WeblateOrg/weblate/pull/19062
Workarounds Limiting who can create projects limits the scope.
Resources Weblate thanks @fg0x0 for reporting this vulnerability via GitHub.
Impact The Markdown renderer used in user comments and other user-provided content didn't properly sanitize some attributes.
Patches https://github.com/WeblateOrg/weblate/pull/19259
Workarounds Even though the attacker might be able to inject code into the HTML, the Weblate's strict CSP should mitigate the risks.
Acknowlegement Michal Čihař has identified and fixed this vulnerability.
Impact The API for tasks didn't verify user access for pending tasks. This could expose logs of in-progress operations to users who don't have access to given scope.
Patches https://github.com/WeblateOrg/weblate/pull/18515
Workarounds The attacker needs to guess the random UUID of the task, so exploiting this is unlikely with the default API rate limits.
References This issue was identified by Michal Čihař.
Impact The translation memory API exposed unintended endpoints, which in turn didn't do proper access control.
Patches https://github.com/WeblateOrg/weblate/pull/18513
Workarounds Blocking access to /api/memory/ in the HTTP server removes access to this feature.
References This issue was reported by ggamno via HackerOne.
Impact The translation memory API exposed unintended endpoints, which in turn didn't do proper access control.
Patches https://github.com/WeblateOrg/weblate/pull/18516
Workarounds The CDN add-on is not enabled by default.
References Thanks to @spbavarva for reporting this responsibly via GitHub.
Impact The project backup didn't filter Git and Mercurial configuration files and this could lead to remote code execution under certain circumstances.
Patches https://github.com/WeblateOrg/weblate/pull/18549
Workarounds The project backup is only accessible to users who can create projects. Restricting access to this limits scope of the vulnerability.
References This issue was reported by ggamno via HackerOne.
Impact The ALLOWEDASSETDOMAINS setting applied only to the first issued requests and didn't restrict possible redirects.
Patches https://github.com/WeblateOrg/weblate/pull/18550
References This issue was reported by @spbavarva via GitHub.
Impact
The ZIP download feature didn't verify downloaded file and it could follow symlinks outside the repository.
Patches
https://github.com/WeblateOrg/weblate/pull/18683
References
Thanks to @DavidCarliez for reporting this vulnerability via GitHub.
Impact A user with the project.edit permission (granted by the per-project "Administration" role) can configure machine translation service URLs pointing to arbitrary internal network addresses. During configuration validation, Weblate makes an HTTP request to the attacker-controlled URL and reflects up to 200 characters of the response body back to the user in an error message. This constitutes a Server-Side Request Forgery (SSRF) with partial response read.
Patches
https://github.com/WeblateOrg/weblate/pull/18684 The solution then has been cleaned up in followup patches
Workarounds Limiting available machinery services via WEBLATEMACHINERY setting can avoid this.
References
Thanks to @DavidCarliez for disclosing this via GitHub private vulnerability reporting.
Impact
The user patching API endpoint didn't properly limit the scope of edits.
Patches https://github.com/WeblateOrg/weblate/pull/18687
References Thanks to @tikket1 and @DavidCarliez for reporting this via GitHub. We received two individual reports for this.
Impact The webhook add-on did not utilize existing SSRF protection.
Patches https://github.com/WeblateOrg/weblate/pull/18815
Workarounds Disabling the add-on would avoid misusing this.
References Thanks to @Lihfdgjr for reporting this via GitHub.
Impact Weblate repository-boundary validation relies on string prefix checks on resolved absolute paths. In multiple code paths, the check uses startswith against the repository root path. This is not path-segment aware and can be bypassed when the external path shares the same string prefix as the repository path (for example, repo and repooutside).
Patches https://github.com/WeblateOrg/weblate/pull/18847
References Thanks to m9nx4u for reporting this issue via HackerOne.
Impact
Users were able to obtain add-on configuration via API.
Patches
https://github.com/WeblateOrg/weblate/pull/18107 https://github.com/WeblateOrg/weblate/pull/18164
References
Weblate thanks @lighthousekeeper1212 for responsible disclosure.
Impact The SSH management console did not validate the passed input while adding the SSH host key, which could lead to an argument injection to ssh-add.
Patches https://github.com/WeblateOrg/weblate/pull/17722
Workarounds Properly limit access to the management console.
References This issue was reported to us by alexb616 via HackerOne.
Impact Multi-translation download could write to an arbitrary location when instructed by a crafted server.
Patches https://github.com/WeblateOrg/wlc/pull/1128
Workarounds Do not use wlc download with untrusted servers.
References This issue was reported to us by wh1zee via HackerOne.