Django 6.0.6 release notesLink to this heading

June 3, 2026

Django 6.0.6 fixes five security issues with severity „low” and one bug in 6.0.5.

CVE-2026-7666: Potential unencrypted email transmission via STARTTLS in the SMTP backendLink to this heading

When using EMAIL_USE_TLS, a failed STARTTLS handshake could leave a partially-initialized connection that would subsequently be reused for sending email without encryption. This can occur with fail_silently=True, as used by send_mail() and BrokenLinkEmailsMiddleware, among others. Connections configured with EMAIL_USE_SSL are not affected.

This issue has severity „low” according to the Django security policy.

CVE-2026-8404: Potential exposure of private data via case-sensitive Cache-Control directivesLink to this heading

UpdateCacheMiddleware and cache_page() incorrectly cached responses marked with private Cache-Control directives when using mixed or uppercase values (e.g. Private).

The cache_control() decorator and patch_cache_control() function were not affected, since they normalize directives to lowercase. This issue only affects responses where Cache-Control is set manually.

This issue has severity „low” according to the Django security policy.

CVE-2026-35193: Potential exposure of private data via missing Vary: AuthorizationLink to this heading

UpdateCacheMiddleware and cache_page() decorator allowed responses to requests bearing an Authorization header (and without Cache-Control: public) to be cached. To conform with the existing mechanism for constructing cache keys, responses to these requests will now vary on Authorization.

This issue has severity „low” according to the Django security policy.

CVE-2026-48587: Potential exposure of private data via whitespace padding in Vary headerLink to this heading

UpdateCacheMiddleware incorrectly cached responses whose Vary header values contained leading or trailing whitespace. Because has_vary_header() failed to strip that, a Vary: * header value with surrounding whitespace was not recognized as containing the wildcard, causing it to be stored and potentially served from the cache when it should not have been.

This issue has severity „low” according to the Django security policy.

Poprawki błędówLink to this heading

  • Fixed a bug in Django 6.0 where an alert message on an admin changelist with ModelAdmin.list_editable referred to the „Run” button by its previous name (#37094).