CVE-2020-4071 json
Timing attack on django-basic-auth-ip-whitelist
published 2020-06-23 6 y ago modified 2026-07-08 4 mo ago also GHSA-m38j-pmg3-v5x5 , PYSEC-2020-37 , EUVD-2020-0062
- cvss
- 2.2
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.4%
- EPSS 0.4% chance of exploitation in 30 days, percentile 29%
- public exploits
- 0
- none known
Summary
In django-basic-auth-ip-whitelist before 0.3.4, a potential timing attack exists on websites where the basic authentication is used or configured, i.e. BASIC_AUTH_LOGIN and BASIC_AUTH_PASSWORD is set. Currently the string comparison between configured credentials and the ones provided by users is performed through a character-by-character string comparison. This enables a possibility that attacker may time the time it takes the server to validate different usernames and password, and use this knowledge to work out the valid credentials. This attack is understood not to be realistic over the Internet. However, it may be achieved from within local networks where the website is hosted, e.g. from inside a data centre where a website's server is located. Sites protected by IP address whitelisting only are unaffected by this vulnerability. This vulnerability has been fixed on version 0.3.4 of django-basic-auth-ip-whitelist. Update to version 0.3.4 as soon as possible and change basic authentication username and password configured on a Django project using this package. A workaround without upgrading to version 0.3.4 is to stop using basic authentication and use the IP whitelisting component only. It can be achieved by not setting BASIC_AUTH_LOGIN and BASIC_AUTH_PASSWORD in Django project settings.
Patch / fix
- pypi django-basic-auth-ip-whitelist 0.3.4
- django-basic-auth-ip-whitelist_project django-basic-auth-ip-whitelist 0.3.4
Exploit prediction
0.36% chance of exploitation in the next 30 days, higher than 29% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 2.2 | CVSS:3.1/AV:P/AC:H/PR:N/UI:N/S:C/C:L/I:N/A:N |
| NVD | 3.1 | 2.4 | CVSS:3.1/AV:P/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N |
| NVD | 2.0 | 2.1 | AV:L/AC:L/Au:N/C:P/I:N/A:N |
| GitHub | 3.1 | 2.2 | CVSS:3.1/AV:P/AC:H/PR:N/UI:N/S:C/C:L/I:N/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | django-basic-auth-ip-whitelist | <0.3.4 |
0.3.4 |
Affected products
- tm-kn django-basic-auth-ip-whitelist
Classification
- Weakness
-
- CWE-208 Observable Timing Discrepancy
References
-
github.com
/tm-kn/django-basic-auth-ip-whitelist/commit/effe05ed1ed9e1ccc675a65b69d36217e5c5dfc6
web
-
github.com
/tm-kn/django-basic-auth-ip-whitelist/security/advisories/GHSA-m38j-pmg3-v5x5
web, third-party-advisory, advisory
- groups.google.com /forum/#%21msg/django-developers/iAaq0pvHXuA/fpUuwjK3i2wJ
-
nvd.nist.gov
/vuln/detail/CVE-2020-4071
advisory
-
github.com
/pypa/advisory-database/tree/main/vulns/django-basic-auth-ip-whitelist/PYSEC-2020-37.yaml
web
-
github.com
/tm-kn/django-basic-auth-ip-whitelist
package
-
groups.google.com
/forum/#!msg/django-developers/iAaq0pvHXuA/fpUuwjK3i2wJ
web
Sources
- CVE List CVE-2020-4071
- GitHub Advisory GHSA-m38j-pmg3-v5x5
- NVD CVE-2020-4071
- OSV PYSEC-2020-37
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.