Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconCompromise Weblate instance or intercept API
-
DeliveryInject XSS payload into API response field
-
ExploitUser runs wlc with --format=html flag
-
InstallHTML file generated with unescaped payloads
-
C2User opens HTML in browser
-
ExecuteJavaScript executes with browser privileges
-
ImpactAttacker steals session/data
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The HTML output format must be explicitly requested by the user (--format=html flag), which is non-default behavior-most users rely on text or JSON output. The attacker must control or inject malicious data into the Weblate API response, typically via: (1) direct compromise of the Weblate instance itself, (2) man-in-the-middle attack if API communications are not HTTPS-enforced, or (3) supply-chain compromise of a data source indexed by Weblate. High API privileges (PR:H per CVSS) are required, meaning the attacker needs valid API credentials or the ability to modify Weblate's database. The target user must actively render the generated HTML file in a web browser rather than inspect it as raw text. These cumulative constraints-opt-in feature, high privileges required, MITM or instance compromise prerequisite, plus user action-make spontaneous exploitation unlikely despite the network vector. |
| Impact | Despite the CVSS score of 5.1 (medium), real-world exploitation risk is significantly constrained by multiple limiting factors. The CVSS vector reveals AV:N (network) but AC:H (high complexity), PR:H (requires high privileges - API credentials), and UI:R (requires user interaction - browser rendering of output file). This contradicts a straightforward remote attack scenario. The vulnerability is restricted to opt-in HTML output format and requires an attacker to control API response data (via compromised Weblate instance, MITM, or injection into a data source queried by the Weblate API). An additional barrier: the attacker needs the target user to actively render the HTML output in a browser rather than view it as plain text. No KEV status, no POC in public repositories, and no evidence of active exploitation reported. This is a stored/reflected XSS in a niche tool with low visibility and high exploitation friction-a classic case of high CVSS but low real-world risk. Organizations using wlc should prioritize patching based on exposure (who has API credentials?) rather than CVSS alone. |
| Exploit ScenarioDerived | An attacker with a compromised or legitimate Weblate API token (PR:H) crafts a specially malicious API response containing embedded JavaScript payloads in string fields (e.g., translation metadata, user names, comments). A wlc user retrieves data using '--format=html', which generates an HTML table or detail page embedding the unescaped payloads. The user then opens this HTML file in a browser (UI:R), triggering execution of the attacker's JavaScript-potentially harvesting session cookies, exfiltrating locally cached data, or redirecting to a phishing site. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 08, 2026
Cross-site scripting in wlc command-line client versions prior to 2.0.0 allows authenticated users with high privileges to inject malicious HTML/JavaScript into API responses, which are then embedded unescaped in HTML output. When the HTML output is rendered in a browser, this enables XSS attacks. The vulnerability requires explicit use of the HTML output format (non-default), user interaction to open/view the HTML file, and elevated API credentials, limiting real-world risk despite the network vector.
RemediationAI
Upgrade wlc to version 2.0.0 or later, available via pip: 'pip install --upgrade wlc>=2.0.0'. The vendor-released patch introduces html.escape() in the format_html_value() method to sanitize all HTML output. For environments unable to upgrade immediately, disable or restrict HTML output format usage (the vulnerable code path is opt-in via command-line flag '--format=html'), and ensure API credentials are protected since the vulnerability requires high privileges (API token/authentication). Additionally, validate that any HTML files generated by wlc are not served over HTTP without Content-Security-Policy headers, and educate users to view wlc output as plain text rather than rendering HTML in browsers when possible. Full advisory and patch: https://github.com/WeblateOrg/wlc/security/advisories/GHSA-gx2m-mcc2-r4p3, PR https://github.com/WeblateOrg/wlc/pull/1327.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
wlc is a Python command-line client for Weblate's REST API that formats API responses in multiple output formats including HTML. The vulnerability exists in the print_html() method in wlc/main.py, which directly interpolates API response data (keys and values) into HTML table markup using Python f-strings without HTML entity escaping. The root cause is improper input validation/output encoding (CWE-79: Improper Neutralization of Input During Web Page Generation). The fix adds an html.escape() wrapper via a new format_html_value() classmethod that safely encodes all user-controllable data before HTML rendering, following the OWASP principle of output encoding. Affected versions are distributed via pip package wlc with versions < 2.0.0 vulnerable.
Know when Wlc 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:L/PR:H/UI:R/S:C/C:L/I:L/A:N
Primary rating from NVD · only source for this CVE.
CVSS VectorNVD
Lifecycle Timeline
3DescriptionNVD
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.
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
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
The wlc Weblate command-line client prior to version 1.17.2 is vulnerable to arbitrary file write attacks through path t
Wlc versions prior to 1.17.0 fail to restrict unscoped API keys, allowing them to be transmitted to unintended Weblate s
wlc is a Weblate command-line client using Weblate's REST API. Prior to 1.17.0, the SSL verification would be skipped fo
API token disclosure in the Weblate wlc command-line client before 2.0.1 allows an attacker-controlled project configura
EUVD-2026-28501
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB