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)

ProductProtocolStatusLinks
Apple Mail (macOS)SMTP/POP3/IMAPFixed in macOS High Sierra 10.13.6/Big Sur 11.4CVE-2020-9941CVE-2021-30696
Apple Mail (iOS/iPadOS)SMTP/POP3/IMAPFixed in iOS/iPadOS 14.0CVE-2020-9941
Mozilla ThunderbirdIMAPFixed in 78.7.0CVE-2020-15685Vendor advisoryBug report (restricted)
Claws MailSMTP/POP3/IMAPFixed in 3.17.6 for SMTP/POP3, See libEtPan for IMAPCVE-2020-15917
MuttIMAP/SMTP/POP3Fixed in 1.14.4CVE-2020-14954
NeoMuttIMAP/SMPT/POP3Fixed in 2020-06-19Commit/Patch, see also CVE-2020-14954
EvolutionSMTP/POP3Fixed in 3.36.4 (evolution-data-server)CVE-2020-14928
LibEtPan (Mail Framework for C Language)IMAP/SMTP/POP3Fixed in repository, unreleasedCVE-2020-15953
Exim (MTA sending)SMTPUnfixed (reported privately)
Gmail (iOS/iPadOS)SMTP/IMAPUnfixed (reported privately)
Mail.ru, MyMailSMTPUnfixed (reported privately, report closed as not applicable)
YandexSMTP/IMAPUnfixed (reported privately)
PHP (stream_socket_enable_crypto)SMTP/POP3/IMAPUnfixedBug report (private)

Negotiation and Tampering bugs

ProductDescriptionProtocolStatusLinks
Gmail (Android)Leak of emailsIMAPFixed (retested in 2021.07.11.387440246)
Gmail (Go)Leak of emailsIMAPFixed (retested in 2020.10.15.341102866)
Samsung EmailLeak of emailsIMAPFixed (untested)
AlpineUntagged responses accepted before STARTTLSIMAPUnknown (reported via email)
TrojitáUntagged responses accepted before STARTTLSIMAPUnknownBug report
Mozilla ThunderbirdServer responses prior to STARTTLS processedIMAPFixed in 78.12CVE-2021-29969Vendor advisory
KMailSTARTTLS ignored when “Server requires authentication” not checkedSMTPUnknownBug report
SylpheedSTARTTLS strippingIMAPUnknownBug report
OfflineIMAPSTARTTLS strippingIMAPUnknownBug report
GMX / Web.de Mail CollectorSTARTTLS strippingPOP3/IMAPFixed
Mail.ru, MyMail, Email app for GmailSTARTTLS StrippingSMTPUnfixed (report closed as not applicable)

Avoiding Encryption via IMAP PREAUTH

ProductStatusLinks
Apple Mail (iOS/iPadOS)Reported February 2020, Re-reported August 2021, Unfixed
Mozilla ThunderbirdFixed in 68.9.0CVE-2020-12398
AlpineFixed in 2.23CVE-2020-14929Commit
MuttFixed in 1.14.3CVE-2020-14093
NeoMuttFixed in Release 2020-06-19Commit/Patch, see also CVE-2020-14093
GMX / Web.de Mail CollectorFixed

Certificate Validation

ProductProtocolDescriptionStatusLinks
OfflineIMAPIMAPAccepts untrusted certificatesUnknownBug report
GMX / Web.de Mail CollectorPOP3/IMAPAccepts untrusted certificatesStill allows self-signed
YandexSMTP/IMAPAccepts untrusted certificatesUnknown (report closed as not eligible)
Mail.ru, MyMailSMTPAccepts untrusted certificates (SMTP, IMAP)Unknown (report closed as duplicate)
Outlook (Android & iOS)SMTP/IMAPCertificate hostname not checked (SMTP, IMAP)Unknown (report closed as low/medium severity)
GearySMTP/IMAPAccepting an untrusted certificate creates a permanent trust exception for all certificatesFixed in 3.36.3CVE-2020-24661
TrojitáSMTPAccepts untrusted certificatesFixed in repository (77ddd5d4) (no official releases)CVE-2020-15047
Ruby Net::SMTPSMTPOnly checks hostname, ignores certificate signatureFixed in 2.7.2Bug report

Crashes

ProductProtocolDescriptionStatusLinks
AlpineIMAPCrash when LIST or LSUB send before STARTTLSUnknown (reported via email)
BalsaIMAPNullptr dereference when TLS required and PREAUTH sendFixed in 2.5.10CVE-2020-16118
BalsaIMAPStack overflow due to repeated BAD answer to CAPABILITY commandFixed in 2.6.2 (no release yet)Bug Report
BalsaIMAPCrash on untagged EXPUNGE responseFixed in commit 26e554ac (no release yet)Bug Report
EvolutionIMAPInvalid free when no auth mechanisms in greetingFixed in >3.35.91CVE-2020-16117

Miscellaneous

ProductProtocolDescriptionStatusLinks
KMailPOP3Setup wizard in POP3 defaults to unencrypted connectionsFixed in 20.08Bug Report
KMailPOP3Config shows “encrypted”, but it isn’tFixedCVE-2020-15954
KMailSMTP/IMAPDialog loop “forces” the user to accept invalid certificatesUnknownBug Report
Mozilla ThunderbirdPOP3Infinite loop when POP3 server replies with -ERR to STLS commandUnknownBug Report
TrojitáSMTP/IMAPHard to choose implicit TLS due to typo (German)FixedBug Report
TrojitáSMTPSMTP defaults to plaintext on port 587UnknownBug Report

Summary of STARTTLS server vulnerabilities

Command Injection (Buffering)

ProductProtocolStatusLinks
Nemesis (used by GMX / Web.de, provider)POP3/IMAPFixed (reported privately)
Interia.pl (provider)SMTP/POP3/IMAPFixed (reported privately)
Yahoo (only MTA-to-MTA, provider)SMTPUnfixed (reported privately)
Yandex (provider)SMTP/POP3/IMAPUnfixed (reported privately)
s/qmailSMTPFixed in 4.0.09CVE-2020-15955
CoremailSMTP/POP3/IMAPUnfixed (reported via CERT)
CitadelSMTP/POP3/IMAPUnfixedCVE-2020-29547Bug report
Gordano GMSPOP3/IMAPUnfixedCVE-2021-37844
recvmailSMTPFixed in 3.1.2 (reported privately)
SmarterMailPOP3Fixed in Build 7537CVE-2020-29548
Burp CollaboratorSMTPFixed in 2020.9.2Bug reportVendor release notes
DovecotSMTPFixed in 2.3.14.1 and 2.3.15CVE-2021-33515
Mercury/32SMTP/POP3/IMAPFixed in 4.90CVE-2021-33487
QMail Toaster (1.4.1)SMTPProject discontinued
CourierPOP3Fixed in 1.1.5 (reported privately), known since 2013Discussion from 2013CVE-2021-38084Fix
PHP (stream_socket_enable_crypto)SMTP/POP3/IMAPUnfixedBug report (private)

Session Fixation

ProductProtocolStatusLinks
CitadelPOP3/IMAPReported via forum, unfixedForum with reportCVE-2021-37845
IPswitch IMailPOP3/IMAPReported via Mail, unfixedCVE-2021-37846

Miscellaneous Issues

ProductProtocolDescriptionStatusLinks
Nemesis (used by GMX / Web.de, provider)SMTPAdvertises authentication before STARTTLS even though it is disabledFixed (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