Sunteți pe pagina 1din 4

1

Desbordamiento de buffer: Explotando vulnerabilidades


Autores: Hilmer Meja y Yeimi Barros Corporacin Universitaria Americana Hilmermejia89@gmail.com, yeimibarros@gmail.com

ResumenEn este trabajo se realiza una investigacin a cerca de los ataques de vulnerabilidades en los sistemas, enfocndonos de manera particular en el llamado desbordamiento de buffer, especificando como base el concepto de este ataque y cada una de sus caractersticas, entre otros aspectos, que ampliaran de manera vers los conocimientos en el rea de seguridad de redes y que se hacen necesarios para abordar, complementar y afianzar este tema de manera clara. Este documento puede interpretarse como un resumen de las principales caractersticas, aplicabilidad, y daos que pueden causar los llamados ataques informticos en el entorno actual.

Durante mucho tiempo se ha reconocido a los ataques Informticos como las principales amenazas para los sistemas de informacin, existiendo gran cantidad de ataques externos, dentro de los que se clasifican ataques de red, ataques a travs de aplicaciones y ataques de Denegacin de Servicio (DoS). Este trabajo de investigacin se enfatiza en los ataques de aplicaciones, ms exactamente en el llamado desbordamiento de buffer, que representa un mecanismo de ataque muy comn en sistemas diseados con vulnerabilidades por prcticas de mala programacin y que actualmente se ha convertido en uno de los problemas ms graves de seguridad.

Abstract--- In this paper makes an investigation into the attacks vulnerabilities in systems, focusing in particular on the so-called buffer overflow, specifying the basis of the concept of this attack and each of its features, among other things, that extend so you see the knowledge in the area of network security and that are necessary to deal with, complement and reinforce this issue clearly. This document can be interpreted as a summary of the main characteristics, applicability, and damage that can cause so-called cyber attacks in the current environment.

II. DESBORDAMIENTO DE BUFFER Y LENGUAJES DE


PROGRAMACIN

A. Iniciando El desbordamiento Buffer El desbordamiento de buffer lleg a hacerse notorio desde 1988, cuando el gusano Morris se aprovech de una vulnerabilidad de desbordamiento de bfer, los ataques causados por desbordamiento de bfer continuarn siendo las mayores amenazas a la seguridad informtica. Como un exploit tradicional, el desbordamiento de bfer permite a los atacantes inyectar cdigo malicioso en la aplicacin en tiempo de ejecucin. Estos cdigos inyectados pueden ayudar a los atacantes a tener el privilegio de acceso de la mquina de forma maliciosa. A pesar de desbordamiento de bfer ha sido intensamente estudiado y los investigadores han propuesto varias tcnicas de mitigacin, sigue siendo la amenaza ms importante en la actualidad. De acuerdo con las estadsticas del centro de coordinacin CERT, el nmero de vulnerabilidades identificadas y catalogadas se incrementaron en un 212% entre los aos 2004-2007. La existencia de vulnerabilidades de desbordamiento de bfer hace que el sistema sea susceptible a los gusanos

Palabras Claves Bfer, Stacks, Kernel, Bajo nivel, Alto nivel, Aplicacin, Desbordamiento, DoS, Red, Bugs, x86, SPARC, MIPS, BOVD, BOVP, BOVC, Parche.

I. INTRODUCTION

termino seguridad abarca una serie de conceptos muy amplios desde los diferentes campos o reas de aplicacin, y en los sistemas de informacin no existe excepcin; a nivel de seguridad informtica no se puede obviar este principio, cada vez los sistemas son ms hbiles, dinmicos, ms sencillos para el usuario y por ende debe ser ms seguros, a medida que se avanza en seguridad de la informacin, en desarrollar aplicaciones ms estables, se presentan tambin mecanismos , practicas, y aplicaciones que tienen como nico objetivo sobrepasar los lmites de seguridad y explotar las vulnerabilidades presentes en algunos sistemas.
L

