Security fix · CVE-2026-113726
virtualenv activate runs commands from the environment name in zsh with PROMPT_SUBST
Published Oct 21, 2026 · catalog updated Oct 21, 2026 · virtualenv activate runs commands
Last checked Nov 5, 2026. A connected source was read within the last 7 days.
Check if you run it
No confirmed exploitation is on record for CVE-2026-113726. EPSS is 0.34%. Act only if a listed version of virtualenv activate runs commands is installed.
Gaps on this record
- The stored product name is a package slug. The name on this page is taken from the title (virtualenv activate runs commands).
- No vendor fix or required action is stored. Compare the linked advisory before you change production.
- Severity
- High7.8
- Known exploitation
- Not in CISA/VulnCheck KEV
- EPSS
- 0.34%
- Remediation
- Version ranges on file
- Affected products
- PyPI virtualenv · pip virtualenv
### Impact zsh users activate an environment with the bash script, which puts the environment name into . Since 21.13.0 the script escapes backslashes, dollar signs and backticks in that name, but only when is set, so zsh gets the raw value. With the option set, zsh runs parameter expansion, command substitution and arithmetic expansion on each time it draws the prompt. A name that contains , backticks or then runs as commands in the user's shell, once per prompt. The name comes from the environment directory, or from or . After you create an environment with: in a zsh session with set creates , and the prompt shows . Passing that value as to an environment with a plain name has the same effect. Without , zsh shows the name as text and runs nothing. bash runs nothing either. A plain zsh starts with off. oh-my-zsh users have it on: oh-my-zsh loads [ ](https://github.com/ohmyzsh/ohmyzsh/blob/4d4cfc287e9d887b81242c0e431b5f49f9cec5c1/lib/theme-and-appearance.zsh#L5) at startup, and that file sets it. An attacker needs to influence the environment path or prompt: a CI job or wrapper tool that passes a branch, project or job name through, or a directory in a cloned repository or unpacked archive. takes the current directory's name. zsh also reads in as a prompt escape, so a name with showed the user name in place of those characters, though without running commands. The bug is in releases up to and including 21.14.3. The payload runs on 20.26.6 and 21.14.3, and the reporter confirmed 21.9.1. ### Patches Fixed in 21.14.4. Under zsh, now escapes the name the way it does under bash and doubles , so the example above runs nothing and the prompt shows the name as given. zsh gets the escaping even when is off, because a user can set the option after activation; a name with a backslash, dollar sign or backtick then shows the added backslashes. Fix: https://github.com/pypa/virtualenv/commit/5b915367da82bd024b2a0d28d2f98007034b4aa2 ### Workarounds Set before you source , which lea
Are you affected?
Enter the version you run. The result uses only the ranges stored on this record.
The check returns affected, not affected, or incomplete. It does not guess a version that is missing from the record.
- PyPI virtualenv0 → 21.14.4
- pip virtualenv<= 21.14.3
How to fix CVE-2026-113726
Upgrade
CVE-2026-113726 lists a fix boundary at 21.14.4. Compare the installed build with that boundary before you change production.
Version check
Affected <= 21.14.3
Advisory
Open the cve_org record and follow its fix.
Official advisories
What to do
Three questions, each answered from this record only. Confirm the vendor advisory before you patch.
Should you patch?
No confirmed exploitation is on record for CVE-2026-113726. EPSS is 0.34%. Act only if a listed version of virtualenv activate runs commands is installed.
Which versions are affected?
Compare what you have installed with 0 → 21.14.4, <= 21.14.3. Compare the installed version with the linked vendor advisory before you change production.
What should an analyst verify?
CWE-116; CWE-78: OS Command Injection. EPSS 0.34%. There is no CISA KEV listing. No Exploit-DB or Metasploit reference is linked. Use the source links for the original advisory.
Code
The project this record applies to. Exploit listings stay in References.
Timeline
Detection, updates, and resolution for this record.
Oct 21, 2026 · GitHub Advisory Database
Detected
### Impact zsh users activate an environment with the bash script, which puts the environment name into . Since 21.13.0 the script escapes backslashes, dollar signs and backticks in that name, but only when is set, so zsh gets the raw value. With the option set, zsh runs parameter expansion, command substitution and arithmetic expansion on each time it draws the prompt. A name that contains , back
Oct 21, 2026 · GitHub Advisory Database
Fix available
virtualenv fixed in 21.14.4
Oct 21, 2026 · GitHub Advisory Database
Fix available
virtualenv fixed in 21.14.4
Oct 21, 2026 · GitHub Advisory Database
Updated
### Impact zsh users activate an environment with the bash script, which puts the environment name into . Since 21.13.0 the script escapes backslashes, dollar signs and backticks in that name, but only when is set, so zsh gets the raw value. With the option set, zsh runs parameter expansion, command substitution and arithmetic expansion on each time it draws the prompt. A name that contains , back
Sources
- CVE.orgVulnerability recordCVE-2026-113726
Official CVE identifier
cve.org - FIRST EPSSExploitation probabilityCVE-2026-113726
30-day exploitation probability 0.34%
first.org - GitHub Advisory DatabasePackage advisoryGHSA-5vjq-rrrf-7h2q
virtualenv activate runs commands from the environment name in zsh with PROMPT_SUBST
github.com - OpenSSF OSV / OSV ScannerPackage advisoryGHSA-5vjq-rrrf-7h2q
virtualenv activate runs commands from the environment name in zsh with PROMPT_SUBST
osv.dev - PyPA Advisory DatabasePackage advisoryGHSA-5vjq-rrrf-7h2q
virtualenv activate runs commands from the environment name in zsh with PROMPT_SUBST
osv.dev
References
Freshness
Last verified in this catalog Nov 5, 2026. Significant claims (KEV, EPSS, CVSS, affected ranges) come from the source rows above — open the original publisher for the authoritative advisory.
- FIRST EPSSNov 5, 2026
- GitHub Advisory DatabaseOct 22, 2026
- CVE.orgOct 21, 2026
- PyPA Advisory DatabaseOct 21, 2026
- OpenSSF OSV / OSV ScannerOct 21, 2026