Heartbleed - Lea solo los siguientes 64k y exagerando la amenaza

4

Mi comprensión de la vulnerabilidad de Heartbleed es que no hay verificación de límites en la longitud de la carga útil / tamaño del búfer para que el servidor pueda leer en la memoria fuera de su espacio de proceso.

¿Pero se puede modificar la dirección de inicio?

Si no, la probabilidad de que se enganche algo interesante de un servidor con gigas de RAM, donde la mayor parte del tiempo en que el espacio no cambia, es mucho menos probable que si se puede leer cualquier espacio de 64K.

Este artículo parece sensacionalizar el impacto de una discusión racional de probabilidad a una postura de "no se puede confiar en nada; la memoria RAM de su servidor ha estado expuesta al 100% durante años".

enlace

Por supuesto, 64K es un trozo bastante grande, suficiente para almacenar 3,200 hash SHA1, pero en un servidor de 4Gb, es solo 1 / 67,108 del espacio total de direcciones. ¿Se está publicitando la amenaza?

    
pregunta Luke Puplett 10.04.2014 - 12:59
fuente

3 respuestas

12

El bloque de 64k que se devuelve se selecciona de manera efectiva al azar, lo que parece que haría difícil encontrar datos que valgan la pena. Sin embargo, hay dos factores que aumentan significativamente la amenaza:

Primero, el ataque no devolverá la memoria que se asignó durante el inicio del programa. Esto significa que el área ocupada por cosas aburridas como el código del programa no se mostrará en los resultados del ataque; Del mismo modo, la mitad del espacio de direcciones reservado para el sistema operativo no se devolverá.

Segundo, debido a la forma en que se realiza la asignación de memoria, el bloque de 64k tenderá a provenir de la memoria utilizada recientemente. Por ejemplo, si un servidor maneja muchos intentos de inicio de sesión, es probable que la memoria se haya utilizado para un inicio de sesión reciente y muy bien podría contener un par de nombre de usuario / contraseña o dos. La buena sincronización podría hacer que la memoria se use para configurar la conexión SSL, y es posible que pueda encontrar una clave privada de SSL en esa.

Un tercer punto es que el ataque se puede realizar de forma rápida y repetida, y es casi imposible de detectar. Una conexión a Internet doméstica podría ser capaz de llegar a un servidor con decenas de miles de solicitudes de latido por segundo.

    
respondido por el Mark 10.04.2014 - 13:23
fuente
5

El error Heartbleed permite a otras partes leer la memoria fuera del espacio deseado, pero no Le permite leer la memoria de otros procesos . La dirección de inicio tampoco puede ser modificada por el atacante, realmente depende del algoritmo de asignación de memoria que la memoria termina de devolver. Lo más probable es que esta sea la memoria de una solicitud HTTP reciente (para servidores web y navegadores web). Para los servidores web ocupados, existe una alta probabilidad de recuperar datos completamente diferentes porque la memoria se sobrescribió mientras se servía a otros usuarios.

Cloudflare investigado el posibilidad de obtener una clave SSL privada del servidor web nginx, pero encontró muy poco probable que exprimiera la clave privada. El argumento principal es que el servidor web nginx carga la clave privada muy pronto durante el inicio. No se asigna / utiliza mucha memoria en ese momento, por lo que la clave privada se almacena en una dirección baja. Cuando llegan nuevas solicitudes, se usan direcciones más distantes, por lo que piensan que es difícil (y probablemente imposible) obtener la clave. Es por eso que han presentado un desafío que les pide a los evaluadores que demuestren lo contrario.

Tenga en cuenta que no hay ninguna prueba de que no sea posible obtener las claves. La postura paranoica (y segura) es entonces asumir que es posible (incluso si la probabilidad de ser golpeado por un meteorito es mayor). Para probar que no es posible obtener las claves utilizando este único error , se debe verificar cuidadosamente cómo funciona el asignador de memoria y cómo otros factores externos pueden afectar el direccionamiento.

Los investigadores pudieron obtener la clave privada en "condiciones de laboratorio". ¿Cuáles eran estas condiciones? Si ejecutan un servidor web personalizado utilizando OpenSSL en un dispositivo integrado con poca memoria, esto puede hacer que sea mucho más fácil obtener la clave privada, pero no es realista.

Independientemente de si las claves privadas se pueden filtrar o no, se ha demostrado que las solicitudes y respuestas HTTP recientes se pueden leer de la memoria. Esto incluye contraseñas (consulte Yahoo, conozco a alguien que obtuvo contraseñas de 3k en poco tiempo), documentos comerciales, código fuente (incluidas las credenciales de la base de datos), tokens de inicio de sesión, ID de sesión y más. Aunque la clave privada principal no fue robada, todavía es bastante posible que se hayan filtrado los secretos del maestro de la copia que permitirían a alguien que olfateó la red descifrar los datos cifrados.

En cuanto a la auditoría, usted no puede ver en los registros de acceso de los servidores web que se haya atacado con este error. Solo con una captura de paquetes, puedes decirlo.

Dado que los ataques son bastante sigilosos y el error permite a los atacantes remotos recopilar fácilmente datos a los que normalmente no se puede acceder desde el exterior (código fuente) o que deberían estar cifrados (contraseñas), en mi opinión, Heartbleed es bastante grave. Recibió mucha prensa, pero eso parece estar justificado.

    
respondido por el Lekensteyn 11.04.2014 - 22:42
fuente
0

Aquí se eliminó una respuesta que fue realmente interesante, al menos en los comentarios que provocó.

Esencialmente, el respondedor estaba (no muy claramente) tratando de decir que cada nueva asignación de búfer para leer el latido del corazón cambia la dirección de inicio, y como puede ejecutar el ataque muchas veces, puede extraer aleatoriamente datos de un área particular de la RAM, golpeando un punto diferente cada vez.

Mark dice en su respuesta anterior:

  

El bloque de 64k que se devuelve se selecciona de manera efectiva al azar

También es probable que se esté refiriendo a este mecanismo.

    
respondido por el Luke Puplett 15.04.2014 - 12:31
fuente

Lea otras preguntas en las etiquetas