Skip to main content

Weblate EUVDEUVD-2026-88976

| CVE-2026-86035 HIGH
OS Command Injection (CWE-78)
2026-09-29 security-advisories@github.com
8.5
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate with component.edit permission
  2. Delivery
    Configure Mercurial-backed RESX component with Update RESX add-on
  3. Exploit
    Introduce dash-prefixed option-shaped filename
  4. Execution
    Trigger later repository update
  5. Persist
    Mercurial parses filename as option
  6. Impact
    Execute 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

weblate 4.11.1, < 2026.8

Affected Packages

euvd weblate_4_11_1 fix: 2026.8

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

Vendor (github) PRIMARY 8.5 HIGH
AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H
vuln.today AI 8.5 HIGH

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.

3.1 AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H
4.0 AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
High
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Sep 29, 2026 - 16:02 EUVD
CVE Published
Sep 29, 2026 - 15:17 cve.org
HIGH 8.5

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.4%
Top 72% exploitable
Prevalence
Medium
popular open-source localization platform, common in dev/OSS teams but not everywhere
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

42
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +42
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

OS command injection occurs when an application passes unsanitized user input directly into system shell commands.

CVE-2025-68398 CRITICAL
9.1 Dec 18

Improper input validation in Weblate versions prior to 5.15.1 lets a user who can submit translation files or restore pr

CVE-2026-34393 HIGH
8.8 Apr 15

Privilege escalation in Weblate versions prior to 5.17 allows an authenticated low-privileged user to modify sensitive f

CVE-2022-23915 HIGH
8.8 Mar 04

The package weblate from 0 and before 4.11.1 are vulnerable to Remote Code Execution (RCE) via argument injection when u

CVE-2026-55228 HIGH
8.1 Aug 26

Weblate's REST API failed to enforce permission scope on team (group) assignments in all versions prior to 2026.7, allow

CVE-2026-33435 HIGH
8.0 Apr 15

Remote code execution in Weblate's project backup restoration affects versions prior to 5.17, exploitable by authenticat

CVE-2026-23535 HIGH
8.0 Jan 16

The wlc Weblate command-line client prior to version 1.17.2 is vulnerable to arbitrary file write attacks through path t

CVE-2026-61792 HIGH
7.7 Aug 26

Arbitrary file read via symlink traversal in Weblate's App store metadata ZIP download affects all versions prior to 202

CVE-2026-34242 HIGH
7.7 Apr 15

Arbitrary file read vulnerability in Weblate versions prior to 5.17 allows authenticated attackers to read sensitive fil

CVE-2026-21889 HIGH
7.5 Jan 14

Weblate versions prior to 5.15.2 expose screenshot images through the web server without authentication controls, enabli

CVE-2026-33220 MEDIUM
6.8 Apr 15

Path traversal in Weblate allows authenticated users to read arbitrary files outside the repository via the translation

CVE-2026-24126 MEDIUM
6.6 Feb 19

Weblate versions up to 5.16.0 contains a vulnerability that allows attackers to an argument injection to `ssh-add` (CVSS

CVE-2026-62326 MEDIUM
6.5 Aug 26

Unbounded regular expression evaluation in Weblate prior to 2026.7 allows any authenticated user holding the built-in 'E

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy