Repository navigation
Releases: ActiveState/pip
Release list
Release 24.0.post4
ActiveState security release on the Python 3.7 pip 24.0 line, bundled by CPython 3.7.17.8. Merged in #16.
| CVE | Advisory | Status |
|---|---|---|
| CVE-2023-45803 | GHSA-g4mx-q9vg-27p4 | Patched (vendored urllib3) |
| CVE-2024-37891 | GHSA-34jh-p97f-mpxf | Patched (vendored urllib3) |
| CVE-2025-50181 | GHSA-pq67-6m6q-mj2v | Patched (vendored urllib3) |
| CVE-2025-66418 | GHSA-gm62-xv2j-4w53 | Patched (vendored urllib3) |
| CVE-2025-66471 | GHSA-2xpw-w6gg-jr37 | Patched (vendored urllib3) |
| CVE-2026-21441 | GHSA-38jv-5279-wg99 | Patched (vendored urllib3) |
| CVE-2026-44431 | GHSA-qccp-gfcp-xxvc | Patched (vendored urllib3) |
| CVE-2026-97687 | GHSA-8988-9cw3-xx77 | Patched (vendored urllib3) |
| CVE-2026-97689 | GHSA-vxq7-64xx-v4gw | Patched (vendored urllib3) |
| CVE-2024-47081 | GHSA-9hjg-9r4m-mvj7 | Patched (vendored requests) |
| CVE-2026-25645 | GHSA-gc5v-m9x4-r6x2 | Patched (vendored requests; defense in depth) |
| CVE-2024-35195 | GHSA-9wx4-h78v-vm56 | Not affected: pip never shares an adapter between verified and --trusted-host requests |
What changed:
- Vendored urllib3 1.26.17 → ActiveState urllib3 1.26.20.post4, vendored with pip's own vendoring diff. The tree is identical to the one in pip 26.0.1.post3.
- Vendored requests stays at 2.31.0, the last release for Python 3.7, with the CVE-2024-47081 and CVE-2026-25645 fixes backported.
- certifi stays at 2026.10.23, so emSign Root CA - G1 is the only emSign root.
Validated on the built wheel, in python:3.7-slim:
- Versions: pip reports 24.0.post4, with vendored urllib3 1.26.20 (the fork), requests 2.31.0 and certifi 2026.10.23, and no
RequestsDependencyWarningunder-W error. - CVE checks: a
.netrclookup forhttp://example.com:@attacker.com/returns attacker.com's entry, and a plantedcacert.pemis not reused. - Network: a real
pip downloadfrom PyPI works.
sha256
pip-24.0.post4.tar.gz:85db1f2616428747cf4d12486adeb9a1717a871179a483bfacd99c70c63f2561pip-24.0.post4-py3-none-any.whl:749401b66b9dee893c560b12b8ee3b6f2d2d3600bdc047350c1a9d6db9047c17
Release 26.0.1.post3
ActiveState security release on the Python 3.9 pip 26.0.1 line. CPython 3.9.25.1 and 3.10.22.1 also bundle it. Merged in #15.
| CVE | Advisory | Status |
|---|---|---|
| CVE-2025-66418 | GHSA-gm62-xv2j-4w53 | Patched (vendored urllib3) |
| CVE-2025-66471 | GHSA-2xpw-w6gg-jr37 | Patched (vendored urllib3) |
| CVE-2026-21441 | GHSA-38jv-5279-wg99 | Patched (vendored urllib3) |
| CVE-2026-44431 | GHSA-qccp-gfcp-xxvc | Patched (vendored urllib3) |
| CVE-2026-97687 | GHSA-8988-9cw3-xx77 | Patched (vendored urllib3) |
| CVE-2026-97689 | GHSA-vxq7-64xx-v4gw | Patched (vendored urllib3) |
| CVE-2025-50181 | GHSA-pq67-6m6q-mj2v | Patched (vendored urllib3) |
| CVE-2026-25645 | GHSA-gc5v-m9x4-r6x2 | Patched (vendored requests, defense in depth) |
What changed:
- Vendored urllib3: 1.26.20 is replaced by ActiveState urllib3 1.26.20.post4, with pip's usual vendoring changes (Brotli disabled).
urllib3.__version__stays1.26.20. - Vendored requests 2.32.5: it carries upstream's two CVE-2026-25645 commits from 2.33.0 (66d21cb07b and e331a288f3). pip didn't reach the vulnerable path, because its vendored certifi already extracts the CA bundle.
- Unchanged: the 26.0.1.post2 fixes, including certifi 2026.10.23.
Validated on the built wheel, in python:3.9-slim and python:3.10-slim:
- Versions: the vendored packages report the expected versions, and there's no
RequestsDependencyWarning. - CVE-2026-25645:
extract_zipped_paths()doesn't reuse a planted file. - Network:
pip downloadand a--dry-runresolution against PyPI work, including with pip running from the wheel file. - urllib3's test suite passes on both, apart from failures that also happen with upstream 1.26.20 in the same container, and one stale test that ActiveState/urllib3#6 removes.
sha256
pip-26.0.1.post3.tar.gz:aa4836690fb9b6d2b1520ef0001332fceebf21931be736fcbd724853bb55ba92pip-26.0.1.post3-py3-none-any.whl:be55af8fd6e6afe2728f7539eae1ebe00e64264922f740aedfea619847a6e1d0
Release 26.0.1.post2
ActiveState security release on the Python 3.9 pip 26.0.1 line. Merged in #14.
| CVE | Advisory | Status |
|---|---|---|
| — | GHSA-6q48-6c7w-9gw2 (follow-up) | Patched: vendored certifi 2026.10.19 → 2026.10.23 |
What changed:
- Two more emSign roots are dropped: emSign Root CA - C1 and emSign ECC Root CA - C3. They come from the same eMudhra/emSign CA key compromise as emSign ECC Root CA - G3, which the previous release removed.
- emSign Root CA - G1 is now the only emSign root in the bundle.
- Nothing else in pip changes.
Validated on the built wheel, in python:3.9-slim:
- Version: pip reports 26.0.1.post2, and the vendored certifi reports 2026.10.23.
- Roots: the bundle has 118 roots, and G1 is the only emSign root.
- Network: a real
pip downloadfrom PyPI works. - Diff from the previous release: the wheel differs from the previous release's only in the vendored certifi files,
pip/__init__.py,RECORDand the metadata version.
sha256
pip-26.0.1.post2.tar.gz:6861db248e0b4574f45730ce6a4321da325572f6f74433e9cc7e9245298ced14pip-26.0.1.post2-py3-none-any.whl:b3fe7b5facd4aab5c11a14cf6a689b71045525c2b8dd35d6a6b45b2e83c0e7c5
Release 25.0.1.post2
ActiveState security release on the Python 3.8 pip 25.0.1 line. Merged in #13.
| CVE | Advisory | Status |
|---|---|---|
| — | GHSA-6q48-6c7w-9gw2 (follow-up) | Patched: vendored certifi 2026.10.19 → 2026.10.23 |
What changed:
- Two more emSign roots are dropped: emSign Root CA - C1 and emSign ECC Root CA - C3. They come from the same eMudhra/emSign CA key compromise as emSign ECC Root CA - G3, which the previous release removed.
- emSign Root CA - G1 is now the only emSign root in the bundle.
- Nothing else in pip changes.
Validated on the built wheel, in python:3.8-slim:
- Version: pip reports 25.0.1.post2, and the vendored certifi reports 2026.10.23.
- Roots: the bundle has 118 roots, and G1 is the only emSign root.
- Network: a real
pip downloadfrom PyPI works. - Diff from the previous release: the wheel differs from the previous release's only in the vendored certifi files,
pip/__init__.py,RECORDand the metadata version.
sha256
pip-25.0.1.post2.tar.gz:9247655893552ea118e49e20153c705e092a84f616d58f8ec6152c3d3c8a2b4cpip-25.0.1.post2-py3-none-any.whl:5e2925ce7f2c9cfceebe11d47b525d59a8338bd359186bd9ccb1a46555d806de
Release 24.0.post3
ActiveState security release on the Python 3.7 pip 24.0 line. Merged in #12.
| CVE | Advisory | Status |
|---|---|---|
| — | GHSA-6q48-6c7w-9gw2 (follow-up) | Patched: vendored certifi 2026.10.19 → 2026.10.23 |
What changed:
- Two more emSign roots are dropped: emSign Root CA - C1 and emSign ECC Root CA - C3. They come from the same eMudhra/emSign CA key compromise as emSign ECC Root CA - G3, which the previous release removed.
- emSign Root CA - G1 is now the only emSign root in the bundle.
- Nothing else in pip changes.
Validated on the built wheel, in python:3.7-slim:
- Version: pip reports 24.0.post3, and the vendored certifi reports 2026.10.23.
- Roots: the bundle has 118 roots, and G1 is the only emSign root.
- Network: a real
pip downloadfrom PyPI works. - Diff from the previous release: the wheel differs from the previous release's only in the vendored certifi files,
pip/__init__.py,RECORDand the metadata version.
sha256
pip-24.0.post3.tar.gz:223f92bdcb53730d1d2086661e8918f235c81562adbc5cdc6c90c4896e11b7a5pip-24.0.post3-py3-none-any.whl:2cda945c314810ab760bd913874e11c13faca17e64544320fccd90bf7532587f
Release 21.3.1.post2
ActiveState security release on the Python 3.6 pip 21.3.1 line. Merged in #11.
| CVE | Advisory | Status |
|---|---|---|
| — | GHSA-6q48-6c7w-9gw2 (follow-up) | Patched: vendored certifi 2026.10.19.post1 → 2026.10.23.post1 |
What changed:
- Two more emSign roots are dropped: emSign Root CA - C1 and emSign ECC Root CA - C3. They come from the same eMudhra/emSign CA key compromise as emSign ECC Root CA - G3, which the previous release removed.
- emSign Root CA - G1 is now the only emSign root in the bundle.
- Nothing else in pip changes.
Validated on the built wheel, in python:3.6-slim:
- Version: pip reports 21.3.1.post2, and the vendored certifi reports 2026.10.23.post1.
- Roots: the bundle has 118 roots, and G1 is the only emSign root.
- Network: a real
pip downloadfrom PyPI works. - Diff from the previous release: the wheel differs from the previous release's only in the vendored certifi files,
pip/__init__.py,RECORDand the metadata version.
sha256
pip-21.3.1.post2.tar.gz:b0b5d96153bafd8bb4ada675d05a29e2d19532bb9eae7f640193fa5614602be2pip-21.3.1.post2-py3-none-any.whl:20734063e0605b6a4f7d7a270a04e1529af87ee9f6d22cf5f08bbcc6b0ead7ba
Release 20.3.4.post4
ActiveState security release on the Python 2.7 pip 20.3.4 line. Merged in #10.
| CVE | Advisory | Status |
|---|---|---|
| — | GHSA-6q48-6c7w-9gw2 (follow-up) | Patched: vendored certifi 2026.10.19.post1 → 2026.10.23.post1 |
What changed:
- Two more emSign roots are dropped: emSign Root CA - C1 and emSign ECC Root CA - C3. They come from the same eMudhra/emSign CA key compromise as emSign ECC Root CA - G3, which the previous release removed.
- emSign Root CA - G1 is now the only emSign root in the bundle.
- Nothing else in pip changes.
Validated on the built wheel, in python:2.7-slim:
- Version: pip reports 20.3.4.post4, and the vendored certifi reports 2026.10.23.post1.
- Roots: the bundle has 118 roots, and G1 is the only emSign root.
- Network: a real
pip downloadfrom PyPI works. - Diff from the previous release: the wheel differs from the previous release's only in the vendored certifi files,
pip/__init__.py,RECORDand the metadata version.
sha256
pip-20.3.4.post4.tar.gz:89d4303fa7eb2b0e56a3498424eee39913f530400e78f34805963b30a04f7579pip-20.3.4.post4-py2.py3-none-any.whl:53eba7622664cacd5dc58bff49691157169b70ae2784361d0ba92e96715cd7c7
Release 26.0.1.post1
First ActiveState security release for pip 26.0.1, the last pip for Python 3.9 (26.1 requires 3.10). Merged in #7 and #9.
| CVE | Advisory | Status |
|---|---|---|
| CVE-2026-3219 | GHSA-58qw-9mgm-455v | Patched |
| CVE-2026-6357 | GHSA-jp4c-xjxw-mgf9 | Patched |
| CVE-2026-8643 | GHSA-wf93-45jw-7689 | Patched (exploitable here; distlib 0.4.0) |
| CVE-2026-13346 | GHSA-qwm4-qh6w-59xr | Patched |
| — | GHSA-6q48-6c7w-9gw2 | Patched: vendored certifi 2026.1.4 → 2026.10.19 (emSign, critical) |
| CVE-2025-8869 | GHSA-4xh5-x5gv-qwph | Fixed in 26.0.1; hardened here with pypa#14127 (affects 3.9.0–3.9.16) |
| CVE-2026-1703 | GHSA-6vgw-5pg2-w6jp | Already fixed in 26.0.1 |
Review-round hardening (also in this release):
- CVE-2025-8869 follow-up: pypa#14127 is ported, rejecting symlink redirection in the tar fallback.
- Path checks: containment checks are root-safe and
//-safe. - Archive members: symlink targets are matched against normalized member names.
- Error messages: an unsafe download file name now gives a pip
ERROR:instead of a traceback.
Validated on the built wheel, in the matching python:X-slim image:
- CVE-2026-6357: the end-to-end
_manylinuxexploit is not executed. - CVE-2026-1703: the sibling-prefix wheel is blocked.
- CVE-2025-8869: both pypa#14127 escape archives are refused.
- Archive shapes: valid
./-prefixed and implied-directory archives unpack. - Bundled certifi: the bundle has no emSign ECC G3, TrustCor, E-Tugra or GLOBALTRUST roots.
- Network: a real
pip downloadfrom PyPI works.
sha256
pip-26.0.1.post1.tar.gz:f7498556845d8e6045239a761007fc024c3edcfd609ff1dd062485bedf7a370fpip-26.0.1.post1-py3-none-any.whl:6cd40409a936257162fe17e1585488a1804798057330fbba5b152a858919226d
Release 25.0.1.post1
First ActiveState security release for pip 25.0.1, the last pip for Python 3.8. Merged in #6.
| CVE | Advisory | Status |
|---|---|---|
| CVE-2025-8869 | GHSA-4xh5-x5gv-qwph | Patched, plus the pypa#14127 hardening (affects 3.8.0–3.8.16, which have no data_filter) |
| CVE-2026-1703 | GHSA-6vgw-5pg2-w6jp | Patched |
| CVE-2026-3219 | GHSA-58qw-9mgm-455v | Patched |
| CVE-2026-6357 | GHSA-jp4c-xjxw-mgf9 | Patched |
| CVE-2026-8643 | GHSA-wf93-45jw-7689 | Patched (exploitable here; distlib 0.3.9) |
| CVE-2026-13346 | GHSA-qwm4-qh6w-59xr | Patched |
| — | GHSA-6q48-6c7w-9gw2 | Patched: vendored certifi 2024.8.30 → 2026.10.19 (emSign, critical) |
Review-round hardening (also in this release):
- CVE-2025-8869 follow-up: pypa#14127 is ported, rejecting symlink redirection in the tar fallback.
- Path checks: containment checks are root-safe and
//-safe. - Archive members: symlink targets are matched against normalized member names.
- Error messages: an unsafe download file name now gives a pip
ERROR:instead of a traceback.
Validated on the built wheel, in the matching python:X-slim image:
- CVE-2026-6357: the end-to-end
_manylinuxexploit is not executed. - CVE-2026-1703: the sibling-prefix wheel is blocked.
- CVE-2025-8869: both pypa#14127 escape archives are refused.
- Archive shapes: valid
./-prefixed and implied-directory archives unpack. - Bundled certifi: the bundle has no emSign ECC G3, TrustCor, E-Tugra or GLOBALTRUST roots.
- Network: a real
pip downloadfrom PyPI works.
sha256
pip-25.0.1.post1.tar.gz:6df47022cb9742a835ab64a7e13379f73636405f152b8fdaed517f7f3eab735bpip-25.0.1.post1-py3-none-any.whl:182fbd0d01fb0757ca6c0fd5e9a4290699a2115d950060c055f15b7795655de0
Release 24.0.post2
Second ActiveState security release for pip 24.0 (Python 3.7), superseding the 24.0.0.1 build. Merged in #5.
The version is 24.0.post2. 24.0.0.1 reported itself as plain 24.0, so it counts as release #1, and the scanner version for this one is 24.0.0.2.
| CVE | Advisory | Status |
|---|---|---|
| CVE-2026-3219 | GHSA-58qw-9mgm-455v | Patched |
| CVE-2026-6357 | GHSA-jp4c-xjxw-mgf9 | Patched |
| CVE-2026-8643 | GHSA-wf93-45jw-7689 | Patched (exploitable here; distlib 0.3.8) |
| CVE-2026-13346 | GHSA-qwm4-qh6w-59xr | Patched |
| CVE-2024-39689 | GHSA-248v-346w-9cwc | Patched: vendored certifi upgrade (GLOBALTRUST) |
| — | GHSA-6q48-6c7w-9gw2 | Patched: vendored certifi upgrade (emSign, critical) |
| CVE-2025-8869 | GHSA-4xh5-x5gv-qwph | Patched in 24.0.0.1; hardened here with pypa#14127 (3.7 always uses the tar fallback) |
| CVE-2026-1703 | GHSA-6vgw-5pg2-w6jp | Patched in 24.0.0.1; its commonpath check broke // prefixes, which is fixed here |
Vendored certifi moves from 2023.7.22 to 2026.10.19, byte-identical to pip 26.2.2's vendored copy.
Review-round hardening (also in this release):
- CVE-2025-8869 follow-up: pypa#14127 is ported, rejecting symlink redirection in the tar fallback.
- Path checks: containment checks are root-safe and
//-safe. - Archive members: symlink targets are matched against normalized member names.
- Error messages: an unsafe download file name now gives a pip
ERROR:instead of a traceback.
Validated on the built wheel, in the matching python:X-slim image:
- CVE-2026-6357: the end-to-end
_manylinuxexploit is not executed. - CVE-2026-1703: the sibling-prefix wheel is blocked.
- CVE-2025-8869: both pypa#14127 escape archives are refused.
- Archive shapes: valid
./-prefixed and implied-directory archives unpack. - Bundled certifi: the bundle has no emSign ECC G3, TrustCor, E-Tugra or GLOBALTRUST roots.
- Network: a real
pip downloadfrom PyPI works.
sha256
pip-24.0.post2.tar.gz:23dd20ed6578dd7a42b6f98f11f13b73fb4a823da2145cd1c212d56db4b55457pip-24.0.post2-py3-none-any.whl:f5a127fad99dba8f6f72f69d4944cbc9f526356b4a8da994aded64da1016822f