CVE-2026-113714
published 2026-10-20CVE-2026-113714: virtualenv is a tool for creating isolated virtual python environments. Prior to 21.14.9, download_wheel() writes package-index downloads directly into the…
PriorityP416low2.3CVSS 4.0
AVNACHATPPRNUIPVCLVILVALSCNSINSANEXCRXIRXARXMAVXMACXMATXMPRXMUIXMVCXMVIXMVAXMSCXMSIXMSAXSXAUXRXVXREXUX
EPSS
0.22%
12.3th percentile
virtualenv is a tool for creating isolated virtual python environments. Prior to 21.14.9, download_wheel() writes package-index downloads directly into the reusable wheel/house cache before selecting a verification target from pip's textual Saved output. With default-index digest comparison enabled, a controlled package index can inject a misleading Saved line through a discarded link's data-requires-python attribute; this forged-line variant also requires knowledge of an absolute path to the genuine bundled wheel. The wrong path can then be hashed, while a digest mismatch leaves the rejected archive in the cache for later selection without verification. A separate rejected-cache-file variant requires control over downloaded data or archive selection but not the forged-line prerequisites. Explicit custom-index exceptions are outside the promised PyPI comparison, and the issue does not independently bypass TLS or establish control of default PyPI. This issue is fixed in version 21.14.9.
Affected
25 ranges
| Vendor | Product | Version range | Fixed in |
|---|---|---|---|
| ansible-automation-platform-26 | controller-rhel9 | — | — |
| ansible-automation-platform-26 | eda-controller-rhel9 | — | — |
| ansible-automation-platform-26 | lightspeed-chatbot-rhel9 | — | — |
| ansible-automation-platform-27 | controller-rhel9 | — | — |
| ansible-automation-platform-27 | eda-controller-rhel9 | — | — |
| debian | python-virtualenv | — | — |
| devspaces | udi-rhel9 | — | — |
| openshift-lightspeed | lightspeed-service-api-rhel9 | — | — |
| pypa | virtualenv | < 21.14.9 | 21.14.9 |
| rhai-early-access | docling-serve-cuda-rhel9 | — | — |
| rhoai | odh-feature-server-rhel9 | — | — |
| rhoai | odh-kserve-agent-rhel9 | — | — |
| rhoai | odh-kserve-controller-rhel9 | — | — |
| rhoai | odh-kserve-router-rhel9 | — | — |
| rhoai | odh-kserve-storage-initializer-rhel9 | — | — |
| rhoai | odh-ta-lmes-job-rhel9 | — | — |
| rhoai | odh-training-rocm64-torch28-py312-rhel9 | — | — |
| rhoai | odh-trustyai-nemo-guardrails-server-rhel9 | — | — |
| rhoai | odh-workbench-codeserver-datascience-cpu-py312-rhel9 | — | — |
| rhoai | odh-workbench-jupyter-datascience-cpu-py312-rhel9 | — | — |
| rhoai | odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-rhel9 | — | — |
| satellite | iop-advisor-backend-rhel9 | — | — |
| satellite | iop-host-inventory-rhel9 | — | — |
| satellite | iop-yuptoo-rhel9 | — | — |
| virtualenv | virtualenv | >= 0 < 21.14.9 | 21.14.9 |
CVSS provenance
nvdv4.02.3LOWCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
vendor_redhat2.3LOW
Stop checking back — get the weekly exploitation signal.
Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.
GHSA
virtualenv: Downloaded wheel selection and caching precede verification
ghsa·2026-10-23
CVE-2026-113714 [LOW] CWE-354 virtualenv: Downloaded wheel selection and caching precede verification
virtualenv: Downloaded wheel selection and caching precede verification
## Summary
Wheel downloads go directly into the reusable wheelhouse, while the verification target is selected from pip's textual
output. A verification failure does not remove the downloaded file from that cache.
Anthropic's OSS Scanner reported this as `ANT-2026-ST00DRO3` in `virtualenv-20261015-005`, received on 15 October 2026.
## Affected area
Download selection and promotion into the reusable wheel cache.
## Attacker-controlled input
A download must fail verification, or the archive selected from pip output must differ from the file later reused.
Default-index digest verification must be enabled. Existing custom-index exceptions are outside the promised PyPI
comparison.
## Affected code
The relevant 21.1
VulDB
PyPA Virtualenv up to 21.14.8 Wheel Download download_wheel code injection (EUVD-2026-105260)
vuldb·2026-10-20·CVSS 2.3
CVE-2026-113714 [LOW] PyPA Virtualenv up to 21.14.8 Wheel Download download_wheel code injection (EUVD-2026-105260)
A vulnerability classified as problematic was found in PyPA Virtualenv up to 21.14.8. The impacted element is the function download_wheel of the component Wheel Download. Executing a manipulation can lead to code injection.
This vulnerability appears as CVE-2026-113714. The attack may be performed from remote. There is no available exploit.
Upgrading the affected component is advised.
Red Hat
virtualenv: virtualenv: Unverified package installation via premature cache storage
vendor_redhat·2026-10-20·CVSS 2.3
CVE-2026-113714 [LOW] CWE-494 virtualenv: virtualenv: Unverified package installation via premature cache storage
virtualenv: virtualenv: Unverified package installation via premature cache storage
A flaw was found in virtualenv. The utility writes downloaded software packages directly into its reusable cache before completing integrity verification checks. An attacker controlling a package repository can exploit this flaw to retain rejected or manipulated packages in the cache, resulting in the installation of unverified software.
Package: openshift-lightspeed/lightspeed-service-api-rhel9 (OpenShift Lightspeed) - Fix deferred
Package: ansible-automation-platform-26/controller-rhel9 (Red Hat Ansible Automation Platform 2) - Fix deferred
Package: ansible-automation-platform-26/eda-controller-rhel9 (Red Hat Ansible Automation Platform 2) - Fix deferred
Package: ansible-automation-platform-26/lights
No detection rules found.
No public exploits indexed.
2026-10-20
Published