2 de Internet y la denegacin de servicios (DDoS) que pueden causar grandes impactos sociales y financieros. [1] B. Los lenguajes de programacin Generalmente se ha designado que los ataques de desbordamiento de bfer van asociados a los lenguajes de bajo nivel, ms exactamente a problemas presentes en su programacin, el motivo radica en que tanto como los datos de usuario y la informacin del control de flujo del programa se mezclan en beneficio del desempeo, y este tipo de lenguajes de bajo nivel permiten el acceso a la memoria de aplicacin de forma directa. De forma general los dos lenguajes ms afectados por el desbordamiento de buffer son C, C++ y lenguaje Ensamblador. En modo conceptual, un desbordamiento de Bfer ocurre cuando una aplicacin o programa permite la entrada de escritura ms all del final del Bfer asignado, esto afecta a muchos sistemas operativos, como Windows, Linux o Solaris, y a plataformas como x86, SPARC, Motorola o MIPS. Pero tambin influye en cualquier parte del sistema, ya sea el kernel o un programa de usuario. Sin embargo hay varios problemas asociados que a menudo tienen el mismo efecto. El desbordamiento de Bfer tiene un efecto amplio, este puede provocar desde la cada del sistema hasta la apropiacin completa del control de la aplicacin por parte de la persona atacante, si existiera el hecho de que la aplicacin se ejecuta como usuario de alto nivel, representara riesgos an mayores ya que el atacante tendra el control de todo el sistema operativo y tambin de los usuarios que hayan iniciado sesin o la iniciarn en un futuro. Si la aplicacin afectada fuera un servicio de red, el resultado del error podra llegar a ser un gusano. Aunque se han implementado mejores prcticas de programacin con la finalidad de evitar desbordamientos del Bfer, aun se presentan con frecuencia informes de desbordamientos del Bfer en muchos tipos de aplicaciones. C. Bugs La Prctica de la programacin inadecuada del software siempre llevar a los bugs. Estas son las vulnerabilidades ms importantes, cuando se descubren, permiten ejecutar comandos no autorizados, obtener cdigo fuente de pginas dinmicas, hacer que un servicio no est operativo, tomar el control de la mquina, etc. El ms conocido e interesante de cara a los exploits es el desbordamiento de bfer. Los errores de programacin que generalmente causan el desbordamiento de buffer son: Combinaciones no esperadas: generalmente los programas son construidos usando muchas capas de cdigo, todas las capas se colocan encima del S.O., entonces un mal diseo de una de las capas podra causar entradas pertenecientes a la capa superior de la aplicacin sea mandada de forma directa al S.O. y ejecutado. Condiciones de carrera: es el proceso en el que dos o mas procesos leen o escriben en un rea compartida y el resultado depende de los instantes de ejecucin de cada uno, cuando ocurre esto existe un intervalo de tiempo en el que el atacante puede acceder al sistema, obtener privilegios y pasar por encima de la seguridad de este. Entradas anormales: se podra afirmar que la mayora de programas o aplicaciones manejan parmetros o valores suministrados como entradas validas, si un programador no considera un tipo de entrada que el programa no puede manejar, entonces ocasionar error en los datos de la aplicacin. D. Stack smashing El stack smashing o Desbordamiento de pila constituye uno de los errores ms cometidos y conocidos, la manera de funcionamiento de este error consiste en que algunas implementaciones de C es posible corromper la pila de ejecucin de un programa escribiendo ms all de los lmites de un array declarado auto en una funcin; esto puede causar que la direccin de retorno de dicha funcin sea una direccin aleatoria. Adems, unido a permisos de los ficheros ejecutables en Unix (principalmente a los bits de SetUID y SetGID), hace que el sistema operativo pueda otorgar acceso root a usuarios sin privilegios. El problema reside en los ficheros setuidados y setgidados; cuando alguien los ejecuta, est trabajando con los privilegios de quien los cre, y todo lo que ejecute lo hace con esos privilegios. Incluido el cdigo que se ha insertado en la direccin de retorno de la funcin problemtica. Si este cdigo es el de un intrprete de comandos y el fichero pertenece al administrador, el atacante consigue ejecutar un shell con privilegios de root.[5] E. Patrn de ataque del desbordamiento de buffer Anteriormente el desbordamiento de buffer representaba una de las formas ms comunes de vulnerabilidad a nivel de seguridad informtica por parte de los sistemas informticos. Cuando se ejecuta un programa, se aade a la pila de ejecucin del sistema un registro de activacin, cada registro de activacin contiene la direccin de vuelta cuando finaliza el programa o aplicacin y la informacin de cualquier variable y los buffer locales.

