Severity by source
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Primary rating from NVD · only source for this CVE.
CVSS VectorNVD
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Lifecycle Timeline
2Blast Radius
ecosystem impact- 12 pypi packages depend on django (12 direct, 0 indirect)
Ecosystem-wide dependent count for version 5.2.
DescriptionCVE.org
An issue was discovered in Django 6.0 before 6.0.6 and 5.2 before 5.2.15. django.core.mail.backends.smtp.EmailBackend in Django fails to prevent reuse of a partially-initialized connection after a failed STARTTLS handshake when fail_silently=True, which allows on-path network attackers to read email content via cleartext interception. Earlier, unsupported Django series (such as 5.0.x, 4.1.x, and 3.2.x) were not evaluated and may also be affected. Django would like to thank Kasper Dupont for reporting this issue.
AnalysisAI
Django's SMTP email backend silently downgrades to cleartext transmission when a STARTTLS handshake fails under the fail_silently=True configuration, exposing email content to on-path network interception. Affected are Django 6.0.x before 6.0.6 and 5.2.x before 5.2.15; older unsupported series (5.0.x, 4.1.x, 3.2.x) were not evaluated but may also be vulnerable. No public exploit has been identified at time of analysis, and the CVSS 4.0 score of 2.3 reflects the high attack complexity and mandatory on-path network positioning required for exploitation.
Technical ContextAI
Django's django.core.mail.backends.smtp.EmailBackend handles outbound email delivery over SMTP. STARTTLS is a protocol upgrade command that promotes a plaintext SMTP session to TLS-encrypted transport; if the upgrade handshake fails, the connection must be terminated to prevent cleartext exposure. CWE-319 (Cleartext Transmission of Sensitive Information) identifies the root cause: when fail_silently=True is set, the backend suppresses the STARTTLS exception and continues using the partially-initialized, unencrypted connection for delivery. This is a variant of the well-understood STARTTLS downgrade attack class. An on-path adversary can interfere with or simply observe the failed negotiation and then passively read all subsequently transmitted email data on the plaintext channel. No CPE strings were provided in the referenced NVD entry; affected components are identified from the description as Django 5.2.x and 6.0.x specifically within the django.core.mail subsystem.
RemediationAI
Upgrade to Django 6.0.6 or Django 5.2.15, the vendor-confirmed patched releases documented at https://www.djangoproject.com/weblog/2026/jun/03/security-releases/. If immediate upgrade is not possible, set fail_silently=False in all EmailBackend configurations so that a failed STARTTLS handshake raises an exception and aborts the connection rather than silently continuing over cleartext - note this trade-off means application code must handle smtplib.SMTPException or Django's socket.error to avoid unhandled errors breaking email-dependent workflows. A stronger architectural mitigation is to use an SMTPS (implicit TLS) connection on port 465 via Django's EMAIL_USE_SSL = True setting instead of STARTTLS on port 587, which eliminates the downgrade attack surface entirely by requiring TLS from the outset. Operators running unsupported Django series (5.0.x, 4.1.x, 3.2.x) should treat themselves as potentially exposed and prioritize upgrading to a supported series given those branches receive no security patches.
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
Cross-user flow execution in Langflow (< 1.9.1) lets any authenticated API-key holder run another user's flow by passing
Same technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-34087
GHSA-mm6v-q8q9-pgcf