Description
The smtplib library in CPython (aka Python) before 2.7.12, 3.x before 3.4.5, and 3.5.x before 3.5.2 does not return an error when StartTLS fails, which might allow man-in-the-middle attackers to bypass the TLS protections by leveraging a network position between the client and the registry to block the StartTLS command, aka a "StartTLS stripping attack."
Fixed in Linux distributions
Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.
Debian
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian 11 | python2.7 | 2.7.12~rc1-1 | — |
| Debian 8 | python3.4 | 3.4.2-1+deb8u2 | DLA-1663-1 |
| Debian 7 | python2.7 | 2.7.3-6+deb7u3 | DLA-522-1 |
| Debian 7 | python3.2 | 3.2.3-7+deb7u1 | DLA-871-1 |
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 16.04 LTS | python2.7 | 2.7.12-1ubuntu0~16.04.1 | USN-3134-1 |
| Ubuntu 16.04 LTS | python3.5 | 3.5.2-2ubuntu0~16.04.1 | USN-3134-1 |
| Ubuntu 14.04 LTS | python2.7 | 2.7.6-8ubuntu0.3 | USN-3134-1 |
| Ubuntu 14.04 LTS | python3.4 | 3.4.3-1ubuntu1~14.04.5 | USN-3134-1 |
| Ubuntu 14.04 LTS | python3.5 | 3.5.2-2ubuntu0~16.04.4~14.04.1 | — |
Red Hat
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| RHEL 7 | python +6 | 2.7.5-38.el7_2 | RHSA-2016:1626 |
| RHEL 6 | python +5 | 2.6.6-66.el6_8 | RHSA-2016:1626 |
| RHEL 2 | python27-python +6 | 2.7.8-16.el7 | RHSA-2016:1628 |
| RHEL 2 | python33-python +6 | 3.3.2-16.el7 | RHSA-2016:1629 |
| RHEL 2 | rh-python34-python +6 | 3.4.2-13.el7 | RHSA-2016:1630 |
| RHEL 2 | rh-python35-python +6 | 3.5.1-9.el7 | RHSA-2016:1627 |
SUSE
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| SLES 15 SP1 | python | 2.7.17-7.32.2 | SUSE-SU-2020:0234-1 |
| SLES 15 SP1 | python-base | 2.7.17-7.32.1 | SUSE-SU-2020:0234-1 |
| SLES 15 SP1 | python3 +1 | 3.6.10-3.42.2 | SUSE-SU-2020:0114-1 |
| SLES 15 | python | 2.7.17-7.32.2 | SUSE-SU-2020:0234-1 |
| SLES 15 | python-base | 2.7.17-7.32.1 | SUSE-SU-2020:0234-1 |
| SLES 15 | python3 +1 | 3.6.10-3.42.2 | SUSE-SU-2020:0114-1 |
| SLES 12 SP2 | python3 +1 | 3.4.5-19.1 | SUSE-SU-2016:2859-1 |
| SLES 12 SP1 | python | 2.7.9-24.1 | SUSE-SU-2016:2106-1 |
| SLES 12 SP1 | python-base | 2.7.9-24.2 | SUSE-SU-2016:2106-1 |
| SLES 12 SP1 | python-doc | 2.7.9-24.4 | SUSE-SU-2016:2106-1 |
| SLES 12 SP1 | python3 +1 | 3.4.5-17.1 | SUSE-SU-2016:2653-1 |
| SLES 12 | python | 2.7.9-16.7.1 | SUSE-SU-2019:0223-1 |
| SLES 12 | python-doc +1 | 2.7.9-16.7.2 | SUSE-SU-2019:0223-1 |
| SLES 12 | python3 +1 | 3.4.5-17.1 | SUSE-SU-2016:2653-1 |
Show 5 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| SLES 11 SP4 | python +1 | 2.6.9-39.1 | SUSE-SU-2016:2270-1 |
| SLES 11 SP4 | python-doc | 2.6-8.39.1 | SUSE-SU-2016:2270-1 |
| SLES 2 | python | 2.7.17-7.32.2 | SUSE-SU-2020:0234-1 |
| SLES 2 | python-base | 2.7.17-7.32.1 | SUSE-SU-2020:0234-1 |
| SLES for SAP 12 SP2 | python3 +1 | 3.4.5-19.1 | SUSE-SU-2016:2859-1 |
| SLES for SAP 12 SP1 | python | 2.7.9-24.1 | SUSE-SU-2016:2106-1 |
| SLES for SAP 12 SP1 | python-base | 2.7.9-24.2 | SUSE-SU-2016:2106-1 |
| SLES for SAP 12 SP1 | python-doc | 2.7.9-24.4 | SUSE-SU-2016:2106-1 |
| SLES for SAP 12 SP1 | python3 +1 | 3.4.5-17.1 | SUSE-SU-2016:2653-1 |
| SLES for SAP 11 SP4 | python +1 | 2.6.9-39.1 | SUSE-SU-2016:2270-1 |
| SLES for SAP 11 SP4 | python-doc | 2.6-8.39.1 | SUSE-SU-2016:2270-1 |
openSUSE
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| openSUSE Tumbleweed | python | 2.7.12-1.5 | openSUSE-SU-2024:10450-1 |
| openSUSE Tumbleweed | python-base | 2.7.12-1.4 | openSUSE-SU-2024:10536-1 |
| openSUSE Tumbleweed | python-doc | 2.7.12-1.3 | openSUSE-SU-2024:10193-1 |
| openSUSE Tumbleweed | python36 | 3.6.15-1.1 | openSUSE-SU-2024:11284-1 |
| openSUSE Leap 15.1 | python3 +1 | 3.6.10-lp151.6.7.1 | openSUSE-SU-2020:0086-1 |
Azure Linux
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Azure Linux 3 | python-py | No fix yet | — |
Public exploits
Exploit or proof-of-concept code for this vulnerability is publicly available, which lowers the bar for attackers. Treat it as a reason to patch sooner.
Exploit-DB 1
- Python smtplib 2.7.11 / 3.4.4 / 3.5.1 - Man In The Middle StartTLS Stripping EDB-43500 · local · Jul 3, 2016
Sources: PoC-in-GitHub, Metasploit Framework, Exploit-DB — updated daily. Only links are listed; no exploit code is hosted here.
Advisories 21
- RHSA-2016:1630 Red Hat Security Advisory: rh-python34-python security update Red Hat Security Advisories (RHSA) · Jun 29, 2026
- RHSA-2016:1629 Red Hat Security Advisory: python33-python security update Red Hat Security Advisories (RHSA) · Jun 29, 2026
- RHSA-2016:1627 Red Hat Security Advisory: rh-python35-python security update Red Hat Security Advisories (RHSA) · Jun 29, 2026
- RHSA-2016:1628 Red Hat Security Advisory: python27-python security update Red Hat Security Advisories (RHSA) · Jun 29, 2026
- RHSA-2016:1626 Red Hat Security Advisory: python security update Red Hat Security Advisories (RHSA) · Jun 29, 2026
- USN-3134-1 python2.7, python3.2, python3.4, python3.5 vulnerabilities Ubuntu Security Notices (USN) · Apr 22, 2026
- DLA-522-1 python2.7 - security update Debian Security (DSA / DLA) · Mar 9, 2026
- DLA-871-1 python3.2 - security update Debian Security (DSA / DLA) · Mar 9, 2026
- DLA-1663-1 python3.4 - security update Debian Security (DSA / DLA) · Mar 9, 2026
- openSUSE-SU-2020:0086-1 Security update for python3 SUSE / openSUSE Security Updates · Feb 4, 2026
- openSUSE-SU-2024:10450-1 python-2.7.12-1.5 on GA media SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2016:2106-1 Security update for python SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2019:0223-1 Security update for python SUSE / openSUSE Security Updates · Feb 4, 2026
- openSUSE-SU-2024:10193-1 python-doc-2.7.12-1.3 on GA media SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2020:0114-1 Security update for python3 SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2016:2653-1 Security update for python3 SUSE / openSUSE Security Updates · Feb 4, 2026
- openSUSE-SU-2024:11284-1 python36-3.6.15-1.1 on GA media SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2016:2270-1 Security update for python SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2016:2859-1 Security update for python3 SUSE / openSUSE Security Updates · Feb 4, 2026
- openSUSE-SU-2024:10536-1 libpython2_7-1_0-2.7.12-1.4 on GA media SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2020:0234-1 Security update for python SUSE / openSUSE Security Updates · May 2, 2025
References
- https://hg.python.org/cpython/rev/d590114c2394
- http://www.splunk.com/view/SP-CAAAPUE
- RHSA-2016:1630 vendor-advisory
- RHSA-2016:1627 vendor-advisory
- https://hg.python.org/cpython/rev/b3ce713fb9be
- RHSA-2016:1629 vendor-advisory
- http://www.splunk.com/view/SP-CAAAPSV
- [debian-lts-announce] 20190207 [SECURITY] [DLA 1663-1] python3.4 security update mailing-list
- https://bugzilla.redhat.com/show_bug.cgi?id=1303647
- https://docs.python.org/3.4/whatsnew/changelog.html#python-3-4-5
- [oss-security] 20160614 Python CVE-2016-0772: smtplib StartTLS stripping attack mailing-list
- https://hg.python.org/cpython/raw-file/v2.7.12/Misc/NEWS
- GLSA-201701-18 vendor-advisory
- https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-2
- 91225 vdb-entry
- RHSA-2016:1628 vendor-advisory
- RHSA-2016:1626 vendor-advisory
- openSUSE-SU-2020:0086 vendor-advisory