Administración del montón y del corazón - ¿Por qué los datos de usuario y las contraseñas se guardan en la memoria?

4

Si comprendo correctamente la vulnerabilidad, solo un atacante puede recuperar el montón del proceso de OpenSSL (o parte de esto, según el tipo de asignación de memoria que se use). Entonces, ¿cómo es que el proceso OpenSSL guarda en la memoria lo que ha cifrado / descifrado previamente?

Parece obvio que, dada la sensibilidad del proceso OpenSSL, no debe haber ningún dato guardado en la memoria por más tiempo que lo estrictamente necesario, algo así como un principio de "necesidad de saber" para garantizar que el impacto se mantenga a un nivel razonable. nivel si el proceso está comprometido.

Comprendo que estos datos confidenciales se deben poner en la memoria para que se comuniquen a la capa / servicio anterior (por ejemplo, el servidor http en la mayoría de los casos), pero una vez que se hayan transmitido, se deben eliminar de inmediato, ¿no?

    
pregunta ack__ 12.04.2014 - 14:31
fuente

2 respuestas

2

En C, cuando termines de usar la memoria en el montón, la liberas () que la pone a disposición para su uso en otros lugares. free () no borra / borra la memoria a todos los ceros, por lo que la próxima persona que llama que solicita esa memoria obtendrá la memoria con su contenido sensible aún intacto, a menos que la ponga en cero explícitamente antes de llamar a free (). Los programas también suelen implementar sus propias estructuras de memoria / búfer (por ejemplo, BUF_MEM de OpenSSL) que, dependiendo de su implementación, pueden o no pueden poner a cero la memoria después de su uso.

Es correcto que los datos confidenciales solo deben vivir en la memoria mientras exista la necesidad de saber. Es una buena práctica poner a cero la memoria sensible en estos casos.

No puedo decir con seguridad en el caso de OpenSSL ya que no he echado un vistazo en profundidad al código, pero podría haber estado leyendo de la memoria que aún se necesitaba o de la que ya no se necesitaba. pero no cero, o una combinación de los dos.

Más lecturas:

respondido por el Mike 14.04.2014 - 15:06
fuente
0

Los datos que pueden recuperar serán datos que hayan pasado por el cifrado / descifrado de openssls y, por lo tanto, se almacenarán en la memoria de openssl

    
respondido por el Sam Aldis 12.04.2014 - 16:03
fuente

Lea otras preguntas en las etiquetas