Fallo ¿crítico? en PGP y S/MIME permite revelar mensajes cifrados

miércoles, 23 de mayo de 2018

PGP y S/MIME son dos de los métodos más conocidos para cifrar emails por todo Internet. PGP (Pretty Good Privacy) fue desarrollado por Phil Zimmermann el cual utiliza la criptografía de clave pública para cifrar la información y es todo un clásico ya que lleva funcionando desde 1991. S/MIME (Secure/Multipurpose Internet Mail Extensions) es también una tecnología que permite cifrar información basado en criptografía asimétrica. Ambos sistemas también permiten firmar los correos para confirmar la identidad de la persona que los ha enviado.

Hace unos días se comentó en ELDM la aparición de esta nueva vulnerabilidad llamada efail. En él se explicaba un bug con el cual es posible descifrar a texto plano los mensajes cifrados con ambas plataformas. Ahí es poco. Y lo más grave, también sirve para cifrar cualquier email enviado en estos últimos años. El mensaje publicado por estos investigadores es bastante claro: desinstala ahora en tu cliente de email cualquiera de estos métodos de cifrado.

Sebastian Schinzel, profesor de seguridad informática en la universidad de Munster de Ciencias Aplicadas, escribió en su Twitter: “…podría (el bug) revelar el texto plano de los emails cifrados, incluidos los emails cifrados que enviaste en el pasado”. Además, acaba diciendo “No hay hoy en día ningún parche para esta vulnerabilidad. Si utilizas PGP/GPG o S/MIME para envío de información sensible, deberías de deshabilitarlo en tu cliente de email”. El mensaje en sí es bastante preocupante, ya que destroza uno de los métodos de cifrado más robustos, comunes y utilizados en Internet.

Sebastian Schinzel twitter PGP/GPG imagen
Imagen 1. Tweet publicado por Sebastian Schinzel el 14 de mayo de 2018. 

Pero no sólo ha sido Sebastian Schinzel quien lo ha anunciado, la Electronic Frontier Fundation o EFF ha dicho en un comunicado que confirma este fallo de seguridad. Por lo visto han estado en permanente contacto con el equipo de investigación que les ha confirmado este fallo. Este es el mensaje que ha lanzado la EEF:

“Nuestro aviso, que es el mismo que el de los investigadores, es deshabilitar inmediatamente y/o desinstalar herramientas que automáticamente descifren los emails cifrados con PGP. Hasta que los fallos descritos en el paper se comprendan y sean reparados, los usuarios deberían comenzar a buscar una alternativa para enviar mensajes punto-a-punto por canales seguros, como por ejemplo Signal, y temporalmente parar de enviar y especialmente leer mensajes cifrados con PGP.”

Hasta aquí parece el fin del mundo tal y como lo conocemos. FIN. Pero antes de sacar las antorchas para quemar los ordenadores, vamos a analizar un poco mejor el problema porque puede que no sea para tanto. En primer lugar, el problema existe, pero afecta sólo a emails en formato HTML, algo que Sergio de lo Santos ya comentaba en un tweet el mismo día de su publicación:

Sergio de los santos twitter PGP/GPG imagen
Imagen 2. Tweet publicado por Sergio de los Santos el 14 de mayo de 2018.

En efecto, según la información publicada en efail.de este ataque se aprovecha de vulnerabilidades en el contenido de emails con formato HTML. Estos mensajes permiten por ejemplo cargar imágenes o fuentes de letra, y estos mismos componentes pueden ser reutilizados como medio para conseguir el mensaje en texto plano a través de una URL. Como requisito principal, para conseguir el descifrado el atacante debe de tener acceso a los emails del objetivo ya sea consiguiendo acceso a su cuenta de correo, interceptando el tráfico de red o accediendo directamente a los servidores de email o sus copias de seguridad. Como se puede observar, es posible que sea más peligroso el hecho que el atacante tenga acceso a esos recursos (ha entrado hasta la cocina en tus sistemas) que el efail en sí mismo.

Como también comenta comenta Sergio, hace ya mucho tiempo que nadie utiliza HTML en los correos (¿o sí?). Es bastante conocido que los emails en HTML y en particular enlaces externos tipo son un problema de seguridad. HTML permite de ejecutar elementos como scripts, controles ActiveX, etc. Menos mal que el líder de GnuPG, Wener Koch, ha sido quien ha puesto un poco de sensatez a este mensaje tan alarmista sobre este fallo de seguridad. Lo deja claro en este tweet, el problema está en los clientes de email y sus plugins, no en los protocolos. También deja claro cómo solucionar el problema: no utilizar HTML en los correos y usar cifrado autenticado.

Pero vamos a ver un poco más en detalle el origen de estos problemas relacionados con los clientes de email. El primero, la principal vulnerabilidad, es que un atacante podría preparar un correo con una capa HTML con un componente modificado, una capa con el texto cifrado y otra capa con otro componente HTML modificado el cual utiliza enlaces remotos que finalmente permiten enviar el texto cifrado en texto plano. El segundo problema está en las especificaciones técnicas y de implementación de OpenPGP y S/MIME.

