Cómo resolver el problema de desbordamiento de memoria de la pila de LINUX
Cuantas menos puertas y ventanas tenga en su casa, menos formas tendrán los intrusos de entrar. …….
Debido a que un desbordamiento del búfer es un problema de programación, solo se puede resolver reparando el código del programa dañado. Si no tiene el código fuente, se puede ver a partir del principio del "ataque de desbordamiento de pila" anterior que para prevenir tales ataques, podemos:
1) Verificar cuidadosamente si hay un desbordamiento Al abrir el programa, no permita que los datos desborden el búfer. Esto es muy difícil debido a la programación y los lenguajes de programación, y no es adecuado para una gran cantidad de programas que ya están en uso;
2) Use un compilador que pueda verificar si hay desbordamiento de pila o agregue algún tipo de símbolo al programa, para garantizar que los desbordamientos causados por piratas informáticos estén prohibidos al ejecutar el programa.
3) Es una buena idea consultar con frecuencia los sitios web de los proveedores de sistemas operativos y aplicaciones, y descargar y aplicar parches tan pronto como los encuentre. Esta es la mejor manera. Pero los administradores del sistema siempre deben estar un paso detrás de los atacantes y eliminar el software en cuestión del sistema si es opcional o incluso temporal. Como otro ejemplo, cuantas menos puertas y ventanas tenga una casa, menos formas tendrán los intrusos de entrar.
------------------------------------------- -------------------------------------------------- ------------------------------------------------------
char buf[3];
memset(buf,0x55,10);
Este programa tiene un desbordamiento
Acceso a un bloque de datos está fuera del rango de la dirección de ese bloque
======================== ======== === ================================================= = p>
Una herramienta de detección
Valgrind es una herramienta de depuración de memoria para programas Linux (admite x86, x86_64 y ppc32). Compila programas binarios, monitorea el uso de la memoria (malloc y free en C, y new y delete en C++) y encuentra pérdidas de memoria.
La utilidad Memcheck incluida con Valgrind busca los siguientes errores del programa:
Uso de memoria no inicializada
Lectura/escritura de memoria una vez liberada. Usando memoria no inicializada (Usando memoria no inicializada)
Leer/escribir el final del bloque malloc'd
Acceso ilegal a la pila (lectura/escritura en el área incorrecta de la pila)
Usar memoria no inicializada (Usar memoria no inicializada)
Usar memoria después de que se haya liberado la memoria)
En la pila Escribir en un área inapropiada)
Si el espacio solicitado se ha liberado (pérdida de memoria: el puntero apunta al bloque mal asignado)