ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE SISTEMAS
INGENIERÍA EN SISTEMAS INFORMÁTICOS Y DE
COMPUTACIÓN
SIC514 – TECNOLOGÍAS DE SEGURIDAD
BUFFER OVERFLOW
MARCO ALEJANDRO BOLAÑOS SALAZAR
NRO. UNICO: 200920063
FECHA DE ENTREGA: AGOSTO 14 DEL 2013
I
Contenido 1 Introducción ........................................................................................................................................................ II
2 Discusión de la Problemática .......................................................................................................................... II
3 Discusión de la Solución ................................................................................................................................. III
4 Contraste de la Problemática y la Solución .................................................................................................. III
5 Conclusiones finales ........................................................................................................................................ III
6 Referencias ....................................................................................................................................................... III
II
1 Introducción
En este ensayo vamos a tratar un problema llamado Buffer Overflow, muy común en programas tanto grandes
como pequeños, podremos conocer un poco más acerca de esto, principalmente respondiendo preguntas
básicas como: ¿Qué es buffer Overflow?, ¿Por qué se da este problema o vulnerabilidad?, ¿Cómo prevenir
esto?, que al terminar de leer el ensayo podemos contestarlas ya vamos a tener una perspectiva general de la
problemática, para con ello intentar plantear unas soluciones prácticas y posibles para poder evitar que estas
vulnerabilidades.
2 Discusión de la Problemática
Buffer Overflow es una vulnerabilidad comúnmente conocido como desbordamiento de pila, se da por que
ciertos datos ingresados por teclado invaden espacios de memoria que no le corresponden a ese tipo de datos,
es decir, se da cuando al momento de realizar un programa, sea este grande o pequeño, no validamos
correctamente el tamaño o longitud de una variable sea esta numérica o alfanumérica, permitiendo que al tener
un dato con mayor cantidad de tamaño este invada sitios de memoria que corresponden a otros procesos,
provocando errores en el funcionamiento del programa o del Sistema Operativo, estos problemas,
vulnerabilidades o bugs comúnmente no son reportados por la mayoría de personas así podemos observar 2
gráficas :
Figura 1 porcentaje calculado en 600 como 10.0 %. (Flores, 2012)
Figura 2. (Park and Lee, 2004)
Podemos observar que tanto en los años desde 1999 al 2006 no son reportados los casos de buffer Overflow
razón por la cual se debieron tener muchos problemas sin corregir debido a esto, así podemos ver que a partir
del año 2007 se ve un incremento relativamente enorme con respecto a los años anteriores, lo que resulta muy
beneficioso para todos al poder corregir esos errores oportunamente.
Este problema de buffer Overflow nos puede causar serios problemas sea personas comunes como grandes
corporaciones o países, un ejemplo lo podemos encontrar en un libro de Kevin Mitnick que nos dice: “explotó
una vulnerabilidad de desbordamiento de búfer en el sistema de programas - ufsrestore. Y eso, Zyklon dice, le
permitió obtener root en whitehouse.gov, así como el acceso al servidor de correo Casa Blanca y otros
sistemas de la red.” (Mitnick and Simon, 2005), como podemos ver en este ejemplo nos menciona la Casa
Blanca de los Estados Unidos de América, los que fueron atacados por desbordamiento de pila, así que
III
tenemos que tener en cuenta que se puede dar en todos los aspectos. Esta vulnerabilidad se puede explotar
para poder inyectar código malicioso en la memoria y a su vez que sea ejecutado en el computador.
3 Discusión de la Solución
Unas posibles soluciones para evitar estas vulnerabilidades, es una correcta validación de los datos por parte
de los programadores, para evitar que sobre pase el tamaño máximo, enviando mensajes de error cuando esto
suceda, también puede ser reportando estos errores a las empresas que desarrollaron el software para que
intenten corregir el problema lo más pronto posible, también a los jefes de las empresas que realicen una
correcta planificación para el desarrollo de un software para así evitar que se lo realice al apuro y con fallas.
Algunos problemas también se dan por problemas de hardware, ya que tal vez no trabaje de la manera
correcta el hardware con el software y al realizar cálculos puede causar errores más que por problema de
software por problemas de que por ejemplo el procesador no trabaje bien con operaciones de punto flotante, un
ejemplo claro que me comentaron en una conferencia llamada “PRIVACIDAD EN INTERNET”, dictada por Ola
Bini que nos comentó que un procesador Pentium III daba errores de Overflow debido a un error de hardware y
que por más que intentaban corregirle al software no podían porque era problema del microprocesador, así que
mañana también otra solución es hacer el uso de Open Hardware para que no exista esos problemas de
compatibilidad de procesamiento.
4 Contraste de la Problemática y la Solución
Como podemos observar este problema se da por errores de programación así que como planteamos en la
solución lo mejor sería programar correctamente validando los campos correspondientes, así evitamos que se
invada espacios de memoria que no pertenecen al programa, esa es una de las mejores soluciones como
podemos observar en las versiones de algunos programas que los utilizamos en nuestra vida diaria
5 Conclusiones finales
Podemos concluir que todos los programas están expuestos a esto debido a que son fallas que comúnmente
no se corrigen si los programas son desarrollados al apuro o con mucha presión, además de que no
necesariamente es error de software sino que también puede ser error de hardware, ya que para elaborar el
programa en algunos casos se necesita conocer la arquitectura del computador.
6 Referencias
Flores, D.A. (2012) 'El Futuro de los Ataques por Desbordamiento de Pila', vol. 1, no. 1.
Mitnick, K.D. and Simon, W.L. (2005) The Art of Intrusion: the real stories behind the exploits of hackers,
intruders, and deceivers, Indianapolis - Indiana: Wiley Publishing, Inc.
Park, Y.-J. and Lee, G. (2004) 'Proceedings of the 1st conference on Computing frontiers', New York, NY, USA.