Sobre el problema relacionado con los emails en HTML, existen a su vez dos tipos de ataque efail. El primero llamado direct exfiltration explota vulnerabilidades en Apple Mail, iOS Mail y Mozilla Thunderbird. El atacante crea un nuevo correo con varias partes, en concreto tres partes tipo body. La primera es un body HTML que contiene una etiqueta de imagen HTML. Es importante destacar que la etiqueta de imagen no está cerrada, es decir, comienza con comillas, pero no se cierra, como se puede observar en rojo en la siguiente captura:

texto cifrado y la etiqueta de imagen imagen
Imagen 3. Primera parte con el texto cifrado y la etiqueta de imagen.. Fuente.

La parte que viene a continuación, una nueva parte body contiene el texto cifrado PGP o S/MIME. Por última, la tercera parte body es la que cierra la etiqueta de imagen que antes quedó abierta.

Entonces el atacante envía un email a la víctima y el cliente de correo descifra el texto que estaba cifrado en la segunda parte body que antes se ha comentado. Finalmente, el cliente junta todas las partes y obteniendo como resultado el siguiente mensaje, el cual, al cerrar al final las comillas, se ha expandido a 4 líneas formando una URL de esta longitud:

Resultado final de juntar todas las capas imagen
Imagen 4. Resultado final de juntar todas las capas. Fuente.

Finalmente, el cliente de email codifica la URL y solicita una imagen de esa direccoçpmL. Como la ruta de esta URL tiene incluido el texto plano del email cifrado, el cliente de email de la víctima lo enviará al atacante.

URL final imagen
Imagen 5. URL final obtenida. Fuente.

El siguiente ataque, basado en las especificaciones técnicas y de implementación de OpenPGP y S/MIME, es más elaborado y se llama ataque CBC/CFB Gadget Attack. Esta vez el atacante podría enviar bloques de datos malformados los cuales, cuando sean leídos por el objetivo, pueden engañar al cliente de email para que envíe al ordenador del atacante el texto plano de los mensajes. Un requisito, debido a las especificaciones de CBC, es que el atacante sepa por lo menos un bloque completo del texto sin cifrar (texto plano).

Esto que en principio parece un hándicap insalvable se convierte en algo plausible ya que la mayoría de los mensajes S/MIME cifrados suelen comenzar por “Content-type: multipart/signed” con lo cual ya tenemos nuestro primer bloque de texto sin cifrar. En la figura 6, como se puede apreciar en el apartado (a). El siguiente paso (b), es construir un bloque de texto plano válida utilizando ceros (el bloque conformado por X y C0 se llama CBC gadget). El paso final (c) se van añadiendo gadgets para insertar una etiqueta de imagen dentro del texto cifrado, creando finalmente un solo body que mostrará el texto plano cuando la atacante abra el email. El ataque usando CFB funciona exactamente igual ya que tiene las mismas propiedades criptográficas que CBC.

Este ataque es muy similar en ejecución para PGP o S/MIME, aunque para S/MIME funciona mejor que para PGP, el cual sólo tiene un rango de éxito de 1/3 (debido a la compresión que PGP realiza sobre el texto plano antes de cifrarlo). Para más información aquí tenéis el paper completo.

squema del ataque CBC/CFB Gadget Attack imagen
Imagen 6. Esquema del ataque CBC/CFB Gadget Attack. 

El ataque PGP CFB gadget tiene el CVE-2017-17688 y el S/MIME CBC se le ha asignado el CVE-2017-17689.

Como hemos podido observar, al final esta vulnerabilidad no es tan grave como parecía al principio. Pero de todas formas hay que tenerla en cuenta y al menos tomar algunas medidas de seguridad. La primera, no utilizar mensajes con HTML y deshabilitar todos los plugins de email. También es conveniente rechazar los correos HTML (no abrirlos) y deshabilitar la opción de carga de recursos externos (las cuales suelen ser habitualmente imágenes).

MDC (Modification Detection Code) es una característica que si está incluida en tu programa/plugin de correo, que resuelve el problema (por ejemplo, OpenPGP lo lleva), el problema es que S/MIME no soporta esta característica. Por otro lado, también se recomienda abrir los emails cifrados con PGP en un editor de texto, en una máquina virtual segura, un contenedor docker o lo que se te ocurra en vez de dejar que estos mensajes sean procesados por algún tipo de programa/plugin.

grafico PGP

Utilizar TLS no protege contra este ataque ya que TLS sólo cifra el tráfico entre los clientes de email y los servidores, o entre dos servidores de email, pero todos los correos se procesan y almacenan en texto plano en los servidores y en las respectivas cuentas de correos.

De todas formas, estaremos atentos a la evolución de este bug por si trae más sorpresas.

Fran Ramírez
Equipo de Crazy Ideas en CDO en Telefónica e investigador de Seguridad Informática en ElevenPaths

No hay comentarios:

Publicar un comentario