CVE-2021-28363
Using default SSLContext for HTTPS requests in an HTTPS proxy doesn't verify certificate hostname for proxy connection
The urllib3 library 1.26.x before 1.26.4 for Python omits SSL certificate validation in some cases involving HTTPS to HTTPS proxies. The initial connection to the HTTPS proxy (if an SSLContext isn't given via proxy_config) doesn't verify the hostname of the certificate. This means certificates for different servers that still validate properly with the default urllib3 SSLContext will be silently accepted.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- Low
- Integrity
- Low
- Availability
- None
Exploit likelihood
What each source reports
NVD Score used
6.5
The urllib3 library 1.26.x before 1.26.4 for Python omits SSL certificate validation in some cases involving HTTPS to HTTPS proxies. The initial connection to the HTTPS proxy (if an SSLContext isn't given via proxy_config) doesn't verify the hostname of the certificate. This means certificates for different servers that still validate properly with the default urllib3 SSLContext will be silently accepted.
- Record
CVE-2021-28363- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N - CVSS 2.0
- 6.4 Medium
AV:N/AC:L/Au:N/C:P/I:P/A:N - Weakness
- CWE-295
- Updated
- 2026-11-02
CVE List No score
The urllib3 library 1.26.x before 1.26.4 for Python omits SSL certificate validation in some cases involving HTTPS to HTTPS proxies. The initial connection to the HTTPS proxy (if an SSLContext isn't given via proxy_config) doesn't verify the hostname of the certificate. This means certificates for different servers that still validate properly with the default urllib3 SSLContext will be silently accepted.
- Record
CVE-2021-28363- Updated
- 2026-11-02
EUVDEUVD-2021-0457 No score
The urllib3 library 1.26.x before 1.26.4 for Python omits SSL certificate validation in some cases involving HTTPS to HTTPS proxies. The initial connection to the HTTPS proxy (if an SSLContext isn't given via proxy_config) doesn't verify the hostname of the certificate. This means certificates for different servers that still validate properly with the default urllib3 SSLContext will be silently accepted.
- Record
EUVD-2021-0457- Updated
- 2026-11-02
GitHub AdvisoriesGHSA-5phf-pp7p-vc2r
6.9
Using default SSLContext for HTTPS requests in an HTTPS proxy doesn't verify certificate hostname for proxy connection
Impact
Users who are using an HTTPS proxy to issue HTTPS requests and haven't configured their own SSLContext via proxy_config.
Only the default SSLContext is impacted.
Patches
urllib3 >=1.26.4 has the issue resolved. urllib3<1.26 is not impacted due to not supporting HTTPS requests via HTTPS proxies.
Workarounds
Upgrading is recommended as this is a minor release and not likely to break current usage.
Configuring an SSLContext with check_hostname=True and passing via proxy_config instead of relying on the default SSLContext
For more information
If you have any questions or comments about this advisory:
- Email us at [email protected]
- Record
GHSA-5phf-pp7p-vc2r- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N - CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N - Weakness
- CWE-295
- Updated
- 2026-11-02
OSVALPINE-CVE-2021-28363
6.5
The urllib3 library 1.26.x before 1.26.4 for Python omits SSL certificate validation in some cases involving HTTPS to HTTPS proxies. The initial connection to the HTTPS proxy (if an SSLContext isn't given via proxy_config) doesn't verify the hostname of the certificate. This means certificates for different servers that still validate properly with the default urllib3 SSLContext will be silently accepted.
- Record
ALPINE-CVE-2021-28363- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N - Updated
- 2026-11-02
OSVBELL-CVE-2021-28363
6.5
CVE-2021-28363 does not affect BellSoft software
- Record
BELL-CVE-2021-28363- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N - Updated
- 2026-11-02
Show 8 moreShow less
OSV
6.5
The urllib3 library 1.26.x before 1.26.4 for Python omits SSL certificate validation in some cases involving HTTPS to HTTPS proxies. The initial connection to the HTTPS proxy (if an SSLContext isn't given via proxy_config) doesn't verify the hostname of the certificate. This means certificates for different servers that still validate properly with the default urllib3 SSLContext will be silently accepted.
- Record
CVE-2021-28363- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N - Updated
- 2026-11-02
OSVDEBIAN-CVE-2021-28363
6.5
The urllib3 library 1.26.x before 1.26.4 for Python omits SSL certificate validation in some cases involving HTTPS to HTTPS proxies. The initial connection to the HTTPS proxy (if an SSLContext isn't given via proxy_config) doesn't verify the hostname of the certificate. This means certificates for different servers that still validate properly with the default urllib3 SSLContext will be silently accepted.
- Record
DEBIAN-CVE-2021-28363- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N - Updated
- 2026-11-02
OSVGHSA-5phf-pp7p-vc2r
6.9
Using default SSLContext for HTTPS requests in an HTTPS proxy doesn't verify certificate hostname for proxy connection
Impact
Users who are using an HTTPS proxy to issue HTTPS requests and haven't configured their own SSLContext via proxy_config.
Only the default SSLContext is impacted.
Patches
urllib3 >=1.26.4 has the issue resolved. urllib3<1.26 is not impacted due to not supporting HTTPS requests via HTTPS proxies.
Workarounds
Upgrading is recommended as this is a minor release and not likely to break current usage.
Configuring an SSLContext with check_hostname=True and passing via proxy_config instead of relying on the default SSLContext
For more information
If you have any questions or comments about this advisory:
- Email us at [email protected]
- Record
GHSA-5phf-pp7p-vc2r- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N - CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N - Weakness
- CWE-295
- Updated
- 2026-11-02
OSVRHBA-2021:1147
6.5
Red Hat Bug Fix Advisory: OpenShift Container Platform 3.11.420 bug fix and enhancement update
- Record
RHBA-2021:1147- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N - Updated
- 2026-11-02
OSVMGASA-2021-0371 No score
Updated python-pip packages fix security vulnerabilities
A flaw was found in python-pip in the way it handled Unicode separators in git references. A remote attacker could possibly use this issue to install a different revision on a repository (CVE-2021-3572).
The bundled python-urllib3 was also vulnerable to: The urllib3 library 1.26.x before 1.26.4 for Python omits SSL certificate validation in some cases involving HTTPS to HTTPS proxies. The initial connection to the HTTPS proxy (if an SSLContext isn't given via proxy_config) doesn't verify the hostname of the certificate. This means certificates for different servers that still validate properly with the default urllib3 SSLContext will be silently accepted (CVE-2021-28363).
An issue was discovered in urllib3 before 1.26.5. When provided with a URL containing many @ characters in the authority component, the authority regular expression exhibits catastrophic backtracking, causing a denial of service if a URL were passed as a parameter or redirected to via an HTTP redirect (CVE-2021-33503).
- Record
MGASA-2021-0371- Updated
- 2026-11-02
OSVMGASA-2021-0377 No score
Updated python-urllib3 package fixes security vulnerabilities
The urllib3 library 1.26.x before 1.26.4 for Python omits SSL certificate validation in some cases involving HTTPS to HTTPS proxies. The initial connection to the HTTPS proxy (if an SSLContext isn't given via proxy_config) doesn't verify the hostname of the certificate. This means certificates for different servers that still validate properly with the default urllib3 SSLContext will be silently accepted (CVE-2021-28363).
An issue was discovered in urllib3 before 1.26.5. When provided with a URL containing many @ characters in the authority component, the authority regular expression exhibits catastrophic backtracking, causing a denial of service if a URL were passed as a parameter or redirected to via an HTTP redirect (CVE-2021-33503).
- Record
MGASA-2021-0377- Updated
- 2026-11-02
OSVPYSEC-2021-59 No score
The urllib3 library 1.26.x before 1.26.4 for Python omits SSL certificate validation in some cases involving HTTPS to HTTPS proxies. The initial connection to the HTTPS proxy (if an SSLContext isn't given via proxy_config) doesn't verify the hostname of the certificate. This means certificates for different servers that still validate properly with the default urllib3 SSLContext will be silently accepted.
- Record
PYSEC-2021-59- Updated
- 2026-11-02
OSVROOT-APP-PYPI-CVE-2021-28363 No score
CVE-2021-28363 in rootio-urllib3 - Patched by Root
Root has patched CVE-2021-28363 in the rootio-urllib3 package for Root:PyPI. Multiple fixed versions available.
- Record
ROOT-APP-PYPI-CVE-2021-28363- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
urllib3PyPI |
1.26.0 up to 1.26.4 | 1.26.4 |
py3-urllib3Alpine:v3.14 |
before 1.26.4-r0 | 1.26.4-r0 |
py3-urllib3Alpine:v3.15 |
before 1.26.4-r0 | 1.26.4-r0 |
py3-urllib3Alpine:v3.16 |
before 1.26.4-r0 | 1.26.4-r0 |
py3-urllib3Alpine:v3.17 |
before 1.26.4-r0 | 1.26.4-r0 |
py3-urllib3Alpine:v3.18 |
before 1.26.4-r0 | 1.26.4-r0 |
py3-urllib3Alpine:v3.19 |
before 1.26.4-r0 | 1.26.4-r0 |
py3-urllib3Alpine:v3.20 |
before 1.26.4-r0 | 1.26.4-r0 |
py3-urllib3Alpine:v3.21 |
before 1.26.4-r0 | 1.26.4-r0 |
py3-urllib3Alpine:v3.22 |
before 1.26.4-r0 | 1.26.4-r0 |
Show 12 moreShow less
| Package | Affected | Fixed |
|---|---|---|
py3-urllib3Alpine:v3.23 |
before 1.26.4-r0 | 1.26.4-r0 |
py3-urllib3Alpine:v3.24 |
before 1.26.4-r0 | 1.26.4-r0 |
python-urllib3Debian:12 |
before 1.26.4-1 | 1.26.4-1 |
python-urllib3Debian:13 |
before 1.26.4-1 | 1.26.4-1 |
python-urllib3Debian:14 |
before 1.26.4-1 | 1.26.4-1 |
urllib3PyPI |
1.26.0 up to 1.26.4, plus listed versions 1.26.11.26.21.26.3 |
1.26.4 |
python-pipMageia:8 From an advisory covering 3 CVEs |
before 20.3.3-3.3.mga8 | 20.3.3-3.3.mga8 |
python-urllib3Mageia:8 From an advisory covering 2 CVEs |
before 1.26.5-1.mga8 | 1.26.5-1.mga8 |
python-urllib3Red Hat:openshift:3.11::el7 |
before 1:1.24.3-2.el7 | 1:1.24.3-2.el7 |
python2-urllib3Red Hat:openshift:3.11::el7 |
before 1:1.24.3-2.el7 | 1:1.24.3-2.el7 |
rootio-urllib3Root:PyPI |
before 1.26.1+root.io.1 | 1.26.1+root.io.11.26.1+root.io.21.26.1+root.io.31.26.3+root.io.31.26.0+root.io.41.26.1+root.io.41.26.2+root.io.51.26.3+root.io.41.26.0+root.io.51.26.1+root.io.51.26.2+root.io.61.26.0+root.io.61.26.1+root.io.61.26.0+root.io.71.26.3+root.io.51.26.2+root.io.7 |
urllib3Root:PyPI |
before 1.26.1+aikido.6 | 1.26.1+aikido.61.26.0+aikido.71.26.3+aikido.51.26.2+aikido.7 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2021-28363 is a medium vulnerability (CVSS 6.5) in Python Urllib3, published March 15, 2021. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 2.17%, the 82nd percentile. Fixed in urllib3 1.26.4.
References
github.com/urllib3/urllib3/commits/main
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/4S65ZQVZ2ODGB52IC7VJDBUK4M5INCXL
security.gentoo.org/glsa/202107-36
oracle.com/security-alerts/cpuoct2021.html
pypi.org/project/urllib3/1.26.4
github.com/urllib3/urllib3/commit/8d65ea1ecf6e2cdc27d42124e587c1b83a3118b0
Show 35 moreShow less
github.com/urllib3/urllib3/security/advisories/GHSA-5phf-pp7p-vc2r
security.gentoo.org/glsa/202305-02
security.netapp.com/advisory/ntap-20240621-0007
cert-portal.siemens.com/productcert/html/ssa-398330.html
nvd.nist.gov/vuln/detail/CVE-2021-28363
github.com/urllib3/urllib3/releases/tag/1.26.4
github.com/urllib3/urllib3/blob/main/CHANGES.rst
github.com/pypa/advisory-db/tree/main/vulns/urllib3/PYSEC-2021-59.yaml
lists.fedoraproject.org/archives/list/[email protected]/message/4S65ZQVZ2ODGB52IC7VJDBUK4M5INCXL
github.com/pypa/advisory-database/tree/main/vulns/urllib3/PYSEC-2021-59.yaml
github.com/advisories/GHSA-5phf-pp7p-vc2r
security.alpinelinux.org/vuln/CVE-2021-28363
docs.bell-sw.com/security/cves/CVE-2021-28363
security-tracker.debian.org/tracker/CVE-2021-28363
github.com/urllib3/urllib3
advisories.mageia.org/MGASA-2021-0371.html
bugs.mageia.org/show_bug.cgi?id=29010
bugs.mageia.org/show_bug.cgi?id=29041
lists.fedoraproject.org/archives/list/[email protected]/thread/4S65ZQVZ2ODGB52IC7VJDBUK4M5INCXL
lists.fedoraproject.org/archives/list/[email protected]/thread/3L3JUBMPJJ7WYXI6JHX6KKYPPX676PR6
lists.suse.com/pipermail/sle-security-updates/2021-July/009129.html
advisories.mageia.org/MGASA-2021-0377.html
github.com/urllib3/urllib3/releases/tag/1.26.3
github.com/urllib3/urllib3/releases/tag/1.26.5
lists.opensuse.org/archives/list/[email protected]/thread/NYARUF6IH56FOIKBV7PTO7AXODL5GKNT
lists.fedoraproject.org/archives/list/[email protected]/thread/FMUGWEAUYGGHTPPXT6YBD53WYXQGVV73
lists.fedoraproject.org/archives/list/[email protected]/thread/JWEE334W43EIJUKSMQSEH6ML7VU57K5B
access.redhat.com/errata/RHBA-2021:1147
bugzilla.redhat.com/show_bug.cgi?id=1918568
bugzilla.redhat.com/show_bug.cgi?id=1937991
bugzilla.redhat.com/show_bug.cgi?id=1939961
security.access.redhat.com/data/csaf/v2/advisories/2021/rhba-2021_1147.json
access.redhat.com/security/cve/CVE-2021-28363
bugzilla.redhat.com/show_bug.cgi?id=1945136
cve.org/CVERecord?id=CVE-2021-28363