Description
virtualenv is a tool for creating isolated virtual python environments. Prior to 21.14.9, virtualenv's ScriptMakerCustom and pip pass an incompletely quoted interpreter path to distlib ScriptMaker when generating POSIX console scripts. When the path contains a space or produces a shebang longer than 127 bytes, distlib emits a /bin/sh wrapper whose double-quoted interpreter path still expands command substitutions and backticks. An attacker who influences the environment destination can therefore execute commands with the user's privileges when the user later runs a generated launcher; environment creation and activation do not trigger the command. Existing launchers are not repaired by upgrading virtualenv alone and must be regenerated, while a later independent pip installation or upgrade can reintroduce an affected launcher because pip's vendored distlib is unchanged. The virtualenv fix is released in version 21.14.9.
Published: 2026-10-20
Score: 7.8 High
EPSS: < 1% Very Low
KEV: No
Impact: Command Execution
Action: Immediate Patch
AI Analysis

Impact

Virtualenv’s script generator for POSIX console scripts fails to fully quote the interpreter path when creating consoles. If a destination directory contains spaces or produces a shebang longer than 127 bytes, distlib emits a /bin/sh wrapper whose quoted interpreter path still expands shell substitutions and backticks. An attacker who can influence the destination name can inject a command into the path, which runs with the current user’s privileges when the launcher is later executed. The flaw does not affect environment creation or activation directly, but the launcher provides a later execution window.

Affected Systems

The vulnerability affects PyPA’s virtualenv tool prior to version 21.14.9. It is tied to the bundled distlib used by virtualenv’s ScriptMakerCustom and pip pass components, and can reappear when pip upgrades to a version that still includes the unpatched distlib. All virtual environments created with affected releases are potentially compromised unless the launchers are regenerated.

Risk and Exploitability

With a CVSS score of 7.8 the flaw is considered high impact. The EPSS score is not available, so the exploitation likelihood is unclear, but the change is currently in use until the user recreates the environment. The vulnerability is not listed in CISA KEV. Attackers who control the environment destination—such as automated deployment scripts or local developers—can trigger the flaw by naming a directory that forces the shebang to exceed 127 bytes or includes shell metacharacters. Applying the 21.14.9 release mitigates the issue.

Generated by OpenCVE AI on October 20, 2026 at 22:25 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade virtualenv to version 21.14.9 or newer.
  • Delete and recreate any existing virtual environments, ensuring destination paths do not contain spaces and keep the shebang length below 127 bytes.
  • If virtualenv is installed via pip, upgrade pip to a recent version that includes the patched distlib, or reinstall pip after upgrading virtualenv to ensure the bundled distlib is updated.
  • As a temporary measure, use the --no-console-scripts option when creating the virtual environment to avoid generating console launchers until a patch is applied.

Generated by OpenCVE AI on October 20, 2026 at 22:25 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-c978-59m8-c77v virtualenv: Generated POSIX console launchers interpret destination paths as shell syntax
History

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

Type Values Removed Values Added
Metrics ssvc

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


Thu, 22 Oct 2026 13:45:00 +0000

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

Wed, 21 Oct 2026 00:30:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

threat_severity

Important


Tue, 20 Oct 2026 20:00:00 +0000

Type Values Removed Values Added
Description virtualenv is a tool for creating isolated virtual python environments. Prior to 21.14.9, virtualenv's ScriptMakerCustom and pip pass an incompletely quoted interpreter path to distlib ScriptMaker when generating POSIX console scripts. When the path contains a space or produces a shebang longer than 127 bytes, distlib emits a /bin/sh wrapper whose double-quoted interpreter path still expands command substitutions and backticks. An attacker who influences the environment destination can therefore execute commands with the user's privileges when the user later runs a generated launcher; environment creation and activation do not trigger the command. Existing launchers are not repaired by upgrading virtualenv alone and must be regenerated, while a later independent pip installation or upgrade can reintroduce an affected launcher because pip's vendored distlib is unchanged. The virtualenv fix is released in version 21.14.9.
Title virtualenv: Generated POSIX console launchers interpret destination paths as shell syntax
Weaknesses CWE-78
References
Metrics cvssV3_1

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


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-23T02:03:26.987Z

Reserved: 2026-10-20T16:03:14.863Z

Link: CVE-2026-113722

cve-icon Vulnrichment

Updated: 2026-10-23T02:03:23.160Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-10-20T20:17:18.810

Modified: 2026-10-23T02:16:57.087

Link: CVE-2026-113722

cve-icon Redhat

Severity : Important

Publid Date: 2026-10-20T19:48:29Z

Links: CVE-2026-113722 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-22T13:30:05Z

Weaknesses
  • CWE-78

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