En ciertos programas, una entrada de usuario excesivamente larga puede causar saturacin de buffer interno. La saturacin o desbordamiento de buffer puede reescribir las variables locales antes mencionadas, el puntero de retorno asi como otras particiones de la memoria. Entonces se hace necesario implementar mecanismos de control para mitigar el desbordamiento de buffer en el hardware de la CPU. Otra opcin sera trabajar en mquinas virtuales como java, ya que trabaja con mecanismos sandbox, que virtualizan el S.O. protegiendo la pila. Un atacante puede entonces reconstruir la entrada de usuario para cambiar el puntero de retorno y volver a acceder a la aplicacin, con los mismos privilegios de los que dispona la aplicacin original. [2] F. Exploits Vs. Desbordamiento de Buffer Dada la cantidad de conceptos que existen sobre desbordamiento de bfer, se hace necesario relacionar el concepto de exploit a este tema. Los desbordamientos de memoria son un tipo especfico de la vulnerabilidad y el proceso de aprovechar o utilizar esta vulnerabilidad para penetrar en un sistema vulnerable se podra llamar "la explotacin de un sistema". Por otra parte los exploits son programas que automticamente ponen a prueba la vulnerabilidad y en muchos casos intentan aprovechar esta vulnerabilidad mediante la ejecucin de cdigo. Si la vulnerabilidad es una denegacin de servicio, se puede decir que fue un desbordamiento de bfer explotable de forma remota, entonces el exploit tendra la intencin de invadir el error de un blanco vulnerable y generar un shell de conexin al sistema atacando. G. Seguridad El problema para la seguridad nace cuando este desbordamiento de buffer es provocado intencionalmente por alguien mediante envo de datos que incluyen porciones de cdigo, calculando la cantidad de datos para poder predeterminar cual es el sobrante que se va a sobreescribir y donde. Provocado el desbordamiento, contienen una instruccin que apunta a una posicin de memoria distinta, donde se encuentra el cdigo ejecutable enviado por el atacante. El programa, inducido a funcionar anormalmente por la prdida de datos causada por el desbordamiento, ejecutar el cdigo enviado por el atacante. El desbordamiento de buffer es un problema de cdigo defectuoso, por lo tanto como usuarios nada podemos hacer para evitarlo (salvo que adems de usuarios seamos expertos programadores, y dispongamos del cdigo fuente de la aplicacin que sufre el desbordamiento). En realidad el nico remedio es estar informado de los programas que sufren estos problemas, y tener el software actualizado.

Existen algunos medios para evitar que el cdigo maligno se ejecute sin permiso alguno, uno de los ms efectivos es identificar las reas de memoria para asegurarse que lo que se ejecute sea efectivamente propio. En la memoria solo se almacenan dos tipos de elementos: Datos: algo que puede leerse o escribirse Cdigo ejecutable: algo que puede realizar tareas Esto reduce la cantidad de trabajo que debe realizarse para minimizar el riesgo, pero requiere de generar nuevas formas de almacenamiento de elementos en la memoria. Cuando una vulnerabilidad de desbordamiento de buffer nueva es explotada por primera vez, es un reto fundamental para el diagnstico de la vulnerabilidad. Los resultados esperados del diagnstico de la esta vulnerabilidad del desbordamiento incluyen: 1 Cul buffer fue desbordado? 2 - En qu condiciones el buffer se desbord? Existen muchos programas vulnerables al desbordamiento de memoria motivado por varias situaciones del mundo real. Un campo entero de la entrada del usuario puede provocar el desbordamiento de buffer, y este desbordamiento de buffer puede suceder cuando el entero es muy grande. Actualmente, este proceso de diagnstico se realiza manualmente por ingenieros de seguridad, el cual es lento, Caro y propenso a errores. Teniendo en cuenta los resultados del diagnstico de vulnerabilidad automtica, se puede realizar la generacin de la firma exacta y generacin del parche automticamente y de manera eficiente. As el diagnstico Automtico de la vulnerabilidad puede beneficiar a todo el software de seguridad de la investigacin. [1] Primera Instancia del trabajo de exploit Detencin de vulnerabilidad Diagnostico automtico de la vulnerabilidad Proteccin automtica de la vulnerabilidad del software: Generacin automtica de la firma o generacin automtica del parche FIGURA 1. Diagnostico automtico de vulnerabilidad en la investigacin del software de seguridad.

