Me pregunto por qué las contramedidas contra la inyección de código y los ataques de secuestro de flujo de control (por ejemplo, los desbordamientos de búfer basados en la pila y los desbordamientos de búfer basados en el montón) se implementan principalmente en software.
Ejemplos de contramedidas populares y ampliamente implementadas son:
- ASLR
- Pila de canarios
- Regiones de memoria no ejecutables
Pero, ¿por qué exactamente estas contramedidas no se implementan completamente en el hardware, o al menos son compatibles con el hardware? Dado que en la actualidad el hardware reconfigurable (por ejemplo, los FPGA) es asequible, este enfoque me parece perfectamente posible.
¿O existen contramedidas basadas en hardware? Y si es así, ¿alguien puede darme algunos ejemplos?