Cómo prevenir los ataques de desbordamiento de buffer

Escrito por hobie anthony | Traducido por daniela laura arjones
  • Comparte
  • Twittea
  • Comparte
  • Pin
  • E-mail
Cómo prevenir los ataques de desbordamiento de buffer
Los ataques de desbordamiento de pila hacen que los sistemas derramen datos, provocando el caos. (Ablestock.com/AbleStock.com/Getty Images)

Los ataques de desbordamiento de búfer son una forma común de ataque de un hacker para causar caos en un sistema. Hay un montón de ataques de desbordamiento, que son raros, y ataques basados en pila, que erróneamente restablecen el límite de memoria para una pila, haciendo que se desborde. El desbordamiento mueve los datos a otros búferes, corrompen o sobrescriben los datos válidos allí, lo que puede causar una cascada de búferes dañados, similares a una cascada de copas de champán desbordantes. Para evitar ataques de desbordamiento de búfer, tendrás que tener un conocimiento experto de programación informática, acceso al código en cuestión y el tiempo y paciencia para peinar a través de páginas y páginas de código para implementar los cambios necesarios que protejan tus sistemas.

Nivel de dificultad:
Difícil

Otras personas están leyendo

Instrucciones

  1. 1

    Escribe el código de seguridad para evitar ataques de desbordamiento. En C, hay una serie de funciones de vulnerabilidad que los hackers pueden explotar para sobrellenar los búferes. Minimiza tu uso de strcpy (), strcat (), sprintf () y vsprintf (), que no se realiza comprobación de límites. Si es posible, evita usar gets (), que no especifica cuántos caracteres se van a leer y así dejan vulnerable tu código. Si utilizas scanf (), asegúrate de especificar un ancho para el formato %s para evitar desbordamientos.

  2. 2

    Revisa a ver si puedes utilizar trampolines para evitar desbordamiento de búfer. Desde que ocurre el desbordamiento de búfer en las pilas de memoria y no en el código, la solución más sencilla parece ser prevenir que tus pilas ejecuten cualquier código mediante la inserción de un pequeño fragmento de código para prohibir estas acciones. Esto es posible en Linux, pero es muy difícil. Sólo unos pocos compiladores utilizan los pequeños trozos de código llamados trampolines, que actúan como una barrera entre el código de llamada a una función y la función misma. Por lo tanto, si el código malicioso intenta reemplazar un búfer, el trampolín puede interceptar y neutralizar los intentos de los hackers.

  3. 3

    Implementa herramientas de compilación para darte advertencias cuando usas código que te deja vulnerable a los ataques. Algunas de estas herramientas va a generar código que prohíbe que personas ajenas tengan acceso a direcciones ilegales y apaguen código que intenta dicha ejecución. Productos como StackShield y StackGuard son una gran ayuda. StackSheild analizará la dirección de retorno de una función y la terminará en el caso de una irregularidad. StackGuard coloca una palabra canario en la dirección del remitente y comprueba si la palabra ha sido alterada, terminando una función cuando la tiene.

  4. 4

    Instala herramientas como libsafe para comprobar la seguridad de una manera dinámica, en tiempo de ejecución medio ambiente. Libsafe se ejecuta en Linux y comprueba la dirección más cercana de retorno de un marco de pila, entonces se asegura de que la dirección no se sobrescriba. Libsafe también reemplazará las funciones no seguras, como gets (), strcpy () y scanf ().

Consejos y advertencias

  • No todos estos métodos son una garantía de seguridad, y uno solo no va a resolver todos tus problemas. Continúa la escritura de código seguro y revisa tus sistemas de forma periódica para actualizar todas las medidas de seguridad.
  • Ten cuidado con libsafe, ya que no se puede calcular con precisión el tamaño de búfer asignado y no funcionará con programas compilados con la bandera puntero de marco para GCC.

No dejes de ver

Filtrar por:
  • Mostrar todos
  • Artículos
  • Galerías de fotos
  • Videos
Ordenar:
  • Más relevante
  • Más popular
  • Más reciente

No se encuentran artículos disponibles

No se encuentran slideshows disponibles

No se encuentran videos disponibles