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.
Detalle
de la vulnerabilidad
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 y a quien 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 desde https://www.kb.cert.org/vuls/id/144389
Recomendación
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.
Más información:
ROBOT https://robotattack.org/
Fuente: Hispasec