CVE-2020-15225
Denial of Service vulnerability in django-filter
django-filter is a generic system for filtering Django QuerySets based on user selections. In django-filter before version 2.4.0, automatically generated NumberFilter instances, whose value was later converted to an integer, were subject to potential DoS from maliciously input using exponential format with sufficiently large exponents. Version 2.4.0+ applies a MaxValueValidator with a a default limit_value of 1e50 to the form field used by NumberFilter instances. In addition, NumberFilter implements the new get_max_validator() which should return a configured validator instance to customise the limit, or else None to disable the additional validation. Users may manually apply an equivalent validator if they are not able to upgrade.
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
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.5
Denial of Service vulnerability in django-filter
django-filter is a generic system for filtering Django QuerySets based on user selections. In django-filter before version 2.4.0, automatically generated NumberFilter instances, whose value was later converted to an integer, were subject to potential DoS from maliciously input using exponential format with sufficiently large exponents. Version 2.4.0+ applies a MaxValueValidator with a a default limit_value of 1e50 to the form field used by NumberFilter instances. In addition, NumberFilter implements the new get_max_validator() which should return a configured validator instance to customise the limit, or else None to disable the additional validation. Users may manually apply an equivalent validator if they are not able to upgrade.
- Record
CVE-2020-15225- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-681
- Updated
- 2026-11-02
EUVDEUVD-2021-0053
7.5
django-filter is a generic system for filtering Django QuerySets based on user selections. In django-filter before version 2.4.0, automatically generated NumberFilter instances, whose value was later converted to an integer, were subject to potential DoS from maliciously input using exponential format with sufficiently large exponents. Version 2.4.0+ applies a MaxValueValidator with a a default limit_value of 1e50 to the form field used by NumberFilter instances. In addition, NumberFilter implements the new get_max_validator() which should return a configured validator instance to customise the limit, or else None to disable the additional validation. Users may manually apply an equivalent validator if they are not able to upgrade.
- Record
EUVD-2021-0053- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-03
GitHub AdvisoriesGHSA-x7gm-rfgv-w973
8.7
Potential DoS with NumberFilter conversion to integer values.
Impact
Automatically generated NumberFilter instances, whose value was later converted to an integer, were subject to potential DoS from maliciously input using exponential format with sufficiently large exponents.
Patches
Version 2.4.0+ applies a MaxValueValidator with a a default limit_value of 1e50 to the form field used by NumberFilter instances.
In addition, NumberFilter implements the new get_max_validator() which should return a configured validator instance to customise the limit, or else None to disable the additional validation.
Workarounds
Users may manually apply an equivalent validator if they are not able to upgrade.
For more information
If you have any questions or comments about this advisory:
- Open an issue in the django-filter repo
Thanks to Marcin Waraksa for the report.
- Record
GHSA-x7gm-rfgv-w973- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-681
- Updated
- 2026-11-02
NVD
7.5
django-filter is a generic system for filtering Django QuerySets based on user selections. In django-filter before version 2.4.0, automatically generated NumberFilter instances, whose value was later converted to an integer, were subject to potential DoS from maliciously input using exponential format with sufficiently large exponents. Version 2.4.0+ applies a MaxValueValidator with a a default limit_value of 1e50 to the form field used by NumberFilter instances. In addition, NumberFilter implements the new get_max_validator() which should return a configured validator instance to customise the limit, or else None to disable the additional validation. Users may manually apply an equivalent validator if they are not able to upgrade.
- Record
CVE-2020-15225- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - CVSS 2.0
- 4.0 Medium
AV:N/AC:L/Au:S/C:N/I:N/A:P - Weakness
- CWE-681
- Updated
- 2026-11-02
OSV
6.5
django-filter is a generic system for filtering Django QuerySets based on user selections. In django-filter before version 2.4.0, automatically generated NumberFilter instances, whose value was later converted to an integer, were subject to potential DoS from maliciously input using exponential format with sufficiently large exponents. Version 2.4.0+ applies a MaxValueValidator with a a default limit_value of 1e50 to the form field used by NumberFilter instances. In addition, NumberFilter implements the new get_max_validator() which should return a configured validator instance to customise the limit, or else None to disable the additional validation. Users may manually apply an equivalent validator if they are not able to upgrade.
- Record
CVE-2020-15225- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVDEBIAN-CVE-2020-15225
6.5
django-filter is a generic system for filtering Django QuerySets based on user selections. In django-filter before version 2.4.0, automatically generated NumberFilter instances, whose value was later converted to an integer, were subject to potential DoS from maliciously input using exponential format with sufficiently large exponents. Version 2.4.0+ applies a MaxValueValidator with a a default limit_value of 1e50 to the form field used by NumberFilter instances. In addition, NumberFilter implements the new get_max_validator() which should return a configured validator instance to customise the limit, or else None to disable the additional validation. Users may manually apply an equivalent validator if they are not able to upgrade.
- Record
DEBIAN-CVE-2020-15225- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
Show 4 moreShow less
OSVGHSA-x7gm-rfgv-w973
8.7
Potential DoS with NumberFilter conversion to integer values.
Impact
Automatically generated NumberFilter instances, whose value was later converted to an integer, were subject to potential DoS from maliciously input using exponential format with sufficiently large exponents.
Patches
Version 2.4.0+ applies a MaxValueValidator with a a default limit_value of 1e50 to the form field used by NumberFilter instances.
In addition, NumberFilter implements the new get_max_validator() which should return a configured validator instance to customise the limit, or else None to disable the additional validation.
Workarounds
Users may manually apply an equivalent validator if they are not able to upgrade.
For more information
If you have any questions or comments about this advisory:
- Open an issue in the django-filter repo
Thanks to Marcin Waraksa for the report.
- Record
GHSA-x7gm-rfgv-w973- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-681
- Updated
- 2026-11-02
OSVUBUNTU-CVE-2020-15225
7.5
django-filter is a generic system for filtering Django QuerySets based on user selections. In django-filter before version 2.4.0, automatically generated NumberFilter instances, whose value was later converted to an integer, were subject to potential DoS from maliciously input using exponential format with sufficiently large exponents. Version 2.4.0+ applies a MaxValueValidator with a a default limit_value of 1e50 to the form field used by NumberFilter instances. In addition, NumberFilter implements the new get_max_validator() which should return a configured validator instance to customise the limit, or else None to disable the additional validation. Users may manually apply an equivalent validator if they are not able to upgrade.
- Record
UBUNTU-CVE-2020-15225- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVMGASA-2021-0511 No score
Updated python-django-filter packages fix security vulnerability
In django-filter before version 2.4.0, automatically generated 'NumberFilter' instances, whose value was later converted to an integer, were subject to potential DoS from maliciously input using exponential format with sufficiently large exponents.
- Record
MGASA-2021-0511- Updated
- 2026-11-02
OSVPYSEC-2021-64 No score
django-filter is a generic system for filtering Django QuerySets based on user selections. In django-filter before version 2.4.0, automatically generated NumberFilter instances, whose value was later converted to an integer, were subject to potential DoS from maliciously input using exponential format with sufficiently large exponents. Version 2.4.0+ applies a MaxValueValidator with a a default limit_value of 1e50 to the form field used by NumberFilter instances. In addition, NumberFilter implements the new get_max_validator() which should return a configured validator instance to customise the limit, or else None to disable the additional validation. Users may manually apply an equivalent validator if they are not able to upgrade.
- Record
PYSEC-2021-64- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
django-filterPyPI |
before 2.4.0 | 2.4.0 |
django-filterDebian:12 |
before 2.4.0-1 | 2.4.0-1 |
django-filterDebian:13 |
before 2.4.0-1 | 2.4.0-1 |
django-filterDebian:14 |
before 2.4.0-1 | 2.4.0-1 |
django-filterPyPI |
before 2.4.0, plus listed versions 0.1.00.10.00.11.00.12.00.13.0 Show 29 moreShow less0.14.00.15.00.15.10.15.20.15.30.2.00.5.00.5.10.5.20.5.30.5.40.60.6a10.70.80.9.00.9.10.9.21.0.01.0.11.0.21.0.31.0.41.1.02.0.02.0.0.dev12.1.02.2.02.3.0 |
2.4.0 |
python-django-filterMageia:8 |
before 2.4.0-1.mga8 | 2.4.0-1.mga8 |
django-filterPyPI |
before 2.4.0, plus listed versions 0.1.00.2.00.5.00.5.10.5.2 Show 29 moreShow less0.5.30.5.40.6a10.60.70.80.9.00.9.10.9.20.10.00.11.00.12.00.13.00.14.00.15.00.15.10.15.20.15.31.0.01.0.11.0.21.0.31.0.41.1.02.0.0.dev12.0.02.1.02.2.02.3.0 |
2.4.0 |
django-filterUbuntu:16.04:LTS |
All versions, plus listed versions 0.9.2-10.11.0-10.11.0-2 |
None known |
django-filterUbuntu:18.04:LTS |
All versions, plus listed versions 1.0.4-11.0.4-21.1.0-1 |
None known |
django-filterUbuntu:20.04:LTS |
All versions, plus listed versions 2.1.0-1 |
None known |
Show 5 moreShow less
| Package | Affected | Fixed |
|---|---|---|
django-filterUbuntu:22.04:LTS |
All versions, plus listed versions 2.4.0-1 |
None known |
django-filterUbuntu:24.04:LTS |
All versions, plus listed versions 23.2-323.3post1-123.4-123.5-1 |
None known |
django-filterUbuntu:25.10 |
All versions, plus listed versions 25.1-125.1-2 |
None known |
django-filterUbuntu:26.10 |
All versions, plus listed versions 25.1-2 |
None known |
django-filterUbuntu:26.04:LTS |
All versions, plus listed versions 25.1-2 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2020-15225 is a high vulnerability (CVSS 7.5) in Carltongibson Django-filter, published September 28, 2020. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 1.80%, the 78th percentile. Fixed in django-filter 2.4.0.
References
github.com/carltongibson/django-filter/security/advisories/GHSA-x7gm-rfgv-w973
github.com/carltongibson/django-filter/commit/340cf7a23a2b3dcd7183f6a0d6c383e85b130d2b
github.com/carltongibson/django-filter/releases/tag/2.4.0
pypi.org/project/django-filter
security.netapp.com/advisory/ntap-20210604-0010
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/DPHENTRHRAYFXYPPBT7JRHZRWILRY44S
Show 15 moreShow less
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/FAT2ZAEF6DM3VFSOHKB7X3ASSHGQHJAK
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/SVJ7AYU6FUSU3F653YCGW5LFD3IULRSX
nvd.nist.gov/vuln/detail/CVE-2020-15225
github.com/pypa/advisory-database/tree/main/vulns/django-filter/PYSEC-2021-64.yaml
lists.fedoraproject.org/archives/list/[email protected]/message/DPHENTRHRAYFXYPPBT7JRHZRWILRY44S
lists.fedoraproject.org/archives/list/[email protected]/message/FAT2ZAEF6DM3VFSOHKB7X3ASSHGQHJAK
lists.fedoraproject.org/archives/list/[email protected]/message/SVJ7AYU6FUSU3F653YCGW5LFD3IULRSX
github.com/advisories/GHSA-x7gm-rfgv-w973
security-tracker.debian.org/tracker/CVE-2020-15225
github.com/carltongibson/django-filter
advisories.mageia.org/MGASA-2021-0511.html
bugs.mageia.org/show_bug.cgi?id=29603
lists.fedoraproject.org/archives/list/[email protected]/thread/DPHENTRHRAYFXYPPBT7JRHZRWILRY44S
ubuntu.com/security/CVE-2020-15225
cve.org/CVERecord?id=CVE-2020-15225