¿Las vulnerabilidades de desbordamiento del búfer siguen siendo un método práctico de intrusión?

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.

¿Depende de qué componente del sistema estás atacando?

  1. En mi mundo de desarrollo de sitios web, las vulnerabilidades de desbordamiento de búfer son muy raras. es decir, es muy poco probable que el código que conforma el sitio web tenga vulnerabilidades de desbordamiento de búfer.
  2. Las vulnerabilidades de desbordamiento del búfer solo son posibles en componentes de software escritos en ciertos lenguajes de programación (por ejemplo, C / C ++)

    No son posibles en componentes escritos en lenguajes como Java, C #, Python, Ruby, PHP, …

  3. Sin embargo, siguen siendo un método de intrusión viable si se dirige a un sistema operativo o servidor de aplicaciones que todavía se escriben normalmente en C / C ++.

More Interesting

La piratería no siempre es un delito. ¿Lo es?

¿Es la MacBook la mejor computadora portátil para aprender a hackear y descifrar?

¿Por qué Kali Linux es tan apreciado y ampliamente utilizado por los hackers?

¿Cuál es la forma más sencilla de ver Netflix en Canadá? Actualmente tengo un Apple TV (tercera generación) y estoy pensando en comprar un Google Chromecast.

¿Qué es la detección / captura de paquetes y cómo funciona?

¿Qué problema resolverías en un libro electrónico y publicando metadatos hackathon?

¿Por qué debería usar Arch Linux para hackear?

¿Qué información se ha publicado de Dropbox sobre el hack de su servicio en 2014-10-14?

¿Por qué los sitios web con una longitud máxima de caracteres para las contraseñas no siempre restringen la longitud del campo de entrada a su máximo?

Ciberguerra: ¿Es serio el gobierno de los EE. UU. Cuando afirma en la "Estrategia internacional para el ciberespacio" recientemente publicada que "Cuando esté justificado, Estados Unidos responderá a los actos hostiles en el ciberespacio como lo haría con cualquier otra amenaza para nuestro país"?

¿Cómo se convierte uno en hacker?

¿Cuál es la mejor manera de asegurar un sistema operativo que resista el análisis forense?

¿Es un DOS (sistema operado por disco) una marca más fácil para un hacker que, por ejemplo, un sistema escrito en, digamos, Java?

¿Qué canción debo aprender a tocar en el piano?

¿Cómo están debilitando los ciberataques nuestra economía?