sábado, 16 de diciembre de 2017

ROBOT, vulnerabilidad importante en implementaciones de RSA

Ya tenemos un nuevo nombre para agregar a la lista de vulnerabilidades con personalidad propia: ROBOT (Return Of Bleichenbacher's Oracle Threat). Algo así como: "El retorno de la amenaza del oraculo de Bleichenbacher" Y no, no es un relato perdido de Sir Arthur Conan Doyle sobre el genial detective Sherlock Holmes, se trata de un nuevo ataque contra TLS, del que sus descubridores afirman resucita el ataque descubierto por el criptógrafo suizo Daniel Bleichenbacher allá por el año 1998.



¿Qué hace este ataque?

Básicamente: puedes llegar a desencriptar text cifrado con RSA o firmar con la clave privada del servidor, en sus propias palabras:

 "Given access to an oracle, the attacker is not only able to decrypt ciphertexts but also to sign arbitrary messages with server’s private RSA key."

Cuando hablan de "oráculo", se refiere a un tipo de resultado que debes interpretar para decidir tu siguiente paso en un ataque. Supongamos que mediante la emisión de peticiones al un servidor web este te responde de una u otra forma. En dependencia de esa respuesta vas modificando tu ataque hasta llegar a su consecución. Podemos verlo como una especie de búsqueda heurística. Huelga decir que el concepto de "oraculo" no es ni original ni exclusivo de la seguridad, se da en otros mucho ámbitos.

Este ataque, en realidad no es nada novedoso, simplemente han encontrado varias formas de saltarse las que se creían eran buenas medidas para atajar el problema anterior, pero que debido a la propia complejidad de las medidas a implementar, han vuelto a superarlas y devolver el ataque a la palestra.


¿Está roto RSA?

No, ni mucho menos. El ataque se da debido al uso de PKCS#1, como ya pasó hace 19 años. PKCS es un estándar publicado con el que se definen la parametrización, formatos, etc. Para que nos entendamos, siguiendo el estándar es posible que dos implementaciones de RSA, cliente y servidor por ejemplo, puedan intercambiar información sin ambigüedades.

Gracias a la forma en la que se codifican las respuestas en el formato previsto por PKCS#1, es posible reinterpretarlas para ir extrayendo el texto en claro. Cuando hablamos de peticiones no nos referimos a unas cuantas, sino del orden de millones, dependiendo de cómo de bueno (fiable) sea ese...oráculo. 

El problema además se basa en la forma en la que RSA efectúa el intercambio de claves, es ahí donde se aprovecha el ataque para 


¿A que afecta?

A muchas implementaciones que se encuentran instaladas en los servidores (no pienses solo en servidores web, ojo). No afecta a los clientes. En particular, aquellos cifrados que comienzan por TLS_RSA...son vulnerables en su mayoría, debido a que este problema se halla, fundamentalmente, en PKCS#1 ha sido trasladado al código en prácticamente casi todas las librerías de comunicaciones cifradas. 

Para hacernos una idea, un 27% del Alexa 100 está afectado, en palabras de los investigadores. A pesar de ello, ya existen parches publicados para la mayoría de fabricantes, además de contramedias posibles para limitar la exposición.

Puedes comprobar una lista no exhaustiva de afectados aquí.


¿Qué hago?

Si tienes un servidor, lo recomendable es no dar soporte a RSA cuando no efectuamos el intercambio de claves con otro protocolo, verificar la existencia de parche oficial para nuestro servidor o una contramedida efectiva. Además, desde la página web de la vulnerabilidad nos enlazan a herramientas de test, etc, por si queremos comprobar si estamos expuestos o no.





David García
@dgn1729

Más información: