CVE-2026-113714: virtualenv wheel cache verification bypass

CVE-2026-113714 · Severity: medium · CVSS 4 · Published 2026-10-20

virtualenv is a tool for creating isolated Python environments. A flaw in versions 21.14.8 through 21.14.9 allowed attackers controlling a package index to inject malicious wheels into the local cache by bypassing digest verification. An attacker with control over package downloads or a compromised index could serve a malicious package that would be cached and reused in future environment creation, potentially executing arbitrary code.

Technologies: Pypa Virtualenv, virtualenv (PyPI). Vendors: Pypa, PyPI.

Quick answers

Is CVE-2026-113714 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-113714 being exploited in the wild.
How severe is CVE-2026-113714?
Medium severity, with a CVSS score of 4, published 20 October 2026.
Which products and versions are affected?
Pypa Virtualenv 21.14.8 to 21.14.9; virtualenv (PyPI) < 21.14.9, ECOSYSTEM:introduced=0,fixed=21.14.9.
Is there a fix for CVE-2026-113714?
Yes. virtualenv (PyPI): upgrade to 21.14.9 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-113714 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2026-113714?
Check whether you run Pypa Virtualenv or virtualenv (PyPI) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • virtualenv (PyPI): upgrade to 21.14.9 or later
    pip install "virtualenv>=21.14.9"

Technical details

The vulnerability exists in download_wheel(), which wrote packages directly into the reusable wheel cache before verifying their digest. An attacker controlling a package index could inject a misleading package-index line through a malformed link's data-requires-python attribute, or place a rejected archive in the cache for later selection without verification. The fix moves downloads to a private staging directory, verifies digest and Requires-Python constraints before moving into the house cache, and uses renamed atomic operations to prevent cache poisoning.

Affected products

  • pypa virtualenv 21.14.8 to 21.14.9

Identifiers

  • CVE-2026-113714
  • GHSA-494p-63j8-28p3

Timeline

  • 2026-10-20: disclosed

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.