Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with component.edit permission
-
DeliveryConfigure Mercurial-backed RESX component with Update RESX add-on
-
ExploitIntroduce dash-prefixed option-shaped filename
-
ExecutionTrigger later repository update
-
PersistMercurial parses filename as option
-
ImpactExecute arbitrary commands as Weblate service account
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization OS command sanitization, avoid shell exec
MITRE ATT&CK
2 techniques across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires ALL of: (1) an authenticated user with project-scoped component.edit permission (PR:L, not unauthenticated); (2) the affected component must use the Mercurial VCS backend - Git-backed components are unaffected; (3) the component must be a RESX component using the 'Update RESX files' add-on, which is the vector for introducing an option-shaped (dash-prefixed) filename; (4) a subsequent repository update must occur to trigger the deferred command execution. These narrow prerequisites (specific VCS backend, specific file format, specific add-on, and delayed activation) are the AC:H limiting factors and substantially reduce the realistic attack surface versus the raw CVSS network vector. Applies to Weblate 4.11.1 through 2026.7.1; fixed in 2026.8. |
| Impact | This is a genuine but conditional priority, not an inflated high-CVSS score. The vendor CVSS of 8.5 (CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H) reflects a network-reachable argument-injection flaw in Weblate's Mercurial backend (CWE-78) that yields command execution as the Weblate service account - a full C:H/I:H/A:H technical impact with a scope change (S:C) because a project-scoped permission escalates to service-account code execution. Two signals temper this: AC:H and PR:L. Exploitation requires an authenticated user holding project-scoped component.edit permission AND a very specific setup (a Mercurial-backed RESX component using the 'Update RESX files' add-on), and execution is deferred until a later repository update - hence AC:H. No EPSS score, no CISA KEV listing, and no public exploit code were provided, so this is 'no public exploit identified at time of analysis.' The GitHub commit diff (f60a975) and PR #20768 concretely confirm the fix (adding '--' separators before filenames in hg commit and cat), which corroborates the vulnerability mechanism and the affected code path. Notably this is a residual incomplete fix for CVE-2022-23915, meaning the general vulnerability class was known and previously patched imperfectly - raising the plausibility that a knowledgeable attacker could reconstruct exploitation from the public diff. Net: medium-to-high priority for organizations running Mercurial-backed Weblate with the RESX add-on and untrusted users holding component.edit; lower for the many deployments using Git backends or trusting all component editors. |
| Exploit ScenarioDerived | An authenticated Weblate user with project-scoped component.edit permission on a Mercurial-backed RESX component (configured with the 'Update RESX files' add-on) arranges for a repository filename beginning with a dash (e.g. '--config=alias.cat=version'). When Weblate later performs a repository update, Mercurial interprets the dash-prefixed filename as a command option rather than a path, executing attacker-controlled commands with the privileges of the Weblate service account. No public proof-of-concept was provided, but the fixing commit and PR are public and the flaw is a residual bypass of the earlier CVE-2022-23915 fix, lowering the reconstruction barrier. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 29, 2026
Argument injection in Weblate's Mercurial backend lets an authenticated user with project-scoped component.edit permission plant a dash-prefixed repository filename that Mercurial later interprets as a command-line option instead of a literal path, resulting in arbitrary command execution with the privileges of the Weblate service account when the repository is next updated. The issue affects Weblate 4.11.1 through 2026.7.1 and is a residual, incomplete fix for CVE-2022-23915; although it carries a CVSS of 8.5, exploitation requires a Mercurial-backed RESX component using the 'Update RESX files' add-on plus a subsequent repository update, so the realistic attack surface is narrow. A vendor patch is available in Weblate 2026.8, and no public exploit identified at time of analysis.
RemediationAI
Vendor-released patch: 2026.8 - upgrade Weblate to 2026.8 or later, as documented in the release at https://github.com/WeblateOrg/weblate/releases/tag/weblate-2026.8, and review the advisory GHSA-327h-qqgm-qv55 plus the fixing commit f60a9759a6d851bd10ccdefe9b1b7f0cdb9e9bbd (PR 20768) for the exact code changes. If upgrading cannot be done immediately, apply layered compensating controls that match the assessed prerequisites: (1) audit and tighten project-scoped component.edit permissions so only fully trusted operators can create or rename component repositories, since that permission is the required foothold - expect reduced operational flexibility for contributors who legitimately manage component configuration; (2) on Mercurial-backed RESX components, disable the 'Update RESX files' add-on until patched - this removes the vector for introducing dash-prefixed filenames, at the cost of losing the automated RESX update workflow for those components; (3) where Mercurial is not required, migrate affected components to the Git backend, which is not on this exploit path, though this changes component history and requires re-cloning; and (4) run the Weblate service account with least privilege and confine its filesystem and network reachability so that any deferred command execution during a repository update is bounded - a containment measure, not a fix, and it does not prevent code execution as the service account. There is currently no indication of active exploitation, so remediation can proceed on a normal risk-managed schedule, but the permission-model review is worth doing regardless of patching timeline.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The vulnerability is CWE-78 (OS command injection) realized through argument injection in the Mercurial (hg) command-line invocations performed by weblate/vcs/mercurial.py. Weblate historically appended user-influenced repository file paths directly to Mercurial subcommand argument lists without an option terminator, so a filename beginning with a dash is parsed by Mercurial as an option rather than a path. The upstream fix demonstrates the two affected call sites: commit() now collects the filenames and appends them after a '--' separator, and get_file() constructs its invocation as ['cat', '--rev', revision, '--', path]. The added regression tests use filenames such as '--config=alias.cat=version' and '--config=alias.commit=version', which is the crux of the exploitation primitive: Mercurial's --config option can define aliases whose values can themselves invoke shell commands, so an option-shaped filename effectively smuggles attacker-controlled configuration into a later Mercurial invocation. Because the malicious name must first be committed and then picked up by a subsequent repository update, the payload is deferred rather than immediate - a factor reflected in the CVSS AC:H rating. The scope change (S:C) captures the transition from a web application request to command execution under the Weblate service account on the host.
Know when Weblate gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H
Authenticated component.edit user (PR:L) over the network; AC:H for required Mercurial+RESX+add-on setup and deferred trigger; S:C and C/I/A:H as project-scoped access yields service-account command execution.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.org
Weblate is a web-based continuous localization platform used to manage software translations. Weblate 4.11.1 through 2026.7.1 contains an argument-injection vulnerability in its Mercurial backend. Repository filenames beginning with - could be interpreted as Mercurial options instead of literal paths. An authenticated user with project-scoped component.edit permission could exploit this through a Mercurial-backed RESX component using the Update RESX files add-on. A later repository update could execute arbitrary commands with the privileges of the Weblate service account. This is a residual incomplete fix for CVE-2022-23915. This issue has been patched in version 2026.8.
Technical POC Analysis
CWE-78 (OS command injection) with the underlying mechanism recorded as CWE-88 (argument/option injection).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Weblate installations running versions 4.11.1 through 2026.7.1 with Mercurial-backed RESX components contain a command-injection flaw that lets a user who already holds project-level component editing rights execute arbitrary commands with the privileges of the Weblate service account. That account typically holds repository credentials and network reach into build and source-control systems, so a single malicious or compromised translator account could escalate from a localization tool into broader infrastructure. The attack surface is narrow - it requires a Mercurial-backed RESX component using the 'Update RESX files' add-on plus a subsequent repository update - but the consequence of successful exploitation is a full service-account compromise, so leadership should treat permission hygiene and upgrade planning as the priority.
No vendor-released patch is identified as available at time of analysis, although the advisory text references a fix in Weblate 2026.8 that should be confirmed with the vendor. Until an upgrade can be applied: disable the 'Update RESX files' add-on or switch affected Mercurial-backed RESX components to manual repository synchronization; restrict component.edit permission to vetted internal users and remove it from external translators or vendors; run the Weblate service account with least privilege and no standing access to repositories, CI systems, or production credentials; and monitor component edit and repository update events for unexpected dash-prefixed filenames or unusual process execution.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
OS command injection occurs when an application passes unsanitized user input directly into system shell commands.
Improper input validation in Weblate versions prior to 5.15.1 lets a user who can submit translation files or restore pr
Privilege escalation in Weblate versions prior to 5.17 allows an authenticated low-privileged user to modify sensitive f
The package weblate from 0 and before 4.11.1 are vulnerable to Remote Code Execution (RCE) via argument injection when u
Weblate's REST API failed to enforce permission scope on team (group) assignments in all versions prior to 2026.7, allow
Remote code execution in Weblate's project backup restoration affects versions prior to 5.17, exploitable by authenticat
The wlc Weblate command-line client prior to version 1.17.2 is vulnerable to arbitrary file write attacks through path t
Arbitrary file read via symlink traversal in Weblate's App store metadata ZIP download affects all versions prior to 202
Arbitrary file read vulnerability in Weblate versions prior to 5.17 allows authenticated attackers to read sensitive fil
Weblate versions prior to 5.15.2 expose screenshot images through the web server without authentication controls, enabli
Path traversal in Weblate allows authenticated users to read arbitrary files outside the repository via the translation
Weblate versions up to 5.16.0 contains a vulnerability that allows attackers to an argument injection to `ssh-add` (CVSS
Unbounded regular expression evaluation in Weblate prior to 2026.7 allows any authenticated user holding the built-in 'E
EUVD-2026-88976
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB