Description
virtualenv is a tool for creating isolated virtual python environments. Prior to 21.14.9, PipInvoke.get_pip_install_cmd() handles --seeder pip --download by calling get_wheel(download=False) and then allowing pip to consult the configured index, bypassing virtualenv's download_wheel() and verify_wheel_digest() path. When virtualenv's default-index PyPI digest comparison remains enabled, an index candidate matching the bundled package and version can therefore be selected without comparison to PyPI SHA-256 metadata. Explicit custom-index settings already opt out of that comparison and remain outside this verification-bypass claim; the demonstrated configuration used a non-PyPI index while leaving the index environment variables unset so the comparison policy remained active. This condition does not independently defeat TLS or establish control of the index response. This issue is fixed in version 21.14.9.
Published: 2026-10-20
Score: 2.3 Low
EPSS: n/a
KEV: No
Impact: Integrity compromise of package installations
Action: Patch
AI Analysis

Impact

The vulnerability arises when virtualenv uses Pip seeder with the --download option. The code path bypasses virtualenv’s verify_wheel_digest, allowing a wheel from a non‑PyPI index to be installed without SHA‑256 verification. Based on the description, this could enable a malicious wheel to be chosen while still satisfying the default digest‑verification policy, allowing tampering of package contents and compromising the integrity of the virtual environment. The weakness is classified as CWE‑494: Unverified Stored Credential or Downloaded Content not Validated.

Affected Systems

pypa’s virtualenv prior to version 21.14.9 is vulnerable. Users running virtualenv 21.14.8 or earlier who use the Pip seeder with the --download flag on a non‑PyPI index are affected. The issue has been resolved in 21.14.9 and later releases.

Risk and Exploitability

The CVSS score of 2.3 indicates low severity, and no EPSS score is provided. The vulnerability is not listed in the CISA KEV catalog. Based on the description, the practical risk depends on the use of a custom package index; if the index is malicious or compromised an attacker could replace wheels while the integrity check is bypassed. An attacker would need to control or influence the package index to introduce malicious code. Assuming typical deployments rely on public PyPI indices, the risk is modest, but the integrity of the environment remains at risk if the pip configuration allows the insecure --download seeder flag.

Generated by OpenCVE AI on October 20, 2026 at 20:57 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Install virtualenv 21.14.9 or later to eliminate the digest verification bypass.
  • Verify that any use of a custom package index is intentional; if so, use pip’s --require-hashes option or otherwise ensure the index provides correct package hashes to enforce integrity.
  • If an immediate upgrade is not possible, avoid using the insecure --download seeder flag or configure pip with --no-index and provide pre‑verified wheels to prevent accidental installation from unverified sources.

Generated by OpenCVE AI on October 20, 2026 at 20:57 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 21 Oct 2026 00:30:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

cvssV3_1

{'score': 5.0, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:L'}

threat_severity

Moderate


Tue, 20 Oct 2026 21:00:00 +0000

Type Values Removed Values Added
First Time appeared Pypa
Pypa virtualenv
Vendors & Products Pypa
Pypa virtualenv

Tue, 20 Oct 2026 19:30:00 +0000

Type Values Removed Values Added
Description virtualenv is a tool for creating isolated virtual python environments. Prior to 21.14.9, PipInvoke.get_pip_install_cmd() handles --seeder pip --download by calling get_wheel(download=False) and then allowing pip to consult the configured index, bypassing virtualenv's download_wheel() and verify_wheel_digest() path. When virtualenv's default-index PyPI digest comparison remains enabled, an index candidate matching the bundled package and version can therefore be selected without comparison to PyPI SHA-256 metadata. Explicit custom-index settings already opt out of that comparison and remain outside this verification-bypass claim; the demonstrated configuration used a non-PyPI index while leaving the index environment variables unset so the comparison policy remained active. This condition does not independently defeat TLS or establish control of the index response. This issue is fixed in version 21.14.9.
Title virtualenv: Pip seeding with download omits wheel digest verification
Weaknesses CWE-494
References
Metrics cvssV4_0

{'score': 2.3, 'vector': 'CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-20T19:32:57.649Z

Reserved: 2026-10-20T16:03:14.863Z

Link: CVE-2026-113717

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-20T20:17:18.017

Modified: 2026-10-20T20:17:18.017

Link: CVE-2026-113717

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-10-20T19:22:11Z

Links: CVE-2026-113717 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-20T21:00:18Z

Weaknesses
  • CWE-494

    Download of Code Without Integrity Check