Description
virtualenv is a tool for creating isolated virtual python environments. From 21.14.9 until 21.14.13, the bash bin/activate script can copy an attacker-controlled --prompt value into PS1 without escaping dollar signs or backticks when both promptvars and POSIX mode are disabled during activation. Re-enabling promptvars, running set -o posix, or starting an interactive child bash that inherits the exported PS1 can then expand command substitution in the stored VIRTUAL_ENV_PROMPT value and execute commands as the user who activates the environment. This issue is fixed in version 21.14.13.
Published: 2026-10-23
Score: 7.1 High
EPSS: < 1% Very Low
KEV: No
Impact: Command Execution via Prompt Expansion
Action: Patch Now
AI Analysis

Impact

virtualenv versions 21.14.9 through 21.14.12 ship a bash activation script that copies an attacker‑controlled --prompt value into the PS1 variable without escaping shell metacharacters when promptvars and POSIX mode are disabled. The stored prompt is later expanded in the user’s shell, allowing arbitrary command substitution to execute as the activating user. This flaw is a form of command injection (CWE‑78) that can lead to execution of malicious code without prompting the user.

Affected Systems

The vulnerability affects the pypa virtualenv tool, specifically releases 21.14.9 through 21.14.12. Upgrading to virtualenv 21.14.13 or later removes the flaw.

Risk and Exploitability

The CVSS score is 7.1, indicating a moderate severity. The EPSS score is not available, and the issue is not listed in CISA KEV. Because the exploit requires an attacker‑controlled --prompt during virtual environment creation, the attack vector is local to users who can invoke virtualenv. Once activated, the unescaped prompt can run arbitrary shell commands as the current user, potentially giving the attacker local code execution within that session. However, no remote exploitation or privilege escalation beyond the user’s rights is documented.

Generated by OpenCVE AI on October 23, 2026 at 20:50 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade virtualenv to 21.14.13 or later.
  • Enable promptvars or set -o posix before activating the environment to prevent prompt expansion.
  • Avoid using custom --prompt values, or escape dollar signs and backticks in any supplied prompt string.

Generated by OpenCVE AI on October 23, 2026 at 20:50 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-cx6f-vjhg-g3cc virtualenv: Bash activator leaves the --prompt value unescaped in PS1 when promptvars is off, so prompt expansion later executes it (regression in 21.14.9)
History

Sat, 24 Oct 2026 00:30:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

cvssV3_1

{'score': 7.0, 'vector': 'CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H'}

threat_severity

Moderate


Fri, 23 Oct 2026 23:00:00 +0000

Type Values Removed Values Added
First Time appeared Pypa
Pypa virtualenv
Vendors & Products Pypa
Pypa virtualenv

Fri, 23 Oct 2026 21:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Fri, 23 Oct 2026 19:45:00 +0000

Type Values Removed Values Added
Description virtualenv is a tool for creating isolated virtual python environments. From 21.14.9 until 21.14.13, the bash bin/activate script can copy an attacker-controlled --prompt value into PS1 without escaping dollar signs or backticks when both promptvars and POSIX mode are disabled during activation. Re-enabling promptvars, running set -o posix, or starting an interactive child bash that inherits the exported PS1 can then expand command substitution in the stored VIRTUAL_ENV_PROMPT value and execute commands as the user who activates the environment. This issue is fixed in version 21.14.13.
Title virtualenv: Bash activator leaves the --prompt value unescaped in PS1 when promptvars is off, so prompt expansion later executes it (regression in 21.14.9)
Weaknesses CWE-78
References
Metrics cvssV4_0

{'score': 7.1, 'vector': 'CVSS:4.0/AV:L/AC:H/AT:P/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-23T20:55:42.764Z

Reserved: 2026-10-22T22:53:15.239Z

Link: CVE-2026-115586

cve-icon Vulnrichment

Updated: 2026-10-23T20:45:54.216Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-10-23T20:17:21.363

Modified: 2026-10-26T13:45:21.740

Link: CVE-2026-115586

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-10-23T19:34:46Z

Links: CVE-2026-115586 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-23T22:45:14Z

Weaknesses
  • CWE-78

    Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')