Explique el código Python de Heartbleed [cerrado]

1

primer post aquí, así que sé amable, por favor!

Entiendo el concepto de vulnerabilidad de Heartbleed, y tengo una idea general de Python. Sin embargo, estoy luchando por entender el código Python de PoC, así que fue después de un poco de disección de código :)

¿Particularmente las dos secciones donde define el mensaje 'hola' y 'hb'? Vi los mensajes cruzando el cable en Wireshark y puedo ver claramente que el hexágono va y viene. Luego, comparando esto con una conexión SSL normal es bastante similar.

Entonces, ¿supongo que el contenido de ese hex está configurando la conexión SSL y la solicitud de latido? Pero, ¿puede alguien explicar el hex involucrado, o más específicamente de qué se deriva esto?

He visto el RFC que define la extensión del corazón, pero por alguna razón no puedo traducir eso en cómo se ha derivado este hex. ¡¿Estoy siendo estúpido o simplemente me estoy perdiendo algo ?!

    
pregunta TimC 15.04.2014 - 17:04
fuente

1 respuesta

2

Supongo que te estás refiriendo a ssltest.py que está circulando en la naturaleza. El cliente Hola probablemente fue copiado de otro paquete de captura. Es parte del protocolo de enlace SSL :

  Client                                               Server

  ClientHello                  -------->
                                                  ServerHello
                                                 Certificate*
                                           ServerKeyExchange*
                                          CertificateRequest*
                               <--------      ServerHelloDone
  Certificate*
  ClientKeyExchange
  CertificateVerify*
  [ChangeCipherSpec]
  Finished                     -------->
                                           [ChangeCipherSpec]
                               <--------             Finished
  Application Data             <------->     Application Data

OpenSSL permite recibir latidos durante el saludo. Debido a que el cliente aún no ha enviado un mensaje ChangeCipherSpec, la solicitud de Heartbeat no está cifrada. Para obtener una explicación del formato de solicitud y respuesta de latido, consulte esta respuesta . También muestra por qué está sucediendo el exploit, la longitud de la carga útil es demasiado grande y se omite el relleno de la carga útil.

El formato de los paquetes SSL se describe como TLSPlaintext en el Apéndice A de RFC 5246 (TLS 1.2) . El "fragmento" sería el mensaje de reconocimiento de ClientHello y la solicitud de Heartbeat a partir del tipo y la longitud de la carga útil.

Creo que los comentarios en mi implementación del servidor Heartbleed PoC ayudarán Lo entiendes mejor.

    
respondido por el Lekensteyn 15.04.2014 - 18:12
fuente

Lea otras preguntas en las etiquetas