¿Puede acceder a la memoria de otro programa con malloc? [duplicar]

4

Sé que esto depende mucho del sistema, pero digamos que tenemos un programa, llamémoslo Programa A. Contiene datos confidenciales en los que un hacker quiere ingresar. Uno podría simplemente cerrar el Programa A y ejecutar el Programa B que asigna mucha memoria ( malloc ). Ahora, como malloc no suele borrar la memoria que asigna, es posible que tenga acceso a la memoria del Programa A.

Por supuesto, esto requeriría una gran cantidad de inspección de volcados hexadecimales e ingeniería inversa, pero ¿es esto posible? ¿Existen ciertas medidas que un diseñador de programas podría tomar al diseñar una aplicación para garantizar que esto no pueda suceder?

    
pregunta Chris Smith 07.08.2016 - 05:29
fuente

2 respuestas

2

Para que ese hack sea razonablemente posible, el hacker ya debería tener acceso completo al programa con información confidencial y a su sistema, lo que significa que también tendría acceso directo a los datos utilizados por el programa sensible. También implica que no se asigna ni se libera ninguna otra memoria entre ambas instancias o de lo contrario sería imposible planificar cómo acceder a los segmentos de memoria adecuados.

La solución para protegerse es, por lo tanto, proteger su sistema en cada capa. Esto significa que solo debe instalar software confiable, tener una buena protección antivirus (si corresponde), un buen firewall, administradores confiables y limitar el acceso al sistema tanto como sea razonablemente posible.

Si desea evitar que otro programa pueda reasignar los mismos segmentos de una manera predecible, podría usar la aleatoriedad en sus asignaciones de memoria, pero eso aumentaría seriamente el riesgo de implementar errores de software que serían más difíciles de solucionar, sin hacer una diferencia práctica debido a los puntos mencionados anteriormente.

    
respondido por el Julie Pelletier 07.08.2016 - 07:11
fuente
0

Tenga en cuenta que malloc utiliza las funciones de asignación de memoria del sistema operativo para obtener grandes bloques de memoria (por ejemplo, VirtualAlloc, sbrk, mmap) y luego entrega bloques más pequeños a quienes llaman malloc. Las funciones del sistema operativo que proporcionan la memoria a un proceso pondrán a cero la memoria antes de dar acceso al proceso, por lo que, salvo un error en el sistema operativo, esto no es un problema.

    
respondido por el Swashbuckler 07.08.2016 - 18:30
fuente

Lea otras preguntas en las etiquetas