4 El diagnostico automtico de las vulnerabilidades del desbordamiento de buffer es importante para permitir las respuestas de seguridad apropiadas para defenderse de los ataques desde el primer momento, como la creacin de filtros de entrada que tendr como funcin filtrar todas las acciones posteriores del desbordamiento de buffer, y que la generacin automtica de parches sea ms eficaz. Desafortunadamente en estos escenarios en que no se tiene acceso al cdigo fuente: la defensa debe estar preparado a partir de solo para el programa binario vulnerable y un exploit simple. Estos escenarios no asumen el acceso al cdigo, porque muchas amenazas se desarrollan rpidamente y no hay tiempo para que un usuario final contacte al desarrollador, estas defensas deben estar preparados de inmediato, por otra parte, cuando la aplicacin es legal o un software actual, que tiende a utilizar bibliotecas de terceros, o cuando los segmentos de los programas estn escritos en cdigo ensamblador directamente, el acceso al cdigo no es tan accesible. Por todas estas razones se debe dirigir el programa vulnerable en programa binario. H. BOVD, BOVP Y BOVC En el problema de diagnstico automtico de la vulnerabilidad de desbordamiento de bfer (BOVD), se presenta un desbordamiento de bfer del programa y un Exploit. El objetivo es encontrar el programa vulnerable, el punto vulnerabilidad de desbordamiento de bfer (BOVP) ,por qu el programa es vulnerable, y la condicin de vulnerabilidad de desbordamiento de bfer (BOVC). El ataque de desbordamiento de bfer se produce por sobrescribir algunos datos importantes, por ejemplo, la direccin, los punteros, las funciones, etc, se utiliza la instruccin que realiza la escritura maliciosa para determinar la ubicacin de la vulnerabilidad de determinado programa, Cul es el BOVP. Basados en la observacin de que los ataques de desbordamiento de bfer suceden cuando el tamao del bfer de destino es ms pequeo que el nmero total de operaciones de escritura despus de los procesos de copia de datos si los ataques de desbordamiento de bfer pasa a travs de un procedimiento, el BOVC contiene la informacin de tamao de bfer de destino, el nmero total e escritura de la informacin y la forma en que el usuario introduce estn relacionados con ellos sistemas menos estables y con riesgos de niveles altos en cuanto a fallas de seguridad se refiere. Las distintas tcnicas de vulnerabilidad de desbordamiento de buffer, exploits, y desbordamiento de pilas pueden conllevar a amenazas de mayor magnitud, por tal razn se deben mejorar las prcticas de programacin y polticas de seguridad que controlen y eviten riesgos, amenazas o explotacin de vulnerabilidades presentes. REFERENCES
[1] [2] [3] [4] [5] J, Zheng, Buffer Overflow Vulnerability Diagnosis for Commodity Software, ProQuest, 2008. J, Areitio Bertoln, Seguridad de la informacin redes, informtica y sistemas de informacin:, Paraninfo, 2008. Acissi, Seguridad informatica. Ethical hacking. Conocer el ataque si, Ediciones ENI, 2006 James C. Foster, Buuffer Overflow attacks: Detect, Exploit, Prevent, Syngress, 2005. Programas seguros, inseguros y nocivos, RedIris. Available: http://www.rediris.es/cert/doc/unixsec/node11.html (URL)

III. CONCLUSIN El desbordamiento de buffer siempre ha representado una de las principales amenazas o vulnerabilidades en los sistemas informticos, y la principal causa reside en la mala prctica de programacin, ya sea por parte de los desarrolladores o el lenguaje utilizado de forma incorrecta, esto conlleva a

S-ar putea să vă placă și