Explotando DSA-1571: Cómo romper PFS en SSL con EDH

( Amo los acrónimos :-D )

Click here to read this in English. But do it under your own risk, because my English is just horrible (corrections are welcome).

Los siguiente párrafos suponen que estás al tanto del problema surgido en el paquete OpenSSL de Debian, el 13 de Mayo de 2008 identificado como DSA-1571-1 (CVE-2008-0166).

A esta altura, todos deben conocer y saber como funcionan los juguetes de H D Moore. Estos juguetes sirven para atacar la autenticación de SSH basada en llave pública, utilizando llaves clonadas y fuerza bruta online.

Más aún, muchos de ustedes deben saber que un PRNG sesgado produce otros efectos, además del mencionado.

Extrañamente, no encontré más de este tipo de juguetes que exploten estos otros aspectos (actualización: chequea en Otros trabajos/links relacionados). Por lo que me gustaría mostrarles un parche de Wireshark que ataca el Secreto Perfecto hacia Adelante (Perfect Forward Secrecy, PFS) provisto por Diffie-Hellman Efímero (Ephemeral Diffie Hellman, EDH).

Introducción a EDH

Pongamos esto en palabras simples (si sabes de lo que estamos hablando, saltéate esta parte hasta el próximo título):
En un canal inseguro dos partes acuerdan una clave común para cifrar su diálogo. Esto es lo que ocurren en SSL (en la mayoría de los casos, ya que depende del cipher suite que se utilice):

El "exploit"

Si un atacante observador puede explorar completamente el espacio de llaves privadas (es decir, todos los posibles valores para Xc o Xs), entonces podrá calcular el secreto compartido y descifrar toda la comunicación. Es esto lo que el parche hace.

Un Wireshark con este parche y una lista de todas las posibles llaves privadas intentará atacar por fuerza bruta al secreto compartido. Si una de las partes está usando el paquete de OpenSSL vulnerable distribuido por Debian, entonces la comunicación es totalmente insegura y podrá ser descifrada.


El parche ha sido enviado a Wireshark con el objetivo que en el futuro forme parte del mismo. Allí puede encontrarse el parche contra la versión en desarrollo, en particular con la revisión 25765 del SVN.

Cosas que pueden mejorarse

Nosotros (los otros desarrolladores y yo) detectamos durante el proceso muchas cosas que pueden ser mejoradas,pero por las que no haremos nada. Por lo que si te interesa contribuir, te recomendamos que empieces por estos ítems y que envíes los parches al Bugzilla de Wireshark:

Autores

Paolo Abeni <paolo.abeni at email.it>
Luciano Bello <luciano at debian.org>
Maximiliano Bertacchini <mbertacchini at citefa.gov.ar>

Este trabajo fue parcialmente patrocinado por Si6 Labs en CITEFA, Argentina.

Otros trabajos/links relacionados




Last update: Fri, 25 Jul 2008 17:42:15 -0300 - Luciano Bello <luciano[at]debian.org>