You have not selected any currencies to display

Bl0ckch41nnewsMarvin: fallo criptográfico en RSA que nunca se arreglará ~ Segu-Info

28


Durante la
ESORICS 2023
(por sus siglas en inglés Simposio europeo sobre investigación en seguridad
informática) que se celebro del 25 al 29 de septiembre en Países Bajos, un
investigador de seguridad que trabaja para Red Hat, presentó
«Marvin Attack», una técnica de ataque que permite determinar los datos originales midiendo
los retrasos durante las operaciones de descifrado basándose en el algoritmo
RSA.

Marvin Attack, es una variación del método Bleichenbacher, propuesto en 1998,
y continúa el desarrollo de los ataques ROBOT y New CAT publicados en 2017 y
2019. El ataque Marvin es el regreso de una vulnerabilidad de 25 años que
permite realizar operaciones de firma y descifrado RSA como un atacante con la
capacidad de observar solo el tiempo de la operación de descifrado realizada
con la clave privada.

Llevan tres años analizando de nuevo el problema y han descubierto, entre
otras cosas, que nunca se va a solucionar.

Este antiguo ataque de oráculo de temporización dirigido al cifrado RSA ha
resurgido, según identificó Hubert Kario, un investigador del equipo checo de
Red Hat. Este ataque de oráculo, descubierto inicialmente en 1998 por
Daniel Bleichenbacher, ha demostrado ser aún explotable con el paso del tiempo.

A lo largo de los años, esta vulnerabilidad ha reaparecido en múltiples
ocasiones, siendo la más reciente en 2018 cuando los investigadores Hanno
Böck, Jurau Somorovsky y Craig Young lo reintrodujeron en su publicación
titulada
«ROBOT»,
un acrónimo para «El Regreso de la Amenaza de Oráculo de Bleichenbacher».

Para conseguirlo han tenido que realizar logros tan impresionantes como ser
capaces de percibir cambios en el tiempo de procesamiento del orden de unos
pocos ciclos de CPU de diferencia en la respuesta, a través de una red en
producción a kilómetros saltando seis enrutadores en el camino. Lo han
bautizado como
Marvin.

En la novela
«La guía del autoestopista galáctico»
(de donde también sale el término «42»), Marvin es el Android que dura hasta
el final del universo.

El fallo viene de 1998, cuando Daniel Bleichenbacher descubrió que los
mensajes de error lanzados por servidores SSL al procesar el
padding (relleno) del formato PKCS#1 (v1.5) permitían a atacantes
descifrar la clave precompartida. Entender el fallo original no es tan difícil
y ayuda mucho a ver por qué Marvin es un nuevo-viejo problema.

Básicamente se menciona que la esencia del método es que un atacante,
basándose en diferentes reacciones del servidor y diferentes tiempos de
ejecución, puede separar los bloques de Oracle correctos e incorrectos
agregados con el estándar PKCS #1 v1.5 para alinear los datos cifrados a lo
largo del límite del bloque. Al manipular información sobre la exactitud de
los bloques de relleno, un atacante puede usar la fuerza bruta para recrear un
texto cifrado adecuado.

De dónde viene el problema con Marvin

Bleichenbacher descubrió inicialmente que los servidores SSL emitían mensajes
de error relacionados con el relleno PKCS #1 v1.5. Estos mensajes facilitaban
inadvertidamente un ataque al texto cifrado, comprometiendo la
confidencialidad esencial para los protocolos de Seguridad de la Capa de
Transacción (TLS) que utilizan encriptación RSA. Bajo esta vulnerabilidad, una
persona que pudiera observar el tiempo requerido para el proceso de descifrado
utilizando la clave privada podría, teóricamente, descifrar mensajes RSA
interceptados.

PKCS#1 es un formato usado dentro del conjunto de algoritmos RSA que formatea
los mensajes cuando son demasiados cortos. Para evitar que sea fácil
descifrarlos, se hace relleno. En SSL/TLS se envía un mensaje como clave de
intercambio (pre shared key), que no es muy larga y por tanto debe
rellenarse con padding hasta la longitud del módulo.

Básicamente se menciona que la esencia del método es que un atacante,
basándose en diferentes reacciones del servidor y diferentes tiempos de
ejecución, puede separar los bloques de Oracle correctos e incorrectos
agregados con el estándar PKCS #1 v1.5 para alinear los datos cifrados a lo
largo del límite del bloque. Al manipular información sobre la exactitud de
los bloques de relleno, un atacante puede usar la fuerza bruta para recrear un
texto cifrado adecuado.

En este caso, el ataque no recupera directamente la clave privada, sino que
sólo permite descifrar el texto cifrado o generar un mensaje firmado falso.
Para llevar a cabo un ataque con éxito, es necesario enviar un volumen muy
grande de mensajes de prueba para descifrarlos.

El uso de un ataque contra servidores TLS que utilizan cifrado basado en
claves RSA permite al atacante almacenar pasivamente el tráfico interceptado y
luego descifrarlo. Para los servidores que soportan PFS, llevar a cabo un
ataque se vuelve mucho más difícil y el éxito depende de qué tan rápido se
lleve a cabo el ataque.

Además, el método permite generar una firma digital ficticia que verifica el
contenido de los mensajes ServerKeyExchange en TLS 1.2 o los mensajes
CertificateVerify en TLS 1.3 transmitidos en la etapa de intercambio de
claves, que se puede utilizar para realizar ataques MITM para interceptar la
conexión TLS entre el cliente y el servidor.

Se menciona que la diferencia entre el método Marvin se reduce a una
tecnología mejorada para separar datos incrementales correctos e incorrectos,
filtrar falsos positivos, determinar con mayor precisión los retrasos en los
cálculos y utilizar canales adicionales de terceros durante la medición.

En la práctica, el método propuesto permite descifrar el tráfico o generar
firmas digitales sin conocer la clave RSA privada. Para probar la
aplicabilidad del ataque, se publicó un script especial para verificar
servidores TLS y herramientas para identificar problemas en bibliotecas.

El problema afecta a varias implementaciones de protocolos que utilizan RSA y
PKCS. A pesar de que las bibliotecas criptográficas modernas contienen algún
tipo de protección contra ataques basados ​​en el método Bleichenbacher, el
estudio reveló que las bibliotecas tienen canales de fuga abiertos y no
proporcionan un tiempo de procesamiento constante para paquetes con relleno
correcto y erróneo. Por ejemplo, la implementación del ataque GnuTLS por parte
de Marvin no está ligada al código que realiza directamente cálculos
relacionados con RSA, sino que utiliza diferentes tiempos de ejecución para el
código que decide si mostrar un mensaje de error en particular.

El autor del estudio también cree que la clase de vulnerabilidades considerada
no se limita a RSA y puede afectar a muchos otros algoritmos criptográficos
que dependen de bibliotecas estándar para cálculos de números enteros.

Para confirmar la posibilidad de llevar a cabo el ataque Marvin en la
práctica, el investigador demostró la aplicabilidad del método a aplicaciones
basadas en las bibliotecas M2Crypto y pyca/criptografía, en las que unas pocas
horas fueron suficientes para comprometer el cifrado al realizar un
experimento en un portátil promedio.

No hay solución

La lista de implementaciones criptográficas susceptibles incluye OpenSSL,
GnuTLS, NSS de Mozilla (a pesar de los parches existentes, según los hallazgos
de Kario), pyca/cryptography (que solo ha sido parcialmente remediado),
M2Crypto y OpenSSL-ibmca.

Kario aboga firmemente por la discontinuación del uso de la encriptación RSA
PKCS#1 v1.5, incluso en casos en los que pueda haber una necesidad percibida
de compatibilidad con versiones anteriores. Según la investigación publicada,
cualquier uso de la API genérica PKCS#1 v1.5 sin el método de Marvin se
clasificaría bajo
CWE-242, denotando el «Uso de Función Inherentemente Peligrosa».

Sin un código verificado libre de canales secundarios por parte del llamante,
se consideraría automáticamente vulnerable el código del llamante. Para una
comprensión más profunda, Red Hat ha publicado el documento de investigación
completo, que delinea el vector de amenaza, el patrón de ataque y datos
adicionales relacionados con esta vulnerabilidad perdurable.

La «solución» es dejar de usar PKCS#1 en RSA para TLS (TLS 1.3 ya lo hace,
abandona todo padding en lo posible después de muchos parches en sus
versiones anteriores). Hoy en día es también posible pasarse a ECDSA en vez de
RSA.

Fuente:
TelefonicaTech
|
Cibertip | DesdeLinux




Source link

Los comentarios están cerrados.