Un grupo de académicos alemanes ha descubierto más de 40 vulnerabilidade en la implementación de la función STARTTLS en los clientes y servidores de correo electrónico más populares en la actualidad.
También conocido como Opportunistic TLS, STARTTLS se refiere a un conjunto de extensiones de protocolo utilizadas por los clientes y servidores de correo electrónico para actualizar los protocolos de correo electrónico más antiguos, como POP3, IMAP y SMTP, y pasar de enviar datos a través de una conexión de texto plano a un canal seguro cifrado con TLS.
Desarrollado a finales de los 90, STARTTLS funcionaba comprobando si se podía establecer una conexión a través de TLS y luego negociando la conexión TLS con todas las partes implicadas antes de enviar los datos del correo electrónico.
Hoy día, las cosas han evolucionado. Casi todos los principales clientes y servidores de correo electrónico admiten un modo puramente TLS en el que todos los protocolos antiguos, como POP3, IMAP y SMTP, se canalizan por defecto a través de un canal cifrado que protege las comunicaciones de correo electrónico contra la manipulación o las escuchas, y los clientes de correo electrónico se niegan a enviar correos electrónicos si no se puede establecer una conexión TLS segura.
Sin embargo, todavía hay millones de clientes de correo electrónico y cientos de miles de servidores de correo electrónico en los que se admite STARTTLS y que todavía están habilitados.
Se aconseja a los usuarios que pasen del modo STARTTLS al modo sólo TLS
En un proyecto de investigación presentado en la conferencia de seguridad USENIX 2021, los académicos dijeron haber encontrado más de 40 vulnerabilidades en las implementaciones de clientes y servidores de STARTTLS que podían ser aprovechadas para convertir las conexiones STARTTLS en formas de texto plano, interceptar las comunicaciones por correo electrónico, robar contraseñas o manipular las bandejas de entrada de los correos electrónicos.
Aunque estos ataques requerían una posición MitM (Man/Meddler-in-the-Middle) para poder interactuar con el proceso de negociación inicial de STARTTLS, el equipo de investigación afirmó que «estas vulnerabilidades son tan comunes que se recomienda evitar el uso de STARTTLS siempre que sea posible» y que usuarios y administradores deben actualizar sus clientes y servidores para utilizar conexiones sólo TLS lo antes posible.
La buena noticia es que los investigadores han pasado los últimos meses trabajando con los proveedores de clientes y servidores de correo electrónico para parchear las más de 40 vulnerabilidades que descubrieron.
Aunque los usuarios tienen la opción de aplicar estos parches y seguir utilizando STARTTLS para protegerse de los ataques, los investigadores aconsejan que los usuarios actualicen la configuración de sus clientes y servidores y que establezcan por defecto TLS-only como la configuración de seguridad de las comunicaciones por correo electrónico, algo que otros expertos en seguridad también llevan recomendando ya desde 2014.
A continuación se muestra un resumen de los problemas descubiertos por el equipo de investigación y los clientes y servidores de correo electrónico afectados.
Resumen de las vulnerabilidades del cliente STARTTLS
Response Injection (Buffering)
Product | Protocol | Status | Links |
---|---|---|---|
Apple Mail (macOS) | SMTP/POP3/IMAP | Fixed in macOS High Sierra 10.13.6/Big Sur 11.4 | CVE-2020-9941, CVE-2021-30696 |
Apple Mail (iOS/iPadOS) | SMTP/POP3/IMAP | Fixed in iOS/iPadOS 14.0 | CVE-2020-9941 |
Mozilla Thunderbird | IMAP | Fixed in 78.7.0 | CVE-2020-15685, Vendor advisory, Bug report (restricted) |
Claws Mail | SMTP/POP3/IMAP | Fixed in 3.17.6 for SMTP/POP3, See libEtPan for IMAP | CVE-2020-15917 |
Mutt | IMAP/SMTP/POP3 | Fixed in 1.14.4 | CVE-2020-14954 |
NeoMutt | IMAP/SMPT/POP3 | Fixed in 2020-06-19 | Commit/Patch, see also CVE-2020-14954 |
Evolution | SMTP/POP3 | Fixed in 3.36.4 (evolution-data-server) | CVE-2020-14928 |
LibEtPan (Mail Framework for C Language) | IMAP/SMTP/POP3 | Fixed in repository, unreleased | CVE-2020-15953 |
Exim (MTA sending) | SMTP | Unfixed (reported privately) | – |
Gmail (iOS/iPadOS) | SMTP/IMAP | Unfixed (reported privately) | – |
Mail.ru, MyMail | SMTP | Unfixed (reported privately, report closed as not applicable) | – |
Yandex | SMTP/IMAP | Unfixed (reported privately) | – |
PHP (stream_socket_enable_crypto) | SMTP/POP3/IMAP | Unfixed | Bug report (private) |
Negotiation and Tampering bugs
Product | Description | Protocol | Status | Links |
---|---|---|---|---|
Gmail (Android) | Leak of emails | IMAP | Fixed (retested in 2021.07.11.387440246) | – |
Gmail (Go) | Leak of emails | IMAP | Fixed (retested in 2020.10.15.341102866) | – |
Samsung Email | Leak of emails | IMAP | Fixed (untested) | – |
Alpine | Untagged responses accepted before STARTTLS | IMAP | Unknown (reported via email) | – |
Trojitá | Untagged responses accepted before STARTTLS | IMAP | Unknown | Bug report |
Mozilla Thunderbird | Server responses prior to STARTTLS processed | IMAP | Fixed in 78.12 | CVE-2021-29969, Vendor advisory |
KMail | STARTTLS ignored when “Server requires authentication” not checked | SMTP | Unknown | Bug report |
Sylpheed | STARTTLS stripping | IMAP | Unknown | Bug report |
OfflineIMAP | STARTTLS stripping | IMAP | Unknown | Bug report |
GMX / Web.de Mail Collector | STARTTLS stripping | POP3/IMAP | Fixed | – |
Mail.ru, MyMail, Email app for Gmail | STARTTLS Stripping | SMTP | Unfixed (report closed as not applicable) | – |
Avoiding Encryption via IMAP PREAUTH
Product | Status | Links |
---|---|---|
Apple Mail (iOS/iPadOS) | Reported February 2020, Re-reported August 2021, Unfixed | – |
Mozilla Thunderbird | Fixed in 68.9.0 | CVE-2020-12398 |
Alpine | Fixed in 2.23 | CVE-2020-14929, Commit |
Mutt | Fixed in 1.14.3 | CVE-2020-14093 |
NeoMutt | Fixed in Release 2020-06-19 | Commit/Patch, see also CVE-2020-14093 |
GMX / Web.de Mail Collector | Fixed | – |
Certificate Validation
Product | Protocol | Description | Status | Links |
---|---|---|---|---|
OfflineIMAP | IMAP | Accepts untrusted certificates | Unknown | Bug report |
GMX / Web.de Mail Collector | POP3/IMAP | Accepts untrusted certificates | Still allows self-signed | – |
Yandex | SMTP/IMAP | Accepts untrusted certificates | Unknown (report closed as not eligible) | – |
Mail.ru, MyMail | SMTP | Accepts untrusted certificates (SMTP, IMAP) | Unknown (report closed as duplicate) | – |
Outlook (Android & iOS) | SMTP/IMAP | Certificate hostname not checked (SMTP, IMAP) | Unknown (report closed as low/medium severity) | – |
Geary | SMTP/IMAP | Accepting an untrusted certificate creates a permanent trust exception for all certificates | Fixed in 3.36.3 | CVE-2020-24661 |
Trojitá | SMTP | Accepts untrusted certificates | Fixed in repository (77ddd5d4) (no official releases) | CVE-2020-15047 |
Ruby Net::SMTP | SMTP | Only checks hostname, ignores certificate signature | Fixed in 2.7.2 | Bug report |
Crashes
Product | Protocol | Description | Status | Links |
---|---|---|---|---|
Alpine | IMAP | Crash when LIST or LSUB send before STARTTLS | Unknown (reported via email) | – |
Balsa | IMAP | Nullptr dereference when TLS required and PREAUTH send | Fixed in 2.5.10 | CVE-2020-16118 |
Balsa | IMAP | Stack overflow due to repeated BAD answer to CAPABILITY command | Fixed in 2.6.2 (no release yet) | Bug Report |
Balsa | IMAP | Crash on untagged EXPUNGE response | Fixed in commit 26e554ac (no release yet) | Bug Report |
Evolution | IMAP | Invalid free when no auth mechanisms in greeting | Fixed in >3.35.91 | CVE-2020-16117 |
Miscellaneous
Product | Protocol | Description | Status | Links |
---|---|---|---|---|
KMail | POP3 | Setup wizard in POP3 defaults to unencrypted connections | Fixed in 20.08 | Bug Report |
KMail | POP3 | Config shows “encrypted”, but it isn’t | Fixed | CVE-2020-15954 |
KMail | SMTP/IMAP | Dialog loop “forces” the user to accept invalid certificates | Unknown | Bug Report |
Mozilla Thunderbird | POP3 | Infinite loop when POP3 server replies with -ERR to STLS command | Unknown | Bug Report |
Trojitá | SMTP/IMAP | Hard to choose implicit TLS due to typo (German) | Fixed | Bug Report |
Trojitá | SMTP | SMTP defaults to plaintext on port 587 | Unknown | Bug Report |
Summary of STARTTLS server vulnerabilities
Command Injection (Buffering)
Product | Protocol | Status | Links |
---|---|---|---|
Nemesis (used by GMX / Web.de, provider) | POP3/IMAP | Fixed (reported privately) | – |
Interia.pl (provider) | SMTP/POP3/IMAP | Fixed (reported privately) | – |
Yahoo (only MTA-to-MTA, provider) | SMTP | Unfixed (reported privately) | – |
Yandex (provider) | SMTP/POP3/IMAP | Unfixed (reported privately) | – |
s/qmail | SMTP | Fixed in 4.0.09 | CVE-2020-15955 |
Coremail | SMTP/POP3/IMAP | Unfixed (reported via CERT) | – |
Citadel | SMTP/POP3/IMAP | Unfixed | CVE-2020-29547, Bug report |
Gordano GMS | POP3/IMAP | Unfixed | CVE-2021-37844 |
recvmail | SMTP | Fixed in 3.1.2 (reported privately) | – |
SmarterMail | POP3 | Fixed in Build 7537 | CVE-2020-29548 |
Burp Collaborator | SMTP | Fixed in 2020.9.2 | Bug report, Vendor release notes |
Dovecot | SMTP | Fixed in 2.3.14.1 and 2.3.15 | CVE-2021-33515 |
Mercury/32 | SMTP/POP3/IMAP | Fixed in 4.90 | CVE-2021-33487 |
QMail Toaster (1.4.1) | SMTP | Project discontinued | – |
Courier | POP3 | Fixed in 1.1.5 (reported privately), known since 2013 | Discussion from 2013, CVE-2021-38084, Fix |
PHP (stream_socket_enable_crypto) | SMTP/POP3/IMAP | Unfixed | Bug report (private) |
Session Fixation
Product | Protocol | Status | Links |
---|---|---|---|
Citadel | POP3/IMAP | Reported via forum, unfixed | Forum with report, CVE-2021-37845 |
IPswitch IMail | POP3/IMAP | Reported via Mail, unfixed | CVE-2021-37846 |
Miscellaneous Issues
Product | Protocol | Description | Status | Links |
---|---|---|---|---|
Nemesis (used by GMX / Web.de, provider) | SMTP | Advertises authentication before STARTTLS even though it is disabled | Fixed (reported via Bugbounty) | – |
A continuación se muestra una lista de los clientes de correo electrónico y servidores de correo electrónico afectados, según un documento presentado en la conferencia USENIX de este año. Ver PDF aquí