Hay dos técnicas principales para mitigar los desbordamientos de búfer basados en la pila.
La primera técnica es atacar el problema desde la raíz. Los desbordamientos de búfer ocurren cuando un programa intenta escribir fuera de los límites de una estructura de datos. La forma más efectiva de detener un desbordamiento de búfer es detener para que esto no ocurra. Use un lenguaje de programación, ya sea Java, Python, Ruby, que administrará la memoria por usted. Si debe usar C, asegúrese de realizar las comprobaciones adecuadas antes de escribir en un búfer.
La segunda técnica consiste en mitigar el daño que puede causar un desbordamiento de búfer. Técnicas como los canarios de pila, DEP y ASLR entra en esta categoría. Trabajan para limitar el daño que puede causar un desbordamiento del búfer al dificultar que un atacante ejecute un código arbitrario después de un desbordamiento. Tales técnicas pueden ser derrotadas. Para obtener más información sobre DEP y ASLR, consulte esta pregunta .