Ataque DROWN


El ataque DROWN ( descifrado de RSA con cifrado obsoleto y debilitado ) es un error de seguridad entre protocolos que ataca a los servidores que admiten conjuntos de protocolos SSLv3/ TLS modernos mediante el uso de su compatibilidad con el protocolo SSL v2 obsoleto e inseguro para aprovechar un ataque a las conexiones que se agotan. -Protocolos actualizados que de otro modo serían seguros. [1] [2] DROWN puede afectar a todos los tipos de servidores que ofrecen servicios encriptados con SSLv3/TLS y aún así admiten SSLv2, siempre que compartan las mismas credenciales de clave pública entre los dos protocolos. [3] Además, si el mismo certificado de clave públicase usa en un servidor diferente que admite SSLv2, el servidor TLS también es vulnerable debido a que el servidor SSLv2 filtra información clave que se puede usar contra el servidor TLS. [3]

Los detalles completos de DROWN se anunciaron en marzo de 2016, junto con un parche que desactiva SSLv2 en OpenSSL; a la vulnerabilidad se le asignó el ID CVE - 2016-0800 . [4] El parche por sí solo no será suficiente para mitigar el ataque si el certificado se puede encontrar en otro host SSLv2. La única contramedida viable es deshabilitar SSLv2 en todos los servidores.

Los investigadores estimaron que el 33 % de todos los sitios HTTPS se vieron afectados por esta vulnerabilidad a partir del 1 de marzo de 2016. [5]

DROWN es un acrónimo de "Descifrado de RSA con cifrado obsoleto y debilitado". [6] Aprovecha una vulnerabilidad en la combinación de protocolos utilizados y la configuración del servidor, más que un error de implementación específico. Según los descubridores, el exploit no se puede solucionar haciendo cambios en el software del cliente, como los navegadores web. [3]

El exploit incluye un ataque de texto cifrado elegido con el uso de un servidor SSLv2 como oráculo de Bleichenbacher . SSLv2 funcionaba cifrando el secreto principal directamente mediante RSA, y los conjuntos de cifrado de exportación de 40 bits funcionaban cifrando solo 40 bits del secreto principal y revelando los otros 88 bits como texto sin formato. El texto cifrado RSA cifrado SSLv3/TLS de 48 bytes se "recorta" en partes de 40 bits y luego se usa en el mensaje SSLv2 ClientMasterKey que el servidor trata como la parte de 40 bits del secreto maestro SSLv2 (los otros 88 bits pueden ser cualquier valor enviado por el cliente como texto sin formato). Mediante la fuerza bruta del cifrado de 40 bits, el mensaje ServerVerify se puede utilizar como el oráculo. El ataque de prueba de concepto demostró cómo tanto las configuraciones de múltiples GPU como la computación en la nube comercialpodría realizar parte de los cálculos de descifrado de códigos, a un costo de alrededor de $ 18,000 para la configuración de la GPU y un costo por ataque de $ 400 para la nube. Un ataque exitoso proporcionará la clave de sesión para un protocolo de enlace TLS capturado.

Los investigadores, que describieron el ataque anterior como el ataque DROWN general, también encontraron una debilidad específica en la implementación OpenSSL de SSLv2 que permitía lo que llamaron un ataque DROWN especial . Esto redujo enormemente el esfuerzo necesario para descifrar el cifrado, lo que provocó ataques de intermediarios en tiempo real.posible que solo requiriera modestos recursos informáticos. La implementación de OpenSSL de SSLv2 hasta 2015 no verificó que las longitudes de clave clara y cifrada fueran correctas, lo que permitió, por ejemplo, cifrar solo 8 bits del secreto maestro. Hasta 2015, OpenSSL también sobrescribía los bytes incorrectos en el secreto maestro SSLv2 durante su intento de contramedida de Bleichenbacher. Hasta 2016, OpenSSL también negociaría felizmente conjuntos de cifrado SSLv2 deshabilitados. A diferencia de SSLv3 y versiones posteriores, en SSLv2 se suponía que el cliente debía elegir de una lista de conjuntos de cifrado ofrecidos por el servidor, pero OpenSSL permitiría el uso de conjuntos de cifrado no listados.