VPS con recursos compartidos malloc attack

3

Si lo entiendo correctamente entonces:

  1. La función C malloc proporciona un bloque de memoria con valores indeterminados (que dependen del usuario anterior de este bloque de memoria)
  2. Los hostings VPS compartidos comparten recursos como RAM y CPU

En ese caso, mi pregunta es: sería posible explotar este hecho para crear un programa en C que repetidamente malloc y liberar memoria y registrar valores de memoria encontrados para detectar datos importantes de otros usuarios como contraseñas, etc. ?

Si no es posible, ¿por qué no?

Si es posible, ¿cómo podemos evitar que suceda?

EDIT : después de una larga lectura de los manuales de VMware, encontré este: MANUAL

Página 5, sección 2.3, elemento de la lista 3, líneas 6 y amp; 7:

  

"Para evitar que la información se filtre entre las máquinas virtuales, la   El hipervisor siempre escribe ceros en la memoria física del host antes   asignándolo a una máquina virtual. "

Entonces, ese tipo de respuesta a mi pregunta para al menos uno de los hipervisores. No tengo forma de verificar si es cierto para todos los hipervisores.

    
pregunta Gillian 19.06.2018 - 17:40
fuente

2 respuestas

1
  

La función C malloc proporciona un bloque de memoria con valores indeterminados (que dependen del usuario anterior de este bloque de memoria)

Correcto.

  

Los hostings VPS compartidos comparten recursos como RAM y CPU

¿Utilizan la misma CPU y RAM física que los demás VPS, sí.

  

Sería posible explotar este hecho para crear un programa en C que haría repetidas veces malloc y liberar memoria y registrar valores de memoria encontrados ...

Eso es complicado.

Te estás olvidando de una capa adicional, y las capas crean abstracción. La V en VPS obviamente significa virtual , pero para crear algo virtual, necesitamos tecnología para virtualizar.

En pocas palabras, la virtualización divide su hardware físico en partes más pequeñas que pueden ser utilizadas por las máquinas virtuales, esto lo hace el Hipervisor, que utiliza funciones del Kernel expuestas para exponer el hardware que ha reservado para la VM.

  

Si no es posible, ¿por qué no?

Es posible que exista un error en el hipervisor para escapar de los bordes virtuales que ha configurado para su VPS.

Otros procesos han usado anteriormente ejemplos simples como su malloc() para escapar de cuentas de usuarios con privilegios bajos en Linux.

Esto es básicamente lo que es, pero más complejo, si puedes escapar de tu VM, serás el usuario de tu hipervisor y, por lo tanto, tendrás acceso a todo lo que esté en el otro VPS alojado en el mismo hipervisor.

  

Si es posible, ¿cómo podemos evitar que suceda?

Como usuario final, no hay mucho que pueda hacer, excepto vigilar sitios web como packetstorm y cvedetails para vigilar los servicios vulnerables.

Un ejemplo tonto son los ataques recientes a arquitecturas de CPU que permitieron el acceso a la memoria protegida, entre otras cosas. Si alguien ejecuta ese tipo de ataque en un VPS en el que estás, también pueden acceder a la memoria RAM que usa tu VPS.

Lo único que puede hacer es esperar un parche y cambiar toda su información confidencial (contraseñas, claves, ...) después, ya que pueden haber estado en la memoria y comprometerse.

    
respondido por el Nomad 19.06.2018 - 18:40
fuente
4
  

La función C malloc proporciona un bloque de memoria con valores indeterminados (que dependen del usuario anterior de este bloque de memoria)

Solo en el uso anterior dentro de ese programa , por las razones que explicaré.

  

¿Sería posible explotar este hecho para crear un programa en C que repetidamente malloc y liberar memoria y registrar valores de memoria encontrados para detectar datos importantes de otros usuarios como contraseñas, etc.?

No.

Cuando un proceso solicita una porción de memoria del kernel, esa memoria se entrega vacía (se pone a cero). Una vez que un proceso haya recibido esa memoria, lo dividirá y reutilizará partes de él para las llamadas individuales malloc() . La mayoría de las implementaciones de malloc() no vuelven a cero la memoria entre usos, y aquí es donde provienen los "valores indeterminados" a los que se refiere.

Un programa que funcionó de la manera que usted describió no encontraría nada interesante. A lo sumo, podría encontrar algunos de sus propios datos en la memoria, pero no encontraría datos de otros procesos o de otros usuarios.

    
respondido por el duskwuff 19.06.2018 - 22:57
fuente

Lea otras preguntas en las etiquetas