¿Qué es el desbordamiento de memoria? ¿Qué es la memoria virtual?
En términos generales, desbordar el búfer con datos aleatorios solo hará que el programa genere errores de "fallo de segmentación" y no podrá usarse con fines de ataque. El método más común es escribir el código de máquina hexadecimal que desea ejecutar en el búfer de desbordamiento y usar el desbordamiento para sobrescribir la dirección de retorno normal del programa, apuntando la dirección de retorno del programa al comienzo del búfer de desbordamiento, ejecutando así otros comandos.
Puede ejecutar comandos arbitrarios o sobrescribir archivos del sistema a través de vulnerabilidades de desbordamiento de búfer, pero generalmente los desbordamientos de búfer se utilizan para ejecutar shells. Si el programa con vulnerabilidades de desbordamiento de búfer pertenece a los programas raíz y suid, el atacante puede hacerlo. De este modo puede obtener un shell con privilegios de root, obteniendo así el control supremo sobre el sistema.
Los ataques de "desbordamiento de búfer" aparentemente aprovechan los descuidos de programación. Las vulnerabilidades de desbordamiento de búfer en programas suid que pertenecen al root son muy peligrosas.
El sistema operativo Windows utiliza memoria virtual para administrar dinámicamente el archivo de intercambio en tiempo de ejecución. Para proporcionar una capacidad de memoria mayor que la memoria física real, el sistema operativo Windows ocupa una parte del disco duro como memoria virtual. Cuando la CPU tiene una solicitud, primero lee la información en la memoria. Cuando la capacidad de la memoria es insuficiente, Windows escribe datos que deben almacenarse temporalmente en el disco duro. Por lo tanto, el tamaño de la memoria de la computadora es igual a la capacidad real de la memoria física más el tamaño del "archivo de paginación" (es decir, el archivo de intercambio). Si es necesario, el "archivo de intercambio" utilizará todo el espacio disponible en el disco duro. Si es posible, debería utilizar este conjunto de funciones tanto como sea posible.