OpenSSL Heartbeat (error de Heartbleed): ¿para qué se utiliza la carga útil? [duplicar]

5

Por lo tanto, el error del latido del corazón puede llevar a un desbordamiento de lectura de memoria, exponiendo (parte de) la memoria del proceso, porque lee la carga útil cuando en realidad no hay carga útil (o menos).

¿Pero para qué necesitas una carga útil, especialmente en un instante?

Parece que es solo memcpy'd en la respuesta. ¿Cómo se usa exactamente?

Editar :
Pregunta similar, respuesta muy interesante: ¿Por qué el cliente suministra la longitud del mensaje?

Edite en respuesta al comentario de TildalWave :

  • Esta pregunta no es un duplicado de 55116 . Estoy preguntando para qué se usa la carga útil. La otra pregunta es cómo funciona el exploit en general ("¿Cómo funciona exactamente el exploit de OpenSSL TLS (Heartbleed)?") Y ni siquiera contiene la palabra "payload".

  • Aclaración: parece que mi pregunta no está muy clara.

    1. Normalmente se usa un latido para verificar si el otro sistema todavía está allí, lo cual es básicamente una pregunta de sí / no. Entonces, ¿por qué existe una carga útil de tamaño enorme de 64 KB (Mark ya tiene los números de secuencia mencionados sin embargo)?
    2. El servidor no se preocupa por el contenido de la carga útil, simplemente lo copia en la respuesta (esperando que el cliente proporcione la longitud de la carga útil en lugar de verificarla, al menos antes de la solución), ¿verdad?
    3. ¿Qué tipo de datos pondría un cliente en la carga útil? ¿Un número? ¿Una palabra? ¿Una cadena al azar? Si es posible, proporcione un enlace a un archivo fuente (preferiblemente C) junto con las líneas de código relevantes.
    4. ¿Puede alguien proporcionar un ejemplo para un caso de uso que requiera que la carga útil sea más larga que, por ejemplo, 8 bytes? ¿Por qué sería una mala idea usar un número de secuencia hexadecimal de 8 bytes?
pregunta basic6 10.04.2014 - 10:50
fuente

1 respuesta

4

La función "latido del corazón" de TLS está diseñada para TLS sobre UDP u otros protocolos sin conexión. Los paquetes "Heartbeat" son una forma de preguntar al servidor "¿Sigues ahí?", Pero con un protocolo sin conexión, no hay garantía de que los paquetes no se eliminen o entreguen fuera de servicio. El campo de "carga útil" de tamaño arbitrario permite una gran flexibilidad para contar un paquete de latido de otro.

El problema es que esta flexibilidad es excesiva para casi todos los usos: un simple número de secuencia u otro campo de tamaño fijo funcionaría igual de bien.

    
respondido por el Mark 10.04.2014 - 11:48
fuente

Lea otras preguntas en las etiquetas