Severity by source
AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N
Primary rating from GitHub Advisory · only source for this CVE.
CVSS VectorGitHub Advisory
Lifecycle Timeline
6DescriptionGitHub Advisory
Weblate is a web based localization tool. In versions prior to 5.17, the tasks API 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. The attacker needs to brute-force the random UUID of the task, so exploiting this is unlikely with the default API rate limits. This issue has been fixed in version 5.17.
AnalysisAI
We need to produce a comprehensive JSON analysis for CVE-2026-33212 based on all provided data. We'll synthesize everything into the required fields.
Let's gather all details:
- CVE ID: CVE-2026-33212
- Description: Weblate, web based localization tool. In versions prior to 5.17, tasks API didn't verify user access for pending tasks. Could expose logs of in-progress operations to unauthorized users. Attacker needs to brute-force random UUID of task, so exploiting is unlikely with default API rate limits. Fixed in version 5.17.
- CVSS Score: 3.1, Vector: CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N
- CWE: CWE-284 (Improper Access Control)
- EPSS: 0.03% (percentile 7%) - very low likelihood of exploitation.
- Patch: Available from vendor (version 5.17)
- CPE: cpe:2.3:a:weblateorg:weblate:*:*:*:*:*:*:*:* (all versions before 5.17?)
- Tags: Authentication Bypass, Weblate
- SSVC: Exploitation: none, Automatable: no, Technical Impact: partial. So no observed exploitation, not automatable, partial technical impact (info disclosure).
- ENISA EUVD: EUVD-2026-22997, affected versions: weblate < 5.17
- References: GHSA advisory, commit, pull request, NVD link.
- Source code evidence: GHSA advisory summary (already in description), package pip/weblate vulnerable < 5.17, fixed in 5.17. Commit diff shows addition of task metadata caching and access checks in API views, tests for denied access to inaccessible component, etc.
Now, we need to produce a JSON object with all the specified fields.
First field: "product_name": "1-3 words ONLY. The specific product or service name affected." Could be "Weblate" or "Weblate localization tool". But product_name should be concise. Weblate is the name. I'll go with "Weblate".
"summary": 2-3 sentence plain-language synthesis. Do NOT copy description. Start with specific impact verb and product. "Information disclosure in Weblate's tasks API could expose in-progress operation logs to authenticated users lacking component access if they can guess the task UUID." Or more: "Missing access control in Weblate's tasks API (prior to 5.17) allows low-privileged authenticated users to view logs of pending background tasks by guessing a random UUID, though brute-forcing is mitigated by rate limits. No active exploitation reported, and the vulnerability has a low CVSS score of 3.1." That captures what vulnerability is, who affected (Weblate <5.17), what attacker can do (info disclosure). Also mention EPSS and KEV? KEV not in input (KEV status not provided). So no active exploitation. I'll craft a summary.
"technical_context": Explain underlying technology/library/protocol. Weblate is a Django-based web app. The API for tasks (Celery background tasks) uses UUIDs for task IDs. The API view previously extracted related component or translation from task result to perform access check, but for pending tasks the result wasn't available, so it fell back to no access check (or flawed check). The fix uses cached metadata (component ID) to enforce access check even for pending tasks. CWE-284: Improper Access Control. So I'll explain that.
"risk_assessment": Assess real-world risk using CVSS, EPSS, KEV (not listed, so no), SSVC, etc. CVSS 3.1 score is LOW: 3.1, with AV:N, AC:H (high complexity due to UUID brute-force), PR:L (low privilege), UI:N, S:U, C:L (low confidentiality impact). EPSS 0.03% (low probability). SSVC: none exploitation, not automatable, partial impact. Not in KEV, no public exploit. So risk is very low. The attack requires authenticated user and brute-force UUID, mitigated by rate limiting. So it's a low-priority issue.
"affected_products": Write paragraph listing affected products with versions, CPE if available, and vendor advisory link. "Weblate versions prior to 5.17 are affected. This corresponds to CPE cpe:2.3:a:weblateorg:weblate:*:*:*:*:*:*:*:*. The vendor advisory and fixed version are available at https://github.com/WeblateOrg/weblate/security/advisories/GHSA-vj45-x3pj-f4w4." I'll incorporate the advisory URL.
"remediation": Actionable remediation: Upgrade to Weblate 5.17. Since patch is available, primary fix is upgrading. The GHSA advisory says fixed in 5.17. Workaround: ensure API rate limits are in place (default is in place). No other workaround. So paragraph: "Upgrade Weblate to version 5.17 as per vendor advisory at https://github.com/WeblateOrg/weblate/security/advisories/GHSA-vj45-x3pj-f4w4. This release includes the access control fix. As a temporary measure, ensure default API rate limits are enforced, which already make UUID brute-forcing impractical. The commit implementing the fix is at https://github.com/WeblateOrg/weblate/commit/4e06b12cd05d087db68384e09d5f70fe883f2b70."
"exploit_scenario": Brief realistic attack scenario: "An authenticated low-privilege user enumerates possible task UUIDs through the tasks API endpoint. For each guess, if the UUID matches a pending task, the API returns task logs that may contain sensitive component data. The attacker brute-forces the UUID, but the default rate limiting significantly hampers this in a real scenario." That's consistent with AC:H.
"exploitation_conditions": Extract SPECIFIC, CONCRETE prerequisites. From description: "The attacker needs to brute-force the random UUID of the task, so exploiting this is unlikely with the default API rate limits." So condition is: attacker must authenticate (PR:L, low-privileged) and must successfully guess a valid pending task UUID. The UUID is random, so brute-force required. Additionally, the API rate limits must be insufficient to prevent brute-force. So the exploitation condition is: "Authenticated with low privileges, and must brute-force the random UUID of a pending task; exploitation is mitigated by default API rate limiting." So I'll phrase: "Requires authenticated low-privileged access (PR:L) and the ability to brute-force a random UUID for a pending task; default API rate limits make this impractical."
"attack_chain": Steps: Authenticated user sends requests to task detail endpoint with guessed UUIDs → Access control missing for pending tasks → Leak task logs (information disclosure). Short steps: Access as low-privileged user → Guess UUID → Call tasks API endpoint → Receive task logs due to missing access check. Use kill chain phases: Recon → Delivery → Exploit → Impact. But it's a simple chain: "Authenticate with low privileges → Iteratively request task detail with guessed UUID → Exploit missing access control to view pending task logs → Expose in-progress operation details." Compress to 3-7 steps: Authenticate (Access) → Guess UUID (Recon) → Send API request (Delivery) → Missing access check (Exploit) → Retrieve logs (Impact). So I'll produce: "Authenticate with low privilege → Guess random task UUID → Send API request to task detail endpoint → Missing access check exposes task logs → Leak in-progress operation details." That's 5 steps. I'll separate by →.
"confidence_notes": What is confirmed? Vendor advisory confirms vulnerability and fix version 5.17. Patch available. No public exploit, no KEV. EUVD confirms. CVSS vector provided. I'll say: "Vulnerability and fix confirmed by vendor advisory (GHSA). No public exploit identified; EPSS probability very low. Affected versions and patch version verified."
"prevalence": Weblate is a popular translation tool, but not ubiquitous. It's used by open-source projects for localization. I'd say "medium" prevalence? It's a niche tool but widely used in open-source communities. I'd say "low" because it's specialized, but not rare. However, many open-source projects and some enterprises use it. I'll estimate "medium" (common but not everywhere). Or maybe "low"? I'll consider: Weblate is deployed by projects like KDE, Debian, etc., but it's not as widespread as Tomcat. I'll go with "medium" because it's a well-known tool in localization circles, but not mainstream like WordPress. Balance: prevalence medium. Basis: "widely-used localization platform in open-source communities". I'll justify: "popular web-based localization tool used by many open-source projects". That's "high"? Actually, I'll stick with "medium" because it's not ubiquitous like Linux kernel. "medium" is appropriate.
"prevalence_basis": Justification clause: "widely-deployed localization platform in open-source communities". That's plausible.
"assessed_cvss_vector": I need to independently assess CVSS vector. Given description, the attack vector is Network (AV:N), attack complexity High (AC:H) due to UUID brute-force, privileges required Low (PR:L) because attacker needs to be authenticated low-privileged user, user interaction None (UI:N), scope Unchanged (S:U), confidentiality impact Low (C:L) because logs may contain some partial info, integrity None (I:N), availability None (A:N). This matches the provided CVSS vector exactly. But I must provide my own, which I would also determine as same. So I'll output "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N". Same. I'll provide rationale: "High complexity due to UUID brute-force, low privilege required, limited information disclosure, consistent with vendor CVSS." But the instruction says "Your OWN independent CVSS 3.1 base-metric vector... grounded in the description... NOT a copy of any score in the input." Since the vector provided is consistent with description, I can provide the same vector, but I must ensure I'm not just copying; I'm deriving it myself. I'll output the vector. However, if there's any discrepancy, I'd adjust. But it seems correct. I'll output it.
For "assessed_cvss40_vector": I need to map to CVSS 4.0. The mapping: AV:N -> Network; AC:H -> High; AT:N (no attack requirement needed) because no special conditions beyond brute-force; PR:L -> Low; UI:N -> None; VC:L (confidentiality low) -> Low; VI:N, VA:N; SC:N, SI:N, SA:N (no subsequent system impact). So vector: CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N. I'll output that.
"assessed_cvss_rationale": "Requires brute-forcing a random UUID, so AC:H; low-privileged authentication, PR:L; only log information disclosed, C:L."
Alright, compile JSON.
Now, the summary: I need to craft an original synthesis, not copied from description. For example: "Information disclosure in Weblate's tasks API allows authenticated low-privilege users to access logs of in-progress operations if they can guess a pending task's UUID. Fixed in version 5.17, the flaw has a low CVSS score (3.1) and is mitigated by built-in API rate limits, with no active exploitation reported." That's 2-3 sentences.
"technical_context": "Weblate is a Django-based translation management system that uses Celery for background tasks. The tasks API endpoint retrieves status and logs for tasks identified by UUID. Prior to version 5.17, the endpoint's permission check relied on the task's result data, which is unavailable for pending tasks, bypassing access control. The flaw (CWE-284) allows any authenticated user to attempt access, but the attacker must brute-force the random UUID. The fix introduced caching of task metadata (component ID) to enforce component-level access checks for pending tasks."
"risk_assessment": "The CVSS 3.1 base score is 3.1 (Low), with network attack vector but high complexity due to UUID brute-force, low privileges required, and only limited information disclosure. EPSS probability is 0.03% (7th percentile), indicating very low exploitation likelihood. SSVC decisions note no exploitation observed, automatable: no, technical impact: partial. No public exploits exist, and the vulnerability is not in CISA KEV. The risk is low; exploitation requires significant effort and is
Weblate is a web based localization tool. An open redirect exists in versions 5.13.2 and below via the redir parameter o
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
We need to produce a JSON object for CVE-2026-33435 based on all provided intelligence. The user gave description, CVSS,
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
Same weakness CWE-284 – Improper Access Control
View allSame technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-22997
GHSA-vj45-x3pj-f4w4