Django 5.2.15 release notes¶
June 3, 2026
Django 5.2.15 fixes five security issues with severity “low” in 5.2.14.
CVE-2026-7666: Potential unencrypted email transmission via STARTTLS in the SMTP backend¶
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 directives¶
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-48587: Potential exposure of private data via whitespace padding in Vary header¶
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.