Closed gwolf closed 3 years ago
Hola Diego, mi pregunta es: ¿La vulnerabilidad que se muestra solo afecta a que accede a otro espacio de memoria para asignar un sobrante o es posible hacer otras acciones como ver que existía en ese espacio de memoria?
Diego ¿Podrías compartir el libro o el enlace en donde obtenerlo? Por favor, me resulta bastante interesante el tema, igual me surgió una duda ¿Qué tan difícil es descubrir estos desbordamientos de buffer o cómo saber si soy vulnerable? De antemano gracias.
Muy buen tema compañero, y solo por curiosidad; a diferencia de "C", python o java que son lenguajes de programación mas populares ¿tienen manera de manejar el buffer overflow?
Hola Diego, mi pregunta es: ¿La vulnerabilidad que se muestra solo afecta a que accede a otro espacio de memoria para asignar un sobrante o es posible hacer otras acciones como ver que existía en ese espacio de memoria?
Efectivamente se podría checar que dato esta en esos espacios de memoria. En el ejemplo vimos que podías con C ver en que espacio de memoria estabas parado, ese mismo valor se puede después guardar en un apuntador y con el apuntador acceder al valor guardado. Sin embargo no le veo mucha utilidad ya que sería un byte o conjunto de bytes que no te dirían mucho a cerca del programa, lo más probable es que fuesen datos del funcionamiento del programa. Por eso se busca obtener un shell con privilegios de administrador, para poder acceder a cualquier archivo del sistema, hacerlo leyendo directamente los bytes en la pila sería algo muy dificil y poco practico.
Diego ¿Podrías compartir el libro o el enlace en donde obtenerlo? Por favor, me resulta bastante interesante el tema, igual me surgió una duda ¿Qué tan difícil es descubrir estos desbordamientos de buffer o cómo saber si soy vulnerable? De antemano gracias.
Link para el libro: https://repo.zenk-security.com/Magazine%20E-book/Hacking-%20The%20Art%20of%20Exploitation%20(2nd%20ed.%202008)%20-%20Erickson.pdf
En esta página esta el torrent para el ISO (para seguir los ejemplo del libro es más que recomendable bajarlo, de preferencia en una maquina virtual): https://nostarch.com/hackingCD
Respondiendo a tu pregunta:
Las formas en las que podrías evitar esto es en primera utilizar lenguajes que no permitan el desbordamiento por default (ej. Java, python). Por otro lado, si decides utilizar C hay maneras de evitar que tus buffers sean ejecutables, también es recomendable limitar el uso de funciones como strcpy, sprintf, strcat. Estas interactuan directamente con los buffers y algunas permiten copiar datos sin verificar el tamaño a donde se va a escribir. Hay alternativas a estas funciones (strlcpy, strlcat snprintf) que no son de la libreria estandar de C pero hacen el chequeo antes de pasar el dato. Por último realizar pruebas a tu programa identificando las entradas y escrituras en buffers para poder ver cuales son vulnerables.
Muy buen tema compañero, y solo por curiosidad; a diferencia de "C", python o java que son lenguajes de programación mas populares ¿tienen manera de manejar el buffer overflow?
Python y Java por default no permiten el desbordamiento. En C hay maneras de evitarlo, se pueden declara buffers no ejecutables así como utilizar funciones que no estén en la libreria estandar para evitar la escritura en buffers que no verifique el tamaño de los mismos.
La respuesta de arriba donde puse los links del libro te puede ayudar, ahi detallé un poco más este mismo tema.
Hola Diego, ¿podrías mencionar que otras funciones podrían ser vulnerables?, gracias
Abro este foro como un espacio de discusión para la exposición que preparó el alumno Diego Armenta, «Introducción a Buffer Overflows». El video está disponible en:
https://www.youtube.com/watch?v=RYIdX_sl4Ao
Además de participar aquí, les pido que llenen la pequña encuesta que está disponible en:
https://www.questionpro.com/t/ARiwuZkkdg