---
title: "Django 4.0.1 release notes"
version: 5.1
locale: el
source: https://docs.djangoproject.com/el/5.1/releases/4.0.1/
canonical: https://djangodocs.dev/el/5.1/releases/4.0.1/
---
# Django 4.0.1 release notes

*January 4, 2022*

Django 4.0.1 fixes one security issue with severity «medium», two security
issues with severity «low», and several bugs in 4.0.

## CVE-2021-45115: Denial-of-service possibility in `UserAttributeSimilarityValidator`

[`UserAttributeSimilarityValidator`](/el/5.1/topics/auth/passwords/#django.contrib.auth.password_validation.UserAttributeSimilarityValidator) incurred significant overhead
evaluating submitted password that were artificially large in relative to the
comparison values. On the assumption that access to user registration was
unrestricted this provided a potential vector for a denial-of-service attack.

In order to mitigate this issue, relatively long values are now ignored by
`UserAttributeSimilarityValidator`.

This issue has severity «medium» according to the [Django security policy](/el/5.1/internals/security/#security-disclosure).

## CVE-2021-45116: Potential information disclosure in `dictsort` template filter

Due to leveraging the Django Template Language’s variable resolution logic, the
[`dictsort`](/el/5.1/ref/templates/builtins/#std-templatefilter-dictsort) template filter was potentially vulnerable to information
disclosure or unintended method calls, if passed a suitably crafted key.

In order to avoid this possibility, `dictsort` now works with a restricted
resolution logic, that will not call methods, nor allow indexing on
dictionaries.

As a reminder, all untrusted user input should be validated before use.

This issue has severity «low» according to the [Django security policy](/el/5.1/internals/security/#security-disclosure).

## CVE-2021-45452: Potential directory-traversal via `Storage.save()`

`Storage.save()` allowed directory-traversal if directly passed suitably
crafted file names.

This issue has severity «low» according to the [Django security policy](/el/5.1/internals/security/#security-disclosure).

## Bugfixes

- Fixed a regression in Django 4.0 that caused a crash of
  `assertFormsetError()` on a formset named `form` ([#33346](https://code.djangoproject.com/ticket/33346)).
- Fixed a bug in Django 4.0 that caused a crash on booleans with the
  `RedisCache` backend ([#33361](https://code.djangoproject.com/ticket/33361)).
- Relaxed the check added in Django 4.0 to reallow use of a duck-typed
  `HttpRequest` in `django.views.decorators.cache.cache_control()` and
  `never_cache()` decorators ([#33350](https://code.djangoproject.com/ticket/33350)).
- Fixed a regression in Django 4.0 that caused creating bogus migrations for
  models that reference swappable models such as `auth.User`
  ([#33366](https://code.djangoproject.com/ticket/33366)).
- Fixed a long standing bug in [Geometry Collections](/el/5.1/ref/contrib/gis/geos/#geos-geometry-collections) and
  [`Polygon`](/el/5.1/ref/contrib/gis/geos/#django.contrib.gis.geos.Polygon) that caused a crash on some
  platforms (reported on macOS based on the `ARM64` architecture)
  ([#32600](https://code.djangoproject.com/ticket/32600)).
