Security fix · CVE-2026-113732
virtualenv activate.fish runs commands from a path or prompt with a backslash before a quote
Published Oct 21, 2026 · catalog updated Oct 21, 2026 · virtualenv activate.fish runs commands
Last checked Nov 3, 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-113732. EPSS is 0.24%. Act only if a listed version of virtualenv activate.fish 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.fish 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.24%
- Remediation
- Version ranges on file
- Affected products
- PyPI virtualenv · pip virtualenv
### Impact defines no , so it inherits , which returns . That function follows POSIX rules, where a backslash inside single quotes stays a literal character. fish reads inside single quotes as an escaped quote and as an escaped backslash. A value with a backslash before a quote therefore ends the literal somewhere other than where put the end, and fish expands the command substitution that follows. The environment path reaches , and or reaches . For , the generated contains: runs , and fish prints no error. The same payload as a directory name runs through . takes the current directory's name, so running virtualenv inside a directory someone else named is enough. Without the backslash the payload runs nothing, and under bash it runs nothing either. virtualenv generates by default. 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. The bug affects every release up to 21.14.1 that ships . The GHSA-p58f-9548-mpm2 fix in 21.7.13 moved the placeholders outside their quotes but kept . ### Patches Fixed in 21.14.2. now escapes backslashes and single quotes the way fish reads them, so the example above runs nothing and shows the prompt as given. Fix: https://github.com/pypa/virtualenv/commit/3bddeaf8d02c3ee7f576503efb082f8f494cfcab ### Workarounds Do not create an environment whose path or prompt contains a backslash, and inspect before you source one you did not create. ### Credits Kevin Stubbings (@Kwstubbs) of GitHub Security Lab reported this issue.
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.2
- pip virtualenv<= 21.14.1
How to fix CVE-2026-113732
Upgrade
CVE-2026-113732 lists a fix boundary at 21.14.2. Compare the installed build with that boundary before you change production.
Version check
Affected <= 21.14.1
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-113732. EPSS is 0.24%. Act only if a listed version of virtualenv activate.fish runs commands is installed.
Which versions are affected?
Compare what you have installed with 0 → 21.14.2, <= 21.14.1. 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.24%. 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 defines no , so it inherits , which returns . That function follows POSIX rules, where a backslash inside single quotes stays a literal character. fish reads inside single quotes as an escaped quote and as an escaped backslash. A value with a backslash before a quote therefore ends the literal somewhere other than where put the end, and fish expands the command substitution that follows
Oct 21, 2026 · GitHub Advisory Database
Fix available
virtualenv fixed in 21.14.2
Oct 21, 2026 · GitHub Advisory Database
Fix available
virtualenv fixed in 21.14.2
Oct 21, 2026 · GitHub Advisory Database
Updated
### Impact defines no , so it inherits , which returns . That function follows POSIX rules, where a backslash inside single quotes stays a literal character. fish reads inside single quotes as an escaped quote and as an escaped backslash. A value with a backslash before a quote therefore ends the literal somewhere other than where put the end, and fish expands the command substitution that follows
Sources
- CVE.orgVulnerability recordCVE-2026-113732
Official CVE identifier
cve.org - FIRST EPSSExploitation probabilityCVE-2026-113732
30-day exploitation probability 0.24%
first.org - GitHub Advisory DatabasePackage advisoryGHSA-c947-3pg5-gm8q
virtualenv activate.fish runs commands from a path or prompt with a backslash before a quote
github.com - OpenSSF OSV / OSV ScannerPackage advisoryGHSA-c947-3pg5-gm8q
virtualenv activate.fish runs commands from a path or prompt with a backslash before a quote
osv.dev - PyPA Advisory DatabasePackage advisoryGHSA-c947-3pg5-gm8q
virtualenv activate.fish runs commands from a path or prompt with a backslash before a quote
osv.dev
References
Freshness
Last verified in this catalog Nov 3, 2026. Significant claims (KEV, EPSS, CVSS, affected ranges) come from the source rows above — open the original publisher for the authoritative advisory.
- FIRST EPSSNov 3, 2026
- GitHub Advisory DatabaseOct 21, 2026
- CVE.orgOct 21, 2026
- PyPA Advisory DatabaseOct 21, 2026
- OpenSSF OSV / OSV ScannerOct 21, 2026