Skip to main content

Weblate wlc CVE-2026-62364

| EUVDEUVD-2026-84823 LOW
Information Exposure (CWE-200)
2026-09-22 GitHub_M GHSA-3mqq-hv9c-85hc
2.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Plant malicious .weblate config in untrusted repo
  2. Delivery
    Victim checks out repo and runs wlc with unscoped WLC_KEY
  3. Exploit
    wlc auto-discovers attacker URL, omits URL pinning
  4. Execution
    Token sent to attacker-controlled Weblate URL
  5. Impact
    API token disclosed cross-scope

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK

2 techniques across 2 tactics: Collection, Discovery

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) the victim runs wlc inside an untrusted repository, pull-request checkout, or a directory with an untrusted ancestor .weblate/.weblate.ini/weblate.ini that defines an API url; (2) the victim supplies an UNSCOPED API token via the WLC_KEY environment variable or the --key flag; and (3) the victim does NOT pin the destination via WLC_URL or --url. Exploitation is LIMITED by these preconditions plus required user interaction (the victim must invoke wlc) and local execution context. It does NOT apply when URL-scoped keys in the [keys] config section are used, nor when the URL is explicitly pinned. Versions 2.0.1 and later reject unscoped keys when the API URL comes from auto-discovered project configuration.

Impact

This is a low-priority issue whose signals are internally consistent and point away from urgent action. The vendor CVSS of 2.3 (CVSS:3.1/AV:L/AC:H/PR:H/UI:R/S:C/C:L/I:N/A:N) correctly captures a local, high-complexity, interaction-dependent token-leak with no integrity or availability impact. No EPSS score, KEV listing, or public exploit was provided, so exploitation status is: no public exploit identified at time of analysis. The one metric I would contest is PR:H - the attacker needs no privileges on the victim's system; they only plant a malicious project config in a repository the victim later checks out, so PR:N with the difficulty captured in AC:H/UI:R is more accurate (see assessed vector). The scope change (S:C) and confidentiality-only impact are appropriate because the leaked API token belongs to a different security authority (the Weblate server). Realistic risk is limited by the tight preconditions: the victim must use an unscoped WLC_KEY/--key without pinning WLC_URL/--url, AND run wlc inside an untrusted repository/PR checkout/directory carrying attacker-controlled ancestor configuration. This is a targeted CI/supply-chain-style credential-leak, not a broadly exploitable flaw.

Exploit ScenarioDerived

An attacker submits a pull request (or publishes a repo) containing a malicious .weblate/.weblate.ini/weblate.ini that sets the API url to an attacker-controlled server. A CI job or developer then runs wlc in that checkout with an unscoped token injected via WLC_KEY/--key but without pinning WLC_URL/--url, and wlc transmits the token to the attacker's URL. No public exploit code is identified, and exploitation is high-complexity and requires the victim to run the client (UI:R).

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.1% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 22, 2026

API token disclosure in the Weblate wlc command-line client before 2.0.1 allows an attacker-controlled project configuration to redirect an unscoped API token to a server the attacker controls. When wlc is run inside an untrusted repository, pull-request checkout, or a directory with an untrusted ancestor whose .weblate, .weblate.ini, or weblate.ini sets an API url, and the operator supplies a token through WLC_KEY or --key without also pinning WLC_URL or --url, the client transmits that token to the project-configured destination. Exploitation requires local execution of wlc, all three configuration preconditions to hold simultaneously, and user interaction; no public exploit was identified at time of analysis, and the overall risk is low (CVSS 2.3 / assessed CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:C/C:L/I:N/A:N).

RemediationAI

Upgrade to wlc 2.0.1 or later, which is the vendor-released patch and rejects unscoped keys when the API URL originates from auto-discovered project configuration (see PR https://github.com/WeblateOrg/wlc/pull/1500, commit https://github.com/WeblateOrg/wlc/commit/15cbdfc5b2c6183ef6864ea758091643a0ce6c89, and advisory https://github.com/WeblateOrg/wlc/security/advisories/GHSA-3mqq-hv9c-85hc). If upgrading is not immediately possible, explicitly pin the destination whenever using an unscoped key, e.g. WLC_URL=https://hosted.weblate.org/api/ WLC_KEY=... wlc ... or wlc --url https://hosted.weblate.org/api/ --key ... ...; this neutralizes the attack because the discovered URL no longer wins, at the cost of having to hard-code the endpoint in every invocation. Alternatively, replace WLC_KEY/--key with URL-scoped keys in the [keys] configuration section, which are not affected and continue to work with project configuration. Finally, avoid running wlc with secrets inside untrusted checkouts or directories that may carry attacker-controlled ancestor configuration, which removes the delivery vector but weakens the CI convenience that motivated the original design. As these are mutual substitutes, pinning the URL or switching to scoped keys is sufficient on its own; no additional compensating network control is required given the low assessed severity.

Affected VersionsENISA

wlc < 2.0.1

Affected Packages

pypi wlc fix: 2.0.1

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 the Python command-line client for Weblate, communicating with a Weblate instance over its REST API using a bearer-style API token. Configuration is assembled from layered sources: command-line flags (--url/--key), environment variables (WLC_URL/WLC_KEY), a user config, and automatically discovered project configuration files named .weblate, .weblate.ini, or weblate.ini in the working directory or any ancestor directory. The flaw is rooted in CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor): when the API URL is sourced from auto-discovered project configuration while the secret is supplied as an unscoped key via WLC_KEY or --key, the two are combined without verifying the user intended that destination, so a repository simply declaring url = https://attacker.example/ obtains the token. The maintainers' fix in 2.0.1 changes the resolution logic so that an unscoped WLC_KEY now requires an explicit WLC_URL and an unscoped --key requires an explicit --url whenever the URL comes from discovered project config; URL-scoped keys declared under the [keys] section remain fully supported. The affected package is the PyPI/pip distribution weblateorg:wlc (CPE cpe:2.3:a:weblateorg:wlc:*:*:*:*:*:*:*:*).

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

Vendor (GitHub_M) PRIMARY 2.3 LOW
AV:L/AC:H/PR:H/UI:R/S:C/C:L/I:N/A:N
vuln.today AI 2.7 LOW

Attacker plants config needing no privileges (PR:N, correcting vendor PR:H); success needs a specific unscoped-key/no-URL setup and victim execution (AC:H, UI:R); token crosses to another system (S:C); single credential leaked (C:L).

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

1
Patch available
Sep 22, 2026 - 21:03 EUVD

DescriptionCVE.org

wlc is a Weblate command-line client using Weblate's REST API. Prior to 2.0.1, automatically discovered configuration from .weblate, .weblate.ini, or weblate.ini can select the API URL while an unscoped API token is supplied through WLC_KEY or --key without a matching WLC_URL or --url. When wlc runs in an untrusted repository, pull request checkout, or directory with untrusted ancestor configuration, it can send the token to an attacker-controlled project-configured URL. URL-scoped keys in [keys] are not affected. This issue is fixed in version 2.0.1.

Threat Intelligence Overview

EPSS Score
0.1%
Top 99% exploitable
Prevalence
Low
niche Weblate CLI client (pip package), developer/CI tool, small footprint
Threat Intel
1
1 source
Data Quality
6 sources
Confidence: High

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 LOW
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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· derived
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
Low

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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