¿Qué tan seguras son las variables locales?

4

Estoy escribiendo un tipo de programa dinky en c que requiere que el usuario ingrese un nombre de usuario y contraseña. Sé que no es realmente necesario, pero me gusta pensar en el aspecto de seguridad de las cosas. Pise la contraseña antes de guardarla en un archivo, pero ¿es posible que otro programa encuentre la contraseña ingresada en la memoria durante el tiempo de ejecución? ¿Hay alguna diferencia si la contraseña se almacena en la pila en comparación con el montón? ¿Existe alguna vulnerabilidad inherente al devolver la contraseña de una función sin hash en lugar de hacerla hash tan pronto como se ingresa?

Lo siento si este es un tema un poco alejado, solo un estudiante curioso :)

    
pregunta Justin Sanders 20.03.2017 - 05:01
fuente

1 respuesta

5
  

¿es posible que otro programa encuentre la contraseña ingresada en la memoria durante el tiempo de ejecución?

Sí, si ese programa tiene permiso para mirar la memoria de su programa. (En Windows y Linux, eso significa que debe ejecutarse como su cuenta de usuario o un administrador)

Tenga en cuenta que si un programa se ejecuta como usted en Windows o Linux, en teoría podría ya obtener la contraseña (por ejemplo, al parecerse a su programa y pidiéndole la contraseña).

  

¿Hay alguna diferencia si la contraseña se almacena en la pila en comparación con el montón?

Puede ser un poco más difícil de encontrar en el montón, pero es posible encontrar de cualquier manera.

  

¿Existe alguna vulnerabilidad inherente al devolver la contraseña de una función sin hash en lugar de incluirla en hash tan pronto como se ingresa?

No de forma inherente, pero mientras más pasos haya entre la entrada de la contraseña y el hash, mayor será la probabilidad de que cometa un error y de alguna manera exponga la contraseña accidentalmente.

    
respondido por el immibis 20.03.2017 - 05:06
fuente

Lea otras preguntas en las etiquetas