Absolutamente. Las medidas de seguridad a las que se refiere incluyen Prevención de ejecución de datos (DEP), Aleatorización de diseño de espacio de direcciones (ASLR), apilar canarios, etc. Estas tecnologías ciertamente hacen que la explotación sea más difícil, pero no imposible. Se omiten todo el tiempo, como lo muestra la cantidad de ataques de desbordamiento de búfer (montón y pila) que ocurren en la naturaleza incluso ahora.
Esto no quiere decir que estas defensas no tengan sentido, o que el desarrollo continuo en esta área sea inútil. Por lo menos, están aumentando el costo de desarrollar exploits.
Como nota final, he notado que la academia de nivel universitario y el público general de TI parecen pensar que los desbordamientos del búfer son el enemigo final de la seguridad, y que eliminarlos generará una Internet segura. En parte como resultado de las defensas de protección de memoria, hay una cantidad cada vez mayor de explotación de otros tipos de errores: desbordamientos de enteros, desreferencia de puntero nulo, errores sin uso, etc. Y todo eso es solo en el nivel de administración de memoria del sistema operativo. Conceptualmente, cualquier proceso que tome datos y actúe sobre ellos es susceptible de omitirse. Por lo tanto, tenemos cualquier cantidad de errores de inyección (SQL, XPATH, LDAP, etc.), secuencias de comandos entre sitios, referencia directa insegura a objetos, etc. Las buenas prácticas de codificación se centran en el comportamiento correcto en casos extremos, sin centrarse demasiado en ninguna clase particular de vulnerabilidad.
- ¿Qué hago cuando mi cuenta de Gmail ha sido pirateada (todo desapareció)?
- ¿Cuál es la mejor manera de aprender piratería para una competencia de Hackathon?
- ¿Cómo podemos evitar que otras personas pirateen nuestra cuenta?
- ¿Cómo puedo asegurar mi sitio de las inyecciones Havij SQL?
- Hackers: ¿Es posible hackear un sistema escolar y cambiar sus calificaciones?