Command injection via --prompt in activate.bat (batch activator)
BatchActivator.quote() returned its input unchanged, the only activator with
no escaping at all. --prompt, the VIRTUALENV_PROMPT environment variable,
and the config file all set the prompt, and activate.bat writes it straight
into @set "VAR=value". A prompt containing a double quote closes that string
early, and whatever follows runs as live cmd.exe syntax. For example, a venv
created with --prompt 'x" & calc & "' runs calc the moment someone runs
activate.bat.
Anyone who templates a prompt from untrusted input (a CI job using a branch name, a wrapper script deriving an environment name from user input) hands an attacker code execution in the shell of anyone who activates the resulting venv on Windows.
Fixed in 21.7.12 by escaping the characters cmd.exe treats as live syntax inside this construct.
Affected software
Click a technology to see all vulnerabilities affecting it.
| Platform | Package | Vulnerable versions | Fixed in |
|---|---|---|---|
| Python (PyPI) | virtualenv | < 21.7.12 | 21.7.12 |
References
- https://github.com/pypa/virtualenv/security/advisories/GHSA-x78j-v8h9-3j2q
- https://nvd.nist.gov/vuln/detail/CVE-2026-102937
- https://github.com/pypa/virtualenv/pull/3250
- https://github.com/pypa/virtualenv/commit/d721ff140ce4afdc2a9b76751e4584e25d9fbea6
- https://github.com/pypa/advisory-database/tree/main/vulns/virtualenv/PYSEC-2026-4014.yaml
- https://github.com/pypa/virtualenv
- https://github.com/pypa/virtualenv/releases/tag/21.7.12
- https://pypi.org/project/virtualenv
- CVSS vector
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N- Weakness (CWE)
CWE-78- Platform
- Python (PyPI)
- Package
virtualenv- Disclosed
- 18.09.2026
- Updated
- 11.10.2026 15:18
Sources and licenses
OSV / GitHub Advisory Database - GHSA-x78j-v8h9-3j2q - CC BY 4.0
OSV / GitHub Advisory Database - PYSEC-2026-4014 - PyPA Advisory Database; CC BY 4.0
Vulnerability history: virtualenv
All published vulnerabilities of this package (Python (PyPI)), newest first. Shows whether this is a one-off slip or a package that needs watching.
- Total entries
- 7
- First → latest
- 12.2011 09.2026
- Without a fix
- 0
- Exploited in attacks
- 0
Severity breakdown
- High 4
- Medium 3
Disclosures per year
- 2017: 0
- 2018: 0
- 2019: 0
- 2020: 0
- 2021: 0
- 2022: 0
- 2023: 0
- 2024: 1
- 2025: 0
- 2026: 5
earlier: 1
-
Command injection via --prompt in activate.bat (batch activator) this entry
Know which vulnerabilities affect your application
With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.