Vulnerabilities

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

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.

  1. 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

  2. Oct 21, 2026 · GitHub Advisory Database

    Fix available

    virtualenv fixed in 21.14.2

  3. Oct 21, 2026 · GitHub Advisory Database

    Fix available

    virtualenv fixed in 21.14.2

  4. 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