Programación Segura: Desbordamientos del Búfer

Revisión General del Desbordamiento del Búfer Durante mucho tiempo se ha reconocido que los desbordamientos del Búfer son un problema en lenguajes de bajo nivel. La esencia del problema es que los datos de usuario y la información de control de flujo del programa se mezclan en beneficio del desempeño, y los lenguajes de bajo nivel permiten acceso directo a la memoria de aplicación. C y C++ son los dos lenguajes más populares afectados por los desbordamientos del Búfer. En sentido estricto, ocurren desbordamiento del Búfer cuando un programa permite la entrada de escritura más allá del final del Búfer asigando, pero hay varios problemas asociados que a menudo tienen el mismo efecto; uno de los más interesantes consiste en los errores de cadena de formato, que se analizarán en “Problemas de cadena de formato” . Otra personificación del problema ocurre cuando se permite que un atacante escriba en una ubicación arbitraria de memoria fuera de una matriz en la aplicación, y aunque no se trata, de manera estricta, de un desbordamiento clásico del Búfer, también lo estudiaremos aquí. El efecto de un desbordamiento del Búfer es amplio, desde la caída del sistema hasta la apropiación completa del control de la aplicación por parte del atacante, y si la aplicación se ejecuta como usuario de alto nivel (raíz, administrador o sistema local), entonces el atacante entre sus manos el control de todo el sistema operativo y de todos los usuarios que hayan iniciado sesión o la iniciarán en el futuro. Si la aplicación en cuestión es un servicio de red, el resultado del error podría ser un gusano. El primer gusano bien conocido de Internet aprovechó un desbordamiento del servidor finger, y fue conocido como gusano finger de Robert T. Morris ( o sólo Morris). Aunque al parecer hemos aprendido a evitar desbordamientos del Búfer desde que uno casi colapsó Internet en 1998, aun vemos con frecuencia informes desbordamientos del Búfer en muchos tipos de software. Aunque podría pensarse que sólo programadores perezosos y descuidados serían víctimas de los desbordamientos del Búfer, el problema es complejo; muchas de las soluciones no son simples y cualquier persona que el escrito suficiente código C/C++ ha cometido, casi sin lugar a dudas, este error. Lenguajes afectados C el lenguaje que se usa con más frecuencia para crear desbordamientos del Búfer, seguido de cerca por C++. Es fácil crear desbordamientos del búfer cuando se escribe en ensamblador, porque no cuenta con ningún tipo de protección. Aunque inherentemente C++ es tan peligroso como C porque se trata de un superconjunto de éste, el uso cuidadoso de la Biblioteca Estándar de Plantillas (STL, Standar Template...

Leer Más

Siguenos!

O Puedes Subscribete

ANTES DE

SALIRTE ...

NO TE

ARREPENTIRÁS

!Gracias¡

NO OLVIDES NUESTRAS REDES SOCIALES