Más de 40 vulnerabilidades en la implementación de la función STARTTLS en los clientes y servidores de correo

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.

Configuración de seguridad de la conexión del cliente Thunderbird

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-9941CVE-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-15685Vendor advisoryBug 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-29969Vendor 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-14929Commit
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-29547Bug 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 reportVendor 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 2013CVE-2021-38084Fix
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 reportCVE-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í

Fuente original en inglés