Every CVE Search/ Get API key

CVE-2020-15225

Denial of Service vulnerability in django-filter

7.5 HighFix available

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

1.80%Up 0.8 points since Apr 30, 2021
90%50%10%1%

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 HighCVSS: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 HighCVSS: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:

Thanks to Marcin Waraksa for the report.

Record
GHSA-x7gm-rfgv-w973
CVSS 4.0
8.7 HighCVSS: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 HighCVSS: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 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS 2.0
4.0 MediumAV: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 MediumCVSS: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 MediumCVSS: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:

Thanks to Marcin Waraksa for the report.

Record
GHSA-x7gm-rfgv-w973
CVSS 4.0
8.7 HighCVSS: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 HighCVSS: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 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
CVSS 3.1
6.5 MediumCVSS: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

Affected packages
PackageAffectedFixed
django-filter
PyPI
before 2.4.0
2.4.0
django-filter
Debian:12
before 2.4.0-1
2.4.0-1
django-filter
Debian:13
before 2.4.0-1
2.4.0-1
django-filter
Debian:14
before 2.4.0-1
2.4.0-1
django-filter
PyPI
before 2.4.0, plus listed versions
0.1.00.10.00.11.00.12.00.13.0
Show 29 moreShow less
0.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-filter
Mageia:8
before 2.4.0-1.mga8
2.4.0-1.mga8
django-filter
PyPI
before 2.4.0, plus listed versions
0.1.00.2.00.5.00.5.10.5.2
Show 29 moreShow less
0.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-filter
Ubuntu:16.04:LTS
All versions, plus listed versions
0.9.2-10.11.0-10.11.0-2
None known
django-filter
Ubuntu:18.04:LTS
All versions, plus listed versions
1.0.4-11.0.4-21.1.0-1
None known
django-filter
Ubuntu:20.04:LTS
All versions, plus listed versions
2.1.0-1
None known
Show 5 moreShow less
Affected packages
PackageAffectedFixed
django-filter
Ubuntu:22.04:LTS
All versions, plus listed versions
2.4.0-1
None known
django-filter
Ubuntu:24.04:LTS
All versions, plus listed versions
23.2-323.3post1-123.4-123.5-1
None known
django-filter
Ubuntu:25.10
All versions, plus listed versions
25.1-125.1-2
None known
django-filter
Ubuntu:26.10
All versions, plus listed versions
25.1-2
None known
django-filter
Ubuntu:26.04:LTS
All versions, plus listed versions
25.1-2
None known

History

History
RecordedChangedSources
aliasesEUVD
first indexedCVE 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

Show 15 moreShow less
MoveEnter Open