ataque overflow

Upload: erick-blooregard-perez

Post on 20-Feb-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/24/2019 Ataque Overflow

    1/6

    BUFFER OVERFLOW ATTACKERICK PREZ ARGUELLOFERNANDO CAMPAA ROJAS

    I TERMINO 2015LENGUAJES DE PROGRAMACIN

    ESPOL

  • 7/24/2019 Ataque Overflow

    2/6

    1

    Ya estn por cumplirse 30 aos del primer ataque registrado y es an un

    tema de problemtica actual, pero, A qu nos referimos con esto? Sino, a la

    conocida sobrecarga de espacio asignado de memoria o en trminos un poco

    ms simple al desbordamiento de buffer (Buffer Overflow), en un ejemplo,

    almacenamos diez cosas en un espacio que solo da para seis de ellas, ms el

    restante va y ocupa otros cuatro espacios extras junto al que tenemos; son

    muchos los lenguajes de programacin que presentan esta problemtica, as

    tenemos a C y C++ como los ms conocidos en no realizar alguna

    comprobacin para evitarlo.

    Durante todo este tiempo ya numerosos investigadores han buscado frenar

    estos tipos de ataques y es as como ya se tiene sistemas operativos ms

    seguros, y de avanzados y ms robustos lenguajes de programacin, no

    obstante, esta vulnerabilidad sigue persistiendo. El alcanzar la prevencin o

    proteccin de estos sigue siendo un desafo para la seguridad informtica

    pero es as como ya se tiene algunas soluciones buscamos examinar yconocer en detalle lo que nos brinda.

    Pero antes de entrar en el enfoque principal hay que hablar un poco de

    historia, como se dijo antes, poco ms para cumplirse 30 aos era 1988

    cuando Robert T. Morris desarroll en 1988 el primer gusano que se

    autopropag por Internet utilizando un fallo de Buffer Overflow en los UNIX

    de esa pocas, llegando a ser miles los ordenadores que fueron infectados.

    Luego, en el 2001, el gusano Code Red se aprovech de un Buffer Overflow

    en el servidor web IIs de Microsoft que permita obtener un acceso como

    administrador del sistema. Y entre otros ataques tambin se conoce que en2003 apareci SQLSlammer que permita la ejecucin de cdigo arbitrario en

    servidores SQL Server 200 (Coutinho, 2012).

    Y as es como existieron an ms casos que se aprovecharon de este

    desbordamiento, pero como entender bien sobre esta problemtica y ms

    aun de sus soluciones sin primero entrar en detalle un poco ms tcnico y es

    as como primero definimos al nombrado Buffer Overflow como una

    vulnerabilidad que ocurre cuando se copia una cantidad de datos sobre un

    rea que no es lo suficientemente grande logrando as que se sobrescriba

    otras zonas de memoria. Estos fallos, productos de una aplicacin que nocuenta con los controles de seguridad en su cdigo, son utilizados para lograr

    ejecutar cdigo arbitrario en un equipo, de manera que en muchos casos

    logran tomar control del equipo vctima o ejecutar un ataque de Denegacin

    de Servicios (DoS) (Prez, 2014).

    Debido a la naturaleza de la memoria es como entonces podemos distinguir

    dos tipos primarios de Buffer Overflow siendo el primero el ocurrido en tiempo

    de compilacin o tambin conocido como desbordamiento de Stack (Stack

    Overflow) y el segundo que ocurre durante el tiempo de ejecucin o

    desbordamiento de Heap (Heap Overflow) siendo el primero el de mayorocurrencia (Flores, 2012). Diferenciando definimos entonces que: Heap

  • 7/24/2019 Ataque Overflow

    3/6

    2

    overflow, como su nombre indica es el desbordamiento producido en un rea

    de memoria conocida como Heap que es reservada nicamente de manera

    dinmicamente y que puede ser sobrescrita, en situaciones en la que no se

    verifica el tamao de los datos que se copian a ella (Lerch, 2007), aunque

    tienden a ser ms difciles de realizar puede ser peligroso debido a que

    pueden modificar estructuras de datos internas. Mientras que un Stack

    Overflow, es el desbordamiento ms comn debido a la estructura LIFO (Last

    In First Out) en que se presenta la memoria, y es aqu donde se encuentra

    almacenado las direcciones de retornos de las funciones, las variables locales

    y los parmetros de funciones (Gervacio & De Len, 2015) lo cual es

    aprovechado para producirse el ataque.

    Pero entonces, Cmo se da el ataque? Lo que se busca a travs de

    operaciones que manipulan memoria desbordar un buffer con el claro

    objetivo de corromper la memoria adyacente, la pila del sistema, en donde

    por su forma estructural sabemos que se encuentra en primer lugar lasdirecciones de retorno (tambin denominados puntero de instruccin) que le

    permite al programa continuar su tiempo de ejecucin. Entonces lo que hace

    el pirata informtica es que al momento de sobrescribir este segmento de

    memoria modifica la direccin de memoria para apuntar a un cdigo

    malicioso o inesperado. Por lo tanto, es posible incluir instrucciones en el

    bfer que permitan abrir un intrprete de comandos (shell) permitiendo que

    el pirata tome control del sistema. Este cdigo arbitrario que posibilita la

    ejecucin de comandos se conoce como cdigo de shell o shellcode (CCM

    Benchmark Group, 2015).

    Explicado todo esto podemos definir a un ataque de Buffer Overflow como el

    desbordamiento de un bfer con datos de otro dominio que propician un

    comportamiento malicioso o inesperado en un programa.

    Ahora que sabemos todo esto, Cmo nos protegemos de este tipo de

    ataques? Bsicamente todo yace en que una direccin debe ser modifica para

    poder entrar al sistema, caso contrario el ataque simplemente no es posible,

    por lo que hoy en da se busca la deteccin de la modificacin de dicha

    direccin y es as como se tiene presentan cuatro enfoques que buscan la

    proteger de este tipo de ataque: Primero, tener cdigo que no sea fcilmentevulnerable, Segundo, llamado Anlisis Esttico que busca ver que tan

    propenso se es a ataques que ya se conocen, Tercero, conocido como

    Solucione Dinmica que busca la proteccin de datos propenso a ser blanco

    de ataque y el Cuarto, identificado como Aislamiento que busca limitar el

    dao ms a preverlo. Pero mejor generalicemos un poco de que se trata estas

    soluciones planteadas.

    El primer enfoque es sencillo de entender, un cdigo que no de facilidad al

    fracaso que est libre de vulnerabilidades que ya se conocen o que eviten en

    todo lo posible convertirse en un fracaso.

  • 7/24/2019 Ataque Overflow

    4/6

    3

    El segundo enfoque, como se mencion dado el conjunto de vulnerabilidades

    conocidas, podemos evitar los desbordamientos de bfer mediante la

    sustitucin de las funciones vulnerables. Este enfoque que se maneja sobre

    el cdigo fuente, es conocido como el Anlisis Esttico.

    Este se aplica antes de la implementacin un programa, con el objetivo deencontrar y resolver los problemas potenciales. Para ello, simplemente

    usamos conocimiento predefinido para analizar el cdigo fuente. Por ejemplo,

    sabiendo de que la funcin strcpy en el lenguaje C, copia cadenas sin

    comprobar los limites, por lo que es sospechosa de permitir un

    desbordamiento de bfer, podemos crear una funcin de bsqueda que

    identifique cualquier uso de la funcin y advierta al programado de esta

    potencial amenaza.

    Un algoritmo genrico para este tipo de anlisis esttico podra ser:

    1.

    Abrir el archivo de funciones sospechosas

    2. Hacer una bsqueda dentro del cdigo fuente por cada funcin

    sospechosa.

    3. Si se encuentra una de estas funciones, remplazamos por un cdigo

    menos vulnerable.

    El tercer enfoque se encuentra dirigido a los objetivos del atacante, los datos

    de control, la validacin de la integridad de estos datos nos permiten detectar

    los ataques de desbordamiento de bfer. Por lo que nos referimos a esta clase

    de esquema de proteccin como solucin dinmica, debido a que los sistemas

    de gestin y verificacin de datos son en forma dinmica y se da durante laejecucin. Entonces a manera de algoritmo para este enfoque tenemos:

    1. Etiquetamos los datos de control.

    2. Si se acede al dato y la etiqueta es verificada, entonces, continua sin

    problema, caso contrario, se lanza una excepcin.

    Tenemos entonces que para verificar la integridad de los datos, es necesario

    etiquetarlos, y luego simplemente validamos las mismas.

    Por ejemplo: Identificamos una direccin que no puede ser modificada luego

    de su creacin le colocamos una palabra (canario) adyacente a ella y elmomento en que vayamos a usar esta direccin verificamos primero esta

    palabra asignada.

    El cuarto enfoque, plantea un esquema de aislamiento que limitan daos de

    los ataques en vez de la prevencin de los mismos. Como resultado, su

    proteccin no se limitan solo a ataque del tipo buffer overflow. Al crearse una

    cortina electrnica, los sistemas de aislamiento pueden prevenir un ataque o

    limitar el dao que causa. Por ejemplo, es posible evitar que una cierta parte

    de memoria (pila) sea utilizada como almacenamiento de cdigo ejecutable.

    Alternativamente, tambin podemos encarcelar procesos para evitar accesos

  • 7/24/2019 Ataque Overflow

    5/6

    4

    a otras partes de memoria y con eso logramos contener el dao (Piromsopa

    & Enbody, 2011).

    En comparacin cada tcnica no elimina del todo la vulnerabilidad al ataque

    y es fcil suponer que hay muchos ms enfoques para el problema por lo que

    puede generarse otro tipo de soluciones, claro est todo sea por brindarcdigos con altos niveles de seguridad y que brinden ms dificultad a la

    aparicin de este u otros ataques. Pero si analizamos los tres ltimos enfoque,

    despus de todo ya que la primera medida es ms que obligatoria, y

    contraponemos uno contra otra la comprobacin dinmica en tiempo de

    ejecucin puede ser la mejor opcin para dar seguridad en un sistema, claro

    est hoy en da los atacantes ya se adecuan a estas tcnicas, pero ya se

    dificulta bastante el acceso no obstante, el usar un sistema de aislamiento

    brinda ms confianza tambin implica que no haiga un funcionamiento

    correcto del mismo, pero como ya se dijo antes, no son las nicas tcnicas

    existen pero son buenas opciones para solucin del problema.

    Para finalizar, sabemos que un ataque de desbordamiento de bfer es

    producto de la manipulacin de cdigo vulnerable que permite aperturas de

    puertas para manejo del sistemas o en otras palabras, que se produzcan

    eventos inesperados, todo esto debido a que se llena la memoria buffer y se

    da paso a la sobrescritura de zonas de memoria adyacentes a esta, que por

    debido a la arquitectura es la zona en la que encontramos almacenadas las

    direcciones de retornos, las cual pueden ser cambiados para dar pasos a

    agentes externos. Hoy en da sigue siendo una problemtica que no se ha

    podido eliminar pero que ya se presentan sistemas mucho ms robustos quedificultan este tipo de ataques no obstante hay distintas opciones para brindar

    seguridad a los sistemas. En resumen la mejor opcin de seguridad cuando

    se cree un sistema es el uso de cdigo correcto que no permita ningn tipo

    de vulnerabilidad. Aunque no es una tcnica ampliamente utilizada es la

    mejor opcin que se puede tener para eliminar estos tipos de ataques.

  • 7/24/2019 Ataque Overflow

    6/6

    5

    Referencias

    CCM Benchmark Group. (Agosto de 2015). CCM - Comunidad informtica.

    Obtenido de: http://es.ccm.net/contents/19-ataques-por-desbordamiento-de-bufer

    Coutinho, B. (2 de Septiembre de 2012). Slideshare.Obtenido de:

    http://es.slideshare.net/bernardocou/buffer-overflow-y-exploits

    Flores, D. (2012). El Futuro de los Ataques por Desbordamiento de Pila. El

    futuro de los Ataques por los Desbordamientos de Pila. Quito,

    Ecuador.

    Gervacio, J., & De Len, E. (2015). Uno de los clsicos: Buffer Overflow.

    Seguridad, Cultura de prevencin par TI, 21 - 24.

    Lerch, D. (17 de Junio de 2007). El blog de Daniel Lerch. Obtenido de:

    http://dlerch.blogspot.com/2007/06/heap-overflow.html

    Prez, I. (5 de Noviembre de 2014). Welive Security. Obtenido de:

    http://www.welivesecurity.com/la-es/2014/11/05/como-funcionan-

    buffer-overflow/

    Piromsopa, K., & Enbody, R. (2011). Survey of Protections from Buffer-

    Overflow Attacks. Engineering Journal, 31 - 52.