Security Vulnerability Report
中文
CVE-2026-45370 CVSS 7.7 HIGH

CVE-2026-45370

Published: 2026-05-14 21:16:48
Last Modified: 2026-05-14 21:16:48

Description

python-utcp is the python implementation of UTCP. Prior to 1.1.3, _prepare_environment() in cli_communication_protocol.py passes a full copy of os.environ to every CLI subprocess. When combined with CVE-2026-45369, an attacker can exfiltrate all process-level secrets in a single tool call. This vulnerability is fixed in 1.1.3.

CVSS Details

CVSS Score
7.7
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N

Configurations (Affected Products)

No configuration data available.

python-utcp < 1.1.3

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import subprocess import os def simulate_vulnerability(): """ Simulates the vulnerable behavior where os.environ is passed directly to a subprocess, leading to potential secret leakage. """ print("[+] Simulating CVE-2026-45370...") # In the vulnerable version, the full environment is copied vulnerable_env = os.environ.copy() # Check for sensitive keys (Simulation) secrets_found = [k for k in vulnerable_env.keys() if 'SECRET' in k or 'KEY' in k or 'TOKEN' in k] if secrets_found: print(f"[!] Found {len(secrets_found)} potential secret keys in environment.") else: print("[*] No obvious secrets found in current env, but vars are passed regardless.") # Simulate a subprocess call that would inherit these vars # In a real exploit combined with CVE-2026-45369, an attacker might # force the subprocess to output these vars. print("[*] Spawning subprocess with inherited environment...") try: # Using 'env' command to list environment variables as PoC proc = subprocess.Popen(['env'], stdout=subprocess.PIPE, env=vulnerable_env) output, _ = proc.communicate() # Displaying a snippet of the leaked environment print("[+] Subprocess output (first 200 chars):") print(output.decode('utf-8')[:200]) except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": simulate_vulnerability()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-45370", "sourceIdentifier": "[email protected]", "published": "2026-05-14T21:16:48.350", "lastModified": "2026-05-14T21:16:48.350", "vulnStatus": "Received", "cveTags": [], "descriptions": [{"lang": "en", "value": "python-utcp is the python implementation of UTCP. Prior to 1.1.3, _prepare_environment() in cli_communication_protocol.py passes a full copy of os.environ to every CLI subprocess. When combined with CVE-2026-45369, an attacker can exfiltrate all process-level secrets in a single tool call. This vulnerability is fixed in 1.1.3."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N", "baseScore": 7.7, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.1, "impactScore": 4.0}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-526"}]}], "references": [{"url": "https://github.com/universal-tool-calling-protocol/python-utcp/security/advisories/GHSA-5v57-8rxj-3p2r", "source": "[email protected]"}]}}