Weblateorg
Monthly
Arbitrary file read via symlink traversal in Weblate's App store metadata ZIP download affects all versions prior to 2026.7, allowing project administrators to exfiltrate host files outside their repository boundary. The vulnerability is an incomplete fix for CVE-2026-34242 - the original patch blocked path traversal via '..' sequences but failed to prevent symlink-based traversal, leaving the arbitrary file read primitive intact. No public exploit has been identified at time of analysis; the CVSS score of 7.7 High reflects scope change due to cross-boundary file disclosure, while the project-administrator privilege requirement limits the exploitable population.
Weblate's REST API failed to enforce permission scope on team (group) assignments in all versions prior to 2026.7, allowing any authenticated low-privilege user to assign unauthorized projects or workspaces to a team via the API. The root serializer field `defining_workspace` resolved primary keys against `Workspace.objects.all()` without filtering by the requesting user's permissions, enabling horizontal privilege escalation to private projects. Vendor-released patch 2026.7 is confirmed; no public exploit code or CISA KEV listing exists at time of analysis.
Privilege escalation in Weblate versions prior to 5.17 allows an authenticated low-privileged user to modify sensitive fields (like roles or permissions) of any user account through the REST API's user patching endpoint, leading to full system compromise. The vulnerability stems from insufficient field-level authorization, and the EPSS exploitation probability is very low (0.04%) with no known active exploitation; a vendor patch is available in version 5.17.
Arbitrary file read vulnerability in Weblate versions prior to 5.17 allows authenticated attackers to read sensitive files from the server via symlink traversal in the ZIP download feature. No active exploitation or public exploit code has been identified, and the EPSS score (0.01%) indicates very low likelihood of exploitation. A vendor-released patch is available in Weblate 5.17.
We need to produce a JSON object for CVE-2026-33435 based on all provided intelligence. The user gave description, CVSS, CWE, EPSS, patch status, tags, CPE, SSVC, references, etc. We must synthesize all into the specified fields. Let's extract key information: - Product: Weblate (web based localization tool) - Vulnerability: In versions prior to 5.17, project backup didn't filter Git and Mercurial configuration files, leading to remote code execution under certain circumstances. Fixed in 5.17. - CVSS 3.1: AV:N/AC:H/PR:H/UI:N/S:C/C:H/I:H/A:H (8.0) - CWE: CWE-23 (Relative Path Traversal) – but actually from description it's about unsafe inclusion of VCS config files (lack of sanitization of uploaded backup containing .git/config, hooks, etc.). The fix adds filtering of those paths. So it's more an issue of untrusted data used in backup restoration leading to RCE. CWE-23 might be a misclassification; but we'll incorporate the CWE provided. - EPSS: 0.33% (56th percentile) – relatively low exploitation probability. - SSVC: Exploitation: none, Automatable: no, Technical Impact: total. So no active exploitation, not automatable, total impact. This would prioritize moderately (in SSVC, if exploitation is none, but tech impact total, may still be "attend" but more a "scheduled"). - Tags: RCE, Weblate - CPE: cpe:2.3:a:weblateorg:weblate:*:*:*:*:*:*:*:* (all versions) - Affected versions: weblate < 5.17 - Patch: Available from vendor, fixed in version 5.17. PR #18549 available. - References: GitHub advisory, PR diff. - Exploit status: No mention of KEV, so not KEV. No public exploit identified. From advisory: reported via HackerOne, but no indication of public exploit or active exploitation. So "no public exploit identified at time of analysis". - EPSS low, so unlikely widespread exploitation. - CVSS vector indicates AV:N (network), AC:H (high complexity), PR:H (privileges required high), UI:N (no user interaction), S:C (scope changed), C/H, I/H, A/H. This means a high-privi
DNS rebinding SSRF in Weblate prior to version 2026.8 allows an authenticated user with VCS component URL management privileges to circumvent VCS_RESTRICT_PRIVATE protections and reach internal network services. The attack exploits the time gap between Weblate's initial hostname validation and the VCS client's subsequent independent DNS lookup - an attacker-controlled domain passes validation pointing to a public IP, then switches to an internal address before the actual VCS connection is made. Triggering a clone, fetch, push, or similar operation then causes Weblate to connect to internal VCS-compatible services and potentially expose their contents. No public exploit has been identified at time of analysis, though the DNS rebinding technique is well-understood and toolkits for it exist.
Object-scoped RSS feeds in Weblate prior to version 2026.8 bypass the platform's permission model, exposing change-history metadata from private projects and restricted components to any requester - including unauthenticated users on installations that permit anonymous access. The exposed metadata includes project and component identities, contributor usernames and full names, action types, timestamps, and translation unit links, enabling enumeration of contributor identity and project structure in otherwise-private deployments. No public exploit has been identified at time of analysis and this vulnerability is not listed in CISA KEV, but the lack of any exploitation prerequisite on anonymously accessible instances makes it straightforward to abuse with standard HTTP tooling.
Unbounded regular expression evaluation in Weblate prior to 2026.7 allows any authenticated user holding the built-in 'Edit source' role to induce sustained CPU exhaustion by storing a catastrophically-backtracking pattern in a source string's quality-check flags. Both the RegexCheck and PlaceholderCheck mechanisms compile user-supplied expressions at validation time but execute them without any runtime timeout, so a single malicious flag edit can pin server CPU indefinitely by re-triggering evaluation across every linked translation unit in the same request. No public exploit code exists and the issue is not listed in CISA KEV, but the low complexity and clear role-based attack path make it a credible internal or supply-chain threat for multi-contributor Weblate deployments.
Nested API change endpoints in Weblate prior to version 2026.7 bypass component-level access controls, exposing change history of restricted components to authenticated project members who lack direct view permissions. A low-privileged project member can call the project-, component-, or translation-level change list endpoints to enumerate change records for restricted components - including source and translated string content, component identity, and change metadata - that return 404 on direct component access. No public exploit or CISA KEV listing has been identified; real-world risk is conditional on use of Weblate's restricted component feature.
Global permission bypass in Weblate prior to 2026.7 allows authenticated team members to receive site-wide management permissions without satisfying their team's enforced two-factor authentication requirement. While 2FA enforcement was correctly applied to project-, component-, and workspace-scoped permissions, the same gate was absent for global permissions, meaning a user lacking a configured TOTP device could still access the site management interface at /manage/. No public exploit code is identified at time of analysis, and the issue is fixed in version 2026.7.
Object existence enumeration in Weblate prior to version 2026.7 allows authenticated low-privilege users to infer whether objects exist within private projects by observing differential HTTP response codes - HTTP 403 (Forbidden) for existing-but-inaccessible objects versus HTTP 404 (Not Found) for truly absent ones. Affected endpoints performing globally-scoped ORM lookups across changes, comments, and announcements fail to restrict results to projects the requesting user is authorized to view. No public exploit has been identified and this is not listed in CISA KEV; the CVSS 4.3 Medium rating reflects the authentication prerequisite and the narrow confidentiality impact (existence inference only, no content disclosure).
Server-Side Request Forgery in Weblate's VCS_RESTRICT_PRIVATE control (versions 5.15 through pre-2026.6) allows bypassing of outbound request restrictions via IPv6 transition address encoding techniques. By supplying a hostname whose DNS AAAA record resolves to a NAT64-wrapped, 6to4-wrapped, or IPv4-compatible IPv6 address that encodes a private IPv4 endpoint, an attacker causes Weblate's validator to pass the address as globally routable while the host kernel routes the packet to the embedded private IPv4 target. The vulnerability carries High confidentiality impact (CVSS 5.9, AV:N/AC:H) because SSRF can expose internal services such as cloud IMDS credential endpoints; no public exploit or CISA KEV listing has been identified at time of analysis.
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.
Low-severity path traversal in Weblate prior to 5.17 allows authenticated users to bypass repository boundary checks by crafting symlinks with colliding path prefixes, potentially reading files outside the intended repository scope. No active exploitation or public exploit code is known, and the vulnerability has been patched in version 5.17.
Server-side request forgery in Weblate's webhook add-on allows high-privileged users to bypass existing SSRF protections and make requests to internal network resources. Versions prior to 5.17 are affected; the fix introduces a new restriction setting that blocks private IP ranges by default. No active exploitation is reported (EPSS 0.01%, no CISA KEV entry), and no public exploit code has been identified at this time.
We need to produce a JSON object with all the specified fields, based on the provided CVE data. Let's extract relevant info: CVE ID: CVE-2026-34244 Description: Weblate is a web based localization tool. In versions prior to 5.17, a user with the project.edit permission (granted by the per-project "Administration" role) can configure machine translation service URLs pointing to arbitrary internal network addresses. During configuration validation, Weblate makes an HTTP request to the attacker-controlled URL and reflects up to 200 characters of the response body back to the user in an error message. This constitutes a Server-Side Request Forgery (SSRF) with partial response read. This issue has been fixed in version 5.17. If developers are unable to immediately upgrade, they can limit available machinery services via WEBLATE_MACHINERY setting. CVSS Score: 5.0, Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N CWE: CWE-200 (Information Exposure) Multi-source: EPSS Score: 0.03% (percentile 7%) → low exploitation probability Patch: Available from vendor (version 5.17) Reported by: GitHub_M CPE: cpe:2.3:a:weblateorg:weblate:*:*:*:*:*:*:*:* Tags: Information Disclosure, SSRF, Weblate SSVC: Exploitation: none, Automatable: no, Technical Impact: partial ENISA EUVD: EUVD-2026-23004, affected versions: weblate < 517 (which is 5.17? "517" likely means 5.17, since version numbers sometimes notation like "517" or "5.17". In the patch references, they refer to "Weblate 5.17". So affected: <5.17. References: GitHub security advisory GHSA-xrwr-fcw6-fmq8; commit e619e909...; pull request #18684. Source code evidence from GitHub advisory and commit diff shows the addition of ALLOWED_MACHINERY_DOMAINS setting, blocking private-network targets for untrusted endpoints, and hiding error details from untrusted remote providers. The test shows blocking a private IP target (127.0.0.1) with error "URL domain is not allowed." Important: The vulnerability requires authenticated user with project.edit permission (Administration role) and specific ability to configure machine translation service URLs. So the attacker needs valid low-privilege? The CVSS vector says PR:L (low privileges). So the attacker needs a user account with project Administration role (which grants project.edit permission). The attack allows SSRF with limited response read (200 chars) to internal addresses. The configuration validation makes request to URL and reflects part of response body in error message. Now we need to produce a comprehensive analysis. Fields: 1. product_name: "Weblate" — only product name, so "Weblate". Could also be "Weblate translation tool" but keep short: "Weblate". I'll go with "Weblate". 2. summary: Not a paraphrase. Start with impact: "Information disclosure via SSRF in Weblate prior to 5.17 allows authenticated project administrators to read partial internal network responses." Mention KEV: No KEV, no active exploitation. EPSS low. POC? Not mentioned, but the advisory details the vulnerability; however, no explicit POC script. So: "no public exploit identified at time of analysis." So combine: "Server-side request forgery (SSRF) with limited response disclosure in Weblate versions before 5.17 permits an authenticated user with the Administration role to probe internal services and read up to 200 characters of response data." And mention EPSS, etc. So: "An authenticated user with the project.edit permission (project Administration role) can configure machine translation URLs pointing to internal addresses; the validation request reflects partial response data in an error message. This allows internal service fingerprinting, with no code execution or privilege escalation. No active exploitation reported, and EPSS indicates low probability." 3. technical_context: "Underlying technology: Weblate's machinery configuration allows users to specify third-party machine translation services, which the application calls to validate endpoints. The vulnerability arises from insufficient validation of these URLs, enabling SSRF to internal hosts. CWE-200 (Information Exposure) because the response body is leaked partially. The fix introduces ALLOWED_MACHINERY_DOMAINS and blocks private-IP targets for project-level configuration. CPE: cpe:2.3:a:weblateorg:weblate:*:*:*:*:*:*:*:* covers all versions before 5.17." 4. risk_assessment: CVSS 5.0, vector AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N. EPSS 0.03% (very low). SSVC: none exploitation, not automatable, partial impact. KEV not listed. So overall risk low. Need to compare: CVSS medium severity but low exploitability in the wild. "CVSS score of 5.0 suggests moderate impact with low confidentiality loss across a scope change; however, EPSS 0.03% indicates negligible exploitation activity. The vulnerability requires authenticated project-level access, limiting real-world risk. Active exploitation not observed (no KEV)." 5. affected_products: "Weblate versions prior to 5.17 (all releases before 5.17). This includes any Weblate instance where users can be granted project Administration role. The official vendor advisory is at https://github.com/WeblateOrg/weblate/security/advisories/GHSA-xrwr-fcw6-fmq8. CPE: cpe:2.3:a:weblateorg:weblate:*:*:*:*:*:*:*:*." 6. remediation: "Upgrade to Weblate 5.17 or later, where the SSRF is fixed by blocking private-network destinations and hiding untrusted error details. The fix also introduces ALLOWED_MACHINERY_DOMAINS to explicitly whitelist permitted external services. If immediate upgrade is not possible, restrict available machinery services using the WEBLATE_MACHINERY setting to only trusted services, eliminating the ability to configure arbitrary URLs. Additionally, consider network segmentation to limit outbound connections from the Weblate server to internal networks. Refer to advisory GHSA-xrwr-fcw6-fmq8 and commit e619e9090202e4886b844c110d39308e7e882c0e." 7. exploit_scenario: "An attacker with Administration role on a Weblate project configures a machine translation service URL pointing to an internal metadata service (e.g., http://169.254.169.254/) and triggers validation; the error message returns up to 200 characters of the response, potentially leaking cloud instance credentials or internal configuration data." No POC publicly known? The advisory doesn't mention POC; we say no public exploit identified. So "No public exploit code exists, but the steps are straightforward for an authenticated user." 8. exploitation_conditions: "The attacker must have an account on the Weblate instance with the per-project Administration role (project.edit permission) and access to the project configuration interface to specify a machine translation service URL. The vulnerability is exploitable only against Weblate versions prior to 5.17 and requires that the instance allows outbound HTTP connections to user-supplied endpoints. There is no default exposure: an attacker must be specifically granted project Administration privileges." So conditions are: authenticated with project.edit permission, ability to set machinery URL. So PR:L. Access: network if the Weblate web interface is accessible. So conditions: "Requires authenticated user with project Administration role. Exploitation further depends on unpatched version (<5.17) and ability to configure machinery services for a project." 9. attack_chain: "Authenticate as project administrator → Access project machinery settings → Configure service URL to internal target → Trigger validation which sends HTTP request to internal host → Error message reflects partial response body → Exfiltrate data or probe internal services." Possibly 5-6 steps. Use kill chain phases: Recon (identify Weblate instance and obtain credentials), Delivery/Exploit: use project admin interface, Exploit: set URL, Execution: validation request, Impact: read response. So: "Obtain project Administration credentials → Access machinery configuration endpoint → Set custom service URL targeting internal host → Submit configuration to trigger validation → Weblate makes HTTP request to internal address → Error response returns truncated body → Attacker reads sensitive internal information." That works. 10. confidence_notes: "Vendor patch confirmed via advisory GHSA-xrwr-fcw6-fmq8 and commit e619e909. No evidence of active exploitation; EPSS low. Exploit prerequisites (authenticated project admin) are explicit in advisory. Patch version 5.17 verified." So: "Fix version 5.17 confirmed by Weblate maintainers. Exploitation prerequisites (authenticated project administrator) confirmed by advisory. No public exploit code or indicators of in-the-wild exploitation observed." So confidence high. 11. prevalence: How widely deployed is Weblate? It's a web-based localization tool used for open-source projects, but not as widespread as major web servers. I'd estimate medium: "medium". Because it's a known tool in the localization space, not universal. Basis: "popular open-source translation management platform, but not ubiquitous." Or "niche but widely adopted in open-source communities." I'd go with medium. prevalence: "medium". prevalence_basis: "popular in open-source translation projects but not enterprise-ubiquitous." 12. assessed_cvss_vector: We need to provide an independent assessment. The official CVSS is AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N. That seems accurate. But I'll re-assess: Attack vector: Network, Attack complexity: Low, Privileges required: Low (authenticated, but user needs specific role - but PR:L is fine), User interaction: None, Scope: Changed (the vulnerable component is Weblate, and the impacted component is the internal service), Confidentiality: Low (partial read of response), Integrity: None, Availability: None. So vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N. That matches. I'll output that. Rationale: "Authenticated project administrator can trigger SSRF to internal networks, leaking limited data; no integrity or availability impact." 13. assessed_cvss40_vector: Need to map to CVSS 4.0. The base metrics: AV:N (Network), AC:L (Low), AT:N (Attack Requirements: None?), PR:L (Low), UI:N (None), VC:L/VI:N/VA:N? In CVSS 4.0, we have vulnerable system impact (VC, VI, VA) and subsequent system impact (SC, SI, SA). The scope change indicates that the vulnerable component (Weblate) affects a different component (internal service). But in CVSS 4.0, scope change is handled by different metrics: the vulnerable system is Weblate, the subsequent system is the internal service. According to the CVSS 4.0 spec, for a vulnerability with a scope change, we set: VC, VI, VA for the vulnerable component, and SC, SI, SA for the subsequent system. Here, the vulnerability impacts the internal service (confidentiality loss) but not Weblate directly. Actually, the attacker exploits Weblate to affect the internal service. In CVSS 3.1, S:C indicates that a vulnerability in a vulnerable component can impact a different component, and the impact metrics (C/I/A) refer to the impacted component. So in 4.0, we need to separate impacts: Typically, the vulnerable system might have some confidentiality impact? The advisory mentions that the response is reflected in an error message shown to the user, so there is some information disclosure from the internal service. The vulnerability is SSRF, so the confidentiality impact is on the internal service. The Weblate itself might not be impacted. So we can set VC:N, VI:N, VA:N (no direct impact on Weblate), and SC:L, SI:N, SA:N (confidentiality loss on the subsequent system). The CVSS 4.0 vector would be: CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:N/SC:L/SI:N/SA:N. That seems correct. Rationale: "Privileged user triggers request to internal service; no direct impact on Weblate, but subsequent system confidentiality breached (partial)." I'll include assessed_cvss40_rationale? The field is "assessed_cvss40_vector" just vector output, not rationale. The user request says: "assessed_cvss40_vector": "The SAME assessment expressed as a CVSS 4.0 base vector..." So just vector. I'll output that. Now compose JSON fields accordingly. Ensure all are plain strings.
Server-Side Request Forgery in Weblate prior to version 5.17 allows authenticated users to bypass the ALLOWED_ASSET_DOMAINS allowlist via HTTP redirects, forcing the server to request unintended hosts. This can lead to low confidentiality impact through information disclosure. The vulnerability is fixed in version 5.17, and no public exploit or active exploitation has been identified.
Path traversal in Weblate allows authenticated users to read arbitrary files outside the repository via the translation memory API. Versions prior to 5.17 are affected; the fix in 5.17 adds filename validation to prevent directory traversal and restricts remote URLs to allowed domains. No active exploitation has been reported (CISA KEV not listed, SSVC exploitation status none), and EPSS risk is very low (0.04%).
Low-privileged users can modify Weblate translation memory via improperly exposed API endpoints in versions prior to 5.17, leading to unauthorized data manipulation without affecting confidentiality or availability. The vulnerability is not known to be actively exploited and has a very low exploitation probability (EPSS 0.01%).
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
Arbitrary file read via symlink traversal in Weblate's App store metadata ZIP download affects all versions prior to 2026.7, allowing project administrators to exfiltrate host files outside their repository boundary. The vulnerability is an incomplete fix for CVE-2026-34242 - the original patch blocked path traversal via '..' sequences but failed to prevent symlink-based traversal, leaving the arbitrary file read primitive intact. No public exploit has been identified at time of analysis; the CVSS score of 7.7 High reflects scope change due to cross-boundary file disclosure, while the project-administrator privilege requirement limits the exploitable population.
Weblate's REST API failed to enforce permission scope on team (group) assignments in all versions prior to 2026.7, allowing any authenticated low-privilege user to assign unauthorized projects or workspaces to a team via the API. The root serializer field `defining_workspace` resolved primary keys against `Workspace.objects.all()` without filtering by the requesting user's permissions, enabling horizontal privilege escalation to private projects. Vendor-released patch 2026.7 is confirmed; no public exploit code or CISA KEV listing exists at time of analysis.
Privilege escalation in Weblate versions prior to 5.17 allows an authenticated low-privileged user to modify sensitive fields (like roles or permissions) of any user account through the REST API's user patching endpoint, leading to full system compromise. The vulnerability stems from insufficient field-level authorization, and the EPSS exploitation probability is very low (0.04%) with no known active exploitation; a vendor patch is available in version 5.17.
Arbitrary file read vulnerability in Weblate versions prior to 5.17 allows authenticated attackers to read sensitive files from the server via symlink traversal in the ZIP download feature. No active exploitation or public exploit code has been identified, and the EPSS score (0.01%) indicates very low likelihood of exploitation. A vendor-released patch is available in Weblate 5.17.
We need to produce a JSON object for CVE-2026-33435 based on all provided intelligence. The user gave description, CVSS, CWE, EPSS, patch status, tags, CPE, SSVC, references, etc. We must synthesize all into the specified fields. Let's extract key information: - Product: Weblate (web based localization tool) - Vulnerability: In versions prior to 5.17, project backup didn't filter Git and Mercurial configuration files, leading to remote code execution under certain circumstances. Fixed in 5.17. - CVSS 3.1: AV:N/AC:H/PR:H/UI:N/S:C/C:H/I:H/A:H (8.0) - CWE: CWE-23 (Relative Path Traversal) – but actually from description it's about unsafe inclusion of VCS config files (lack of sanitization of uploaded backup containing .git/config, hooks, etc.). The fix adds filtering of those paths. So it's more an issue of untrusted data used in backup restoration leading to RCE. CWE-23 might be a misclassification; but we'll incorporate the CWE provided. - EPSS: 0.33% (56th percentile) – relatively low exploitation probability. - SSVC: Exploitation: none, Automatable: no, Technical Impact: total. So no active exploitation, not automatable, total impact. This would prioritize moderately (in SSVC, if exploitation is none, but tech impact total, may still be "attend" but more a "scheduled"). - Tags: RCE, Weblate - CPE: cpe:2.3:a:weblateorg:weblate:*:*:*:*:*:*:*:* (all versions) - Affected versions: weblate < 5.17 - Patch: Available from vendor, fixed in version 5.17. PR #18549 available. - References: GitHub advisory, PR diff. - Exploit status: No mention of KEV, so not KEV. No public exploit identified. From advisory: reported via HackerOne, but no indication of public exploit or active exploitation. So "no public exploit identified at time of analysis". - EPSS low, so unlikely widespread exploitation. - CVSS vector indicates AV:N (network), AC:H (high complexity), PR:H (privileges required high), UI:N (no user interaction), S:C (scope changed), C/H, I/H, A/H. This means a high-privi
DNS rebinding SSRF in Weblate prior to version 2026.8 allows an authenticated user with VCS component URL management privileges to circumvent VCS_RESTRICT_PRIVATE protections and reach internal network services. The attack exploits the time gap between Weblate's initial hostname validation and the VCS client's subsequent independent DNS lookup - an attacker-controlled domain passes validation pointing to a public IP, then switches to an internal address before the actual VCS connection is made. Triggering a clone, fetch, push, or similar operation then causes Weblate to connect to internal VCS-compatible services and potentially expose their contents. No public exploit has been identified at time of analysis, though the DNS rebinding technique is well-understood and toolkits for it exist.
Object-scoped RSS feeds in Weblate prior to version 2026.8 bypass the platform's permission model, exposing change-history metadata from private projects and restricted components to any requester - including unauthenticated users on installations that permit anonymous access. The exposed metadata includes project and component identities, contributor usernames and full names, action types, timestamps, and translation unit links, enabling enumeration of contributor identity and project structure in otherwise-private deployments. No public exploit has been identified at time of analysis and this vulnerability is not listed in CISA KEV, but the lack of any exploitation prerequisite on anonymously accessible instances makes it straightforward to abuse with standard HTTP tooling.
Unbounded regular expression evaluation in Weblate prior to 2026.7 allows any authenticated user holding the built-in 'Edit source' role to induce sustained CPU exhaustion by storing a catastrophically-backtracking pattern in a source string's quality-check flags. Both the RegexCheck and PlaceholderCheck mechanisms compile user-supplied expressions at validation time but execute them without any runtime timeout, so a single malicious flag edit can pin server CPU indefinitely by re-triggering evaluation across every linked translation unit in the same request. No public exploit code exists and the issue is not listed in CISA KEV, but the low complexity and clear role-based attack path make it a credible internal or supply-chain threat for multi-contributor Weblate deployments.
Nested API change endpoints in Weblate prior to version 2026.7 bypass component-level access controls, exposing change history of restricted components to authenticated project members who lack direct view permissions. A low-privileged project member can call the project-, component-, or translation-level change list endpoints to enumerate change records for restricted components - including source and translated string content, component identity, and change metadata - that return 404 on direct component access. No public exploit or CISA KEV listing has been identified; real-world risk is conditional on use of Weblate's restricted component feature.
Global permission bypass in Weblate prior to 2026.7 allows authenticated team members to receive site-wide management permissions without satisfying their team's enforced two-factor authentication requirement. While 2FA enforcement was correctly applied to project-, component-, and workspace-scoped permissions, the same gate was absent for global permissions, meaning a user lacking a configured TOTP device could still access the site management interface at /manage/. No public exploit code is identified at time of analysis, and the issue is fixed in version 2026.7.
Object existence enumeration in Weblate prior to version 2026.7 allows authenticated low-privilege users to infer whether objects exist within private projects by observing differential HTTP response codes - HTTP 403 (Forbidden) for existing-but-inaccessible objects versus HTTP 404 (Not Found) for truly absent ones. Affected endpoints performing globally-scoped ORM lookups across changes, comments, and announcements fail to restrict results to projects the requesting user is authorized to view. No public exploit has been identified and this is not listed in CISA KEV; the CVSS 4.3 Medium rating reflects the authentication prerequisite and the narrow confidentiality impact (existence inference only, no content disclosure).
Server-Side Request Forgery in Weblate's VCS_RESTRICT_PRIVATE control (versions 5.15 through pre-2026.6) allows bypassing of outbound request restrictions via IPv6 transition address encoding techniques. By supplying a hostname whose DNS AAAA record resolves to a NAT64-wrapped, 6to4-wrapped, or IPv4-compatible IPv6 address that encodes a private IPv4 endpoint, an attacker causes Weblate's validator to pass the address as globally routable while the host kernel routes the packet to the embedded private IPv4 target. The vulnerability carries High confidentiality impact (CVSS 5.9, AV:N/AC:H) because SSRF can expose internal services such as cloud IMDS credential endpoints; no public exploit or CISA KEV listing has been identified at time of analysis.
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.
Low-severity path traversal in Weblate prior to 5.17 allows authenticated users to bypass repository boundary checks by crafting symlinks with colliding path prefixes, potentially reading files outside the intended repository scope. No active exploitation or public exploit code is known, and the vulnerability has been patched in version 5.17.
Server-side request forgery in Weblate's webhook add-on allows high-privileged users to bypass existing SSRF protections and make requests to internal network resources. Versions prior to 5.17 are affected; the fix introduces a new restriction setting that blocks private IP ranges by default. No active exploitation is reported (EPSS 0.01%, no CISA KEV entry), and no public exploit code has been identified at this time.
We need to produce a JSON object with all the specified fields, based on the provided CVE data. Let's extract relevant info: CVE ID: CVE-2026-34244 Description: Weblate is a web based localization tool. In versions prior to 5.17, a user with the project.edit permission (granted by the per-project "Administration" role) can configure machine translation service URLs pointing to arbitrary internal network addresses. During configuration validation, Weblate makes an HTTP request to the attacker-controlled URL and reflects up to 200 characters of the response body back to the user in an error message. This constitutes a Server-Side Request Forgery (SSRF) with partial response read. This issue has been fixed in version 5.17. If developers are unable to immediately upgrade, they can limit available machinery services via WEBLATE_MACHINERY setting. CVSS Score: 5.0, Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N CWE: CWE-200 (Information Exposure) Multi-source: EPSS Score: 0.03% (percentile 7%) → low exploitation probability Patch: Available from vendor (version 5.17) Reported by: GitHub_M CPE: cpe:2.3:a:weblateorg:weblate:*:*:*:*:*:*:*:* Tags: Information Disclosure, SSRF, Weblate SSVC: Exploitation: none, Automatable: no, Technical Impact: partial ENISA EUVD: EUVD-2026-23004, affected versions: weblate < 517 (which is 5.17? "517" likely means 5.17, since version numbers sometimes notation like "517" or "5.17". In the patch references, they refer to "Weblate 5.17". So affected: <5.17. References: GitHub security advisory GHSA-xrwr-fcw6-fmq8; commit e619e909...; pull request #18684. Source code evidence from GitHub advisory and commit diff shows the addition of ALLOWED_MACHINERY_DOMAINS setting, blocking private-network targets for untrusted endpoints, and hiding error details from untrusted remote providers. The test shows blocking a private IP target (127.0.0.1) with error "URL domain is not allowed." Important: The vulnerability requires authenticated user with project.edit permission (Administration role) and specific ability to configure machine translation service URLs. So the attacker needs valid low-privilege? The CVSS vector says PR:L (low privileges). So the attacker needs a user account with project Administration role (which grants project.edit permission). The attack allows SSRF with limited response read (200 chars) to internal addresses. The configuration validation makes request to URL and reflects part of response body in error message. Now we need to produce a comprehensive analysis. Fields: 1. product_name: "Weblate" — only product name, so "Weblate". Could also be "Weblate translation tool" but keep short: "Weblate". I'll go with "Weblate". 2. summary: Not a paraphrase. Start with impact: "Information disclosure via SSRF in Weblate prior to 5.17 allows authenticated project administrators to read partial internal network responses." Mention KEV: No KEV, no active exploitation. EPSS low. POC? Not mentioned, but the advisory details the vulnerability; however, no explicit POC script. So: "no public exploit identified at time of analysis." So combine: "Server-side request forgery (SSRF) with limited response disclosure in Weblate versions before 5.17 permits an authenticated user with the Administration role to probe internal services and read up to 200 characters of response data." And mention EPSS, etc. So: "An authenticated user with the project.edit permission (project Administration role) can configure machine translation URLs pointing to internal addresses; the validation request reflects partial response data in an error message. This allows internal service fingerprinting, with no code execution or privilege escalation. No active exploitation reported, and EPSS indicates low probability." 3. technical_context: "Underlying technology: Weblate's machinery configuration allows users to specify third-party machine translation services, which the application calls to validate endpoints. The vulnerability arises from insufficient validation of these URLs, enabling SSRF to internal hosts. CWE-200 (Information Exposure) because the response body is leaked partially. The fix introduces ALLOWED_MACHINERY_DOMAINS and blocks private-IP targets for project-level configuration. CPE: cpe:2.3:a:weblateorg:weblate:*:*:*:*:*:*:*:* covers all versions before 5.17." 4. risk_assessment: CVSS 5.0, vector AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N. EPSS 0.03% (very low). SSVC: none exploitation, not automatable, partial impact. KEV not listed. So overall risk low. Need to compare: CVSS medium severity but low exploitability in the wild. "CVSS score of 5.0 suggests moderate impact with low confidentiality loss across a scope change; however, EPSS 0.03% indicates negligible exploitation activity. The vulnerability requires authenticated project-level access, limiting real-world risk. Active exploitation not observed (no KEV)." 5. affected_products: "Weblate versions prior to 5.17 (all releases before 5.17). This includes any Weblate instance where users can be granted project Administration role. The official vendor advisory is at https://github.com/WeblateOrg/weblate/security/advisories/GHSA-xrwr-fcw6-fmq8. CPE: cpe:2.3:a:weblateorg:weblate:*:*:*:*:*:*:*:*." 6. remediation: "Upgrade to Weblate 5.17 or later, where the SSRF is fixed by blocking private-network destinations and hiding untrusted error details. The fix also introduces ALLOWED_MACHINERY_DOMAINS to explicitly whitelist permitted external services. If immediate upgrade is not possible, restrict available machinery services using the WEBLATE_MACHINERY setting to only trusted services, eliminating the ability to configure arbitrary URLs. Additionally, consider network segmentation to limit outbound connections from the Weblate server to internal networks. Refer to advisory GHSA-xrwr-fcw6-fmq8 and commit e619e9090202e4886b844c110d39308e7e882c0e." 7. exploit_scenario: "An attacker with Administration role on a Weblate project configures a machine translation service URL pointing to an internal metadata service (e.g., http://169.254.169.254/) and triggers validation; the error message returns up to 200 characters of the response, potentially leaking cloud instance credentials or internal configuration data." No POC publicly known? The advisory doesn't mention POC; we say no public exploit identified. So "No public exploit code exists, but the steps are straightforward for an authenticated user." 8. exploitation_conditions: "The attacker must have an account on the Weblate instance with the per-project Administration role (project.edit permission) and access to the project configuration interface to specify a machine translation service URL. The vulnerability is exploitable only against Weblate versions prior to 5.17 and requires that the instance allows outbound HTTP connections to user-supplied endpoints. There is no default exposure: an attacker must be specifically granted project Administration privileges." So conditions are: authenticated with project.edit permission, ability to set machinery URL. So PR:L. Access: network if the Weblate web interface is accessible. So conditions: "Requires authenticated user with project Administration role. Exploitation further depends on unpatched version (<5.17) and ability to configure machinery services for a project." 9. attack_chain: "Authenticate as project administrator → Access project machinery settings → Configure service URL to internal target → Trigger validation which sends HTTP request to internal host → Error message reflects partial response body → Exfiltrate data or probe internal services." Possibly 5-6 steps. Use kill chain phases: Recon (identify Weblate instance and obtain credentials), Delivery/Exploit: use project admin interface, Exploit: set URL, Execution: validation request, Impact: read response. So: "Obtain project Administration credentials → Access machinery configuration endpoint → Set custom service URL targeting internal host → Submit configuration to trigger validation → Weblate makes HTTP request to internal address → Error response returns truncated body → Attacker reads sensitive internal information." That works. 10. confidence_notes: "Vendor patch confirmed via advisory GHSA-xrwr-fcw6-fmq8 and commit e619e909. No evidence of active exploitation; EPSS low. Exploit prerequisites (authenticated project admin) are explicit in advisory. Patch version 5.17 verified." So: "Fix version 5.17 confirmed by Weblate maintainers. Exploitation prerequisites (authenticated project administrator) confirmed by advisory. No public exploit code or indicators of in-the-wild exploitation observed." So confidence high. 11. prevalence: How widely deployed is Weblate? It's a web-based localization tool used for open-source projects, but not as widespread as major web servers. I'd estimate medium: "medium". Because it's a known tool in the localization space, not universal. Basis: "popular open-source translation management platform, but not ubiquitous." Or "niche but widely adopted in open-source communities." I'd go with medium. prevalence: "medium". prevalence_basis: "popular in open-source translation projects but not enterprise-ubiquitous." 12. assessed_cvss_vector: We need to provide an independent assessment. The official CVSS is AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N. That seems accurate. But I'll re-assess: Attack vector: Network, Attack complexity: Low, Privileges required: Low (authenticated, but user needs specific role - but PR:L is fine), User interaction: None, Scope: Changed (the vulnerable component is Weblate, and the impacted component is the internal service), Confidentiality: Low (partial read of response), Integrity: None, Availability: None. So vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N. That matches. I'll output that. Rationale: "Authenticated project administrator can trigger SSRF to internal networks, leaking limited data; no integrity or availability impact." 13. assessed_cvss40_vector: Need to map to CVSS 4.0. The base metrics: AV:N (Network), AC:L (Low), AT:N (Attack Requirements: None?), PR:L (Low), UI:N (None), VC:L/VI:N/VA:N? In CVSS 4.0, we have vulnerable system impact (VC, VI, VA) and subsequent system impact (SC, SI, SA). The scope change indicates that the vulnerable component (Weblate) affects a different component (internal service). But in CVSS 4.0, scope change is handled by different metrics: the vulnerable system is Weblate, the subsequent system is the internal service. According to the CVSS 4.0 spec, for a vulnerability with a scope change, we set: VC, VI, VA for the vulnerable component, and SC, SI, SA for the subsequent system. Here, the vulnerability impacts the internal service (confidentiality loss) but not Weblate directly. Actually, the attacker exploits Weblate to affect the internal service. In CVSS 3.1, S:C indicates that a vulnerability in a vulnerable component can impact a different component, and the impact metrics (C/I/A) refer to the impacted component. So in 4.0, we need to separate impacts: Typically, the vulnerable system might have some confidentiality impact? The advisory mentions that the response is reflected in an error message shown to the user, so there is some information disclosure from the internal service. The vulnerability is SSRF, so the confidentiality impact is on the internal service. The Weblate itself might not be impacted. So we can set VC:N, VI:N, VA:N (no direct impact on Weblate), and SC:L, SI:N, SA:N (confidentiality loss on the subsequent system). The CVSS 4.0 vector would be: CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:N/SC:L/SI:N/SA:N. That seems correct. Rationale: "Privileged user triggers request to internal service; no direct impact on Weblate, but subsequent system confidentiality breached (partial)." I'll include assessed_cvss40_rationale? The field is "assessed_cvss40_vector" just vector output, not rationale. The user request says: "assessed_cvss40_vector": "The SAME assessment expressed as a CVSS 4.0 base vector..." So just vector. I'll output that. Now compose JSON fields accordingly. Ensure all are plain strings.
Server-Side Request Forgery in Weblate prior to version 5.17 allows authenticated users to bypass the ALLOWED_ASSET_DOMAINS allowlist via HTTP redirects, forcing the server to request unintended hosts. This can lead to low confidentiality impact through information disclosure. The vulnerability is fixed in version 5.17, and no public exploit or active exploitation has been identified.
Path traversal in Weblate allows authenticated users to read arbitrary files outside the repository via the translation memory API. Versions prior to 5.17 are affected; the fix in 5.17 adds filename validation to prevent directory traversal and restricts remote URLs to allowed domains. No active exploitation has been reported (CISA KEV not listed, SSVC exploitation status none), and EPSS risk is very low (0.04%).
Low-privileged users can modify Weblate translation memory via improperly exposed API endpoints in versions prior to 5.17, leading to unauthorized data manipulation without affecting confidentiality or availability. The vulnerability is not known to be actively exploited and has a very low exploitation probability (EPSS 0.01%).
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