Omitir vínculos de navegación
  Omitir vínculos de navegaciónServicioHelpDesk > HelpClub > Productos Destacados
Omitir vínculos de navegación
Omitir vínculos de navegación
Omitir vínculos de navegación
Omitir vínculos de navegación
Omitir vínculos de navegación
Omitir vínculos de navegación
Omitir vínculos de navegación
Omitir vínculos de navegación
Omitir vínculos de navegación
Omitir vínculos de navegación
Omitir vínculos de navegación
Omitir vínculos de navegación
 Microsoft Server 2003, 2008, ... 
Conceptos de Seguridad (V de VI): El desbordamiento de búfer.
Josep Diaz Ribas
25/09/2009
Quizás, antes de entrar en detalle en este artículo, deberíamos entender la palabra "búfer" en sí.

Aceptada en la RAE cómo "búfer", tiene su origen en el anglicismo "buffer". Un búfer de datos (como describe Wikipedia), es "una ubicación de la memoria en una computadora o en un instrumento digital reservada para el almacenamiento temporal de información digital, mientras que está esperando ser procesada".
Entonces, ¿qué causa la condición del desbordamiento de búfer?

Hablando de forma sencilla, el desbordamiento del búfer se produce cada vez que un programa escribe más información en el búfer, que el espacio que se había asignado para la memoria. Y bueno, ¿esto que tendría que ver con la seguridad? El problema para la seguridad se crea cuando este desbordamiento de buffer es provocado intencionalmente por alguien mediante envio de datos que incluyen porciones de código, calculando la cantidad de datos para poder predeterminar cual es el sobrante que se va a sobreescribir y donde.
Provocado el desbordamiento, contienen una instrucción que apunta a una posición de memoria distinta, donde se encuentra el codigo ejecutable enviado por el atacante. El programa, inducido a funcionar anormalmente por la perdida de datos causada por el desbordamiento, ejecutará el código enviado por el atacante.

Para el usuario final, este problema es de forma coloquial, inevitable. A menos que dispongamos del código fuente de la aplicación, y que tengamos un alto conocimiento de programación, nada podremos hacer para evitarlo. Bueno, nada no; en realidad lo que sí puede hacer el usuario final es tener todas las aplicaciones (o sistema operativo) actualizadas al día. De esta forma, iremos "parcheando" las vulnerabilidades encontradas por los desarrolladores de software.

Ahora bien, para poder entender los desbordamioentos del búfer, es importante saber en qué partes se divide la memoria.

    .text: contiene las instrucciones del programa, es decir, la parte ejecutable. El tamaño de esta sección es fijada en tiempo de ejecución, cuando se carga el proceso.

    .data: se utiliza para almacenar variables globales inicializadas (por ejemplo: int enData = 0;). Esta sección también es fija en tiempo de ejecución.

    .bss (below stack section): contiene las variables globales no inicializadas, como por ejemplo: int enbss;. El tamaño es fijado en tiempo de ejecución.

    heap: esta sección se usa para almacenar variables alocadas dinámicamente y crece desde las direcciones de memoria más bajas hacia las más altas. La alocación se controla mediante las funciones malloc() y free().

    stack: esta es la conocida pila. La sección de la pila permite guardar datos entre llamadas a funciones y crece desde las direcciones altas de memoria hacia las direcciones bajas. Esta forma de crecimiento es la que permite buffer overflows.

    entorno/argumentos (env): se usa para almacenar una copia de las variables a nivel sistema que pueden ser requeridas por el proceso durante su ejecución. Como ejemplo, alguna de estas variables son el path, nombre del shell, hostname, etc. Esta sección es escribible, permitiendo exploits del tipo format string y buffer overflows.

    En la siguiente imagen, podemos ver qué lugar ocupa cada parte en la memoria:



Los desbordamientos de búfer, están presentes siempre que el programa lea datos de alguna fuente y los asigne a un buffer interno, ya sea una entrada de usuario por línea de comandos, por ventana a lo windows (rellenar un formulario web, conectar con una aplicación servidor...), leyendo un archivo, etc.

Este problema es casi tan antiguo como el inicio de la integración de las computadoras a nivel empresarial. De hecho, los primeros ataques de "buffer overflow", se registran en 1988, en el que mediante un gusanto, se atacó a un servicio Unix conocido como "fingerd".
Y Si bien uno creería que al ser un problema conocido hace tantos años, actualmente debería ser menos frecuente y menos peligroso; la realidad demuestra totalmente lo contrario. Los buffer overflows están entre nosotros y son tan peligrosos como hace 20 años. Basta buscar un poco en internet para encontrar exploits de este tipo a montones. El desbordamiento, es de las vulnerabilidades más peligrosas, permitiendo a un atacante ejecutar código localmente, remotamente, escalar privilegios, atacar otras máquinas...Cualquier cosa que se le ocurra al atacante.

Conceptos de seguridad I

Conceptos de seguridad II

Conceptos de seguridad III

Conceptos de seguridad IV

Conceptos de seguridad V

Conceptos de seguridad VI
Omitir vínculos de navegación
17/08/2010 | Resumen del boletín de seguridad de Microsoft de agosto de 2010
14/01/2010 | El soporte técnico para Windows 2000 finaliza el 13 de julio de 2010
29/09/2009 | Microsoft estrena antivirus gratuito.
Omitir vínculos de navegación
14/08/2009 | Investigación de Eventos
27/07/2009 | Windows Server 2008 nos ayuda a proteger nuestra red contra malware
12/06/2009 | Microsoft Server 2008 Foundation: ¡bienvenidas sean las Micro PYMES!
11/05/2009 | Como utilizar la restauración del Sistema en Windows Vista y Windows 7.
13/03/2009 | ¿Cómo funciona la impresión en red con Windows Server?
Omitir vínculos de navegación
Servicio Chequeo Express para servidores Windows
Servicio Chequeo Express para sistemas MS Active Directory
Omitir vínculos de navegación
Servicios de telesistencia que prestamos Servicios de telesistencia que prestamos

WSUS Operation Guide WSUS Operation Guide

Omitir vínculos de navegación
04/06/2010 | No podemos usar de forma correcta los permisos ACL en las carpetas de una unidad NAS.
04/06/2010 | No podemos usar de forma correcta los permisos ACL en las carpetas de una unidad NAS.
29/03/2010 | Error en Oracle: "Ora-01019 - unable to allocate memory in the user side" (No se ha podido asignar memoria en el lado del usuario)
Volver
Omitir vínculos de navegaciónServicioHelpDesk > HelpClub > Productos Destacados
ServicioHelpDesk – Servicio de Ayuda para Usuarios Informáticos. Copyright Hardan Allware, S.L. Todos los derechos reservados |Aviso Legal|Contacta Contacta