Ir al contenido principal

¿Cómo evitar los Buffer Overflow?

Primero debemos explicar que es un buffer overflow, pues simple y sencillamente un buffer overflow es cuando un programa excede el uso de cantidad de memoria asignado por el sistema operativo. Lo que causa que se empiece a escribir en el bloque de memoria contiguo. Este tipo de fallos se utiliza por hackers que buscan tener este tipo de oportunidades para romper código, cambiar variables o introducir código y tomar control total de los equipos.

Un buffer overflow se produce en una aplicación informática cuando no cuenta con los controles de seguridad necesarios en su código de programación. Cabe destacar que para poder llevar a cabo un desborde de memoria, se debe contar con conocimientos de programación, como también nociones básicas de arquitectura de Sistemas Operativos.
El principio operativo de un desbordamiento de búfer va de la mano con la arquitectura del procesador en la que se ejecuta una aplicación vulnerable, ya sea de 32 o 64 bits. Los datos ingresados en una aplicación se almacenan en la memoria de acceso aleatorio, en una zona que se conoce como buffer. Un programa con un diseño correcto debería estipular un tamaño máximo para los datos de entrada y garantizar que no superen ese valor.
Las instrucciones y los datos de un programa en ejecución se almacenan temporalmente en forma contigua en la memoria, en una zona llamada pila. Los datos ubicados después del búfer contienen una dirección de retorno (que se denomina puntero de instrucción) que le permite al programa continuar su tiempo de ejecución. Si el tamaño de los datos es mayor que el del búfer, la dirección de retorno se sobrescribe y el programa leerá unadirección de memoria no válida, generando una violación de segmento en la aplicación.

Entonces, ¿cuál es el posible riesgo de seguridad asociado?

Un cibercriminal con sólidos conocimientos técnicos puede asegurarse de que la dirección de memoria sobrescrita corresponda a una real, por ejemplo, una que esté ubicada en el mismo búfer. Como tal, al ingresar las instrucciones en el búfer (el código arbitrario), es fácil para él ejecutar esta instrucción.
Entonces, es posible incluir instrucciones en el búfer que permitan abrir un intérprete de comandos (como una shell), permitiendo que el atacante tome control del sistema. Este código arbitrario que posibilita la ejecución del intérprete de comandos se conoce como código de shell o shellcode.
Como hemos visto con anterioridad, esta vulnerabilidad puede encontrase en muchos sistemas operativos, en otro tipo de aplicaciones de terceros e inclusive en protocolos. Por este motivo, desde el Laboratorio de Investigación de ESET Latinoamérica siempre recomendamos leer cuáles son las fallas que corrigen las actualizaciones de aplicaciones y sistemas operativos; la instalación de actualizaciones corrige este tipo de errores, permitiendo cerrar agujeros que facilitarían una brecha de seguridad.
Una política de actualizaciones, en conjunto con una solución de seguridad, ayudará a prevenir la explotación de estos errores en la programación. Próximamente seguiremos mostrando este tipo de vulnerabilidad pero de forma práctica, mostrando por dentro cómo es su funcionamiento.

Comentarios

Entradas populares de este blog

Deadlock, que son y como evitarlos?

Imaginemos que estamos conduciendo por una calle de un solo sentido, y de repente quieres dar vuelta a la derecha que lleva a la casa de tu abuelita (esa calle también tien un solo carril muy estrecho), sin embargo de esa misma calle viene saliendo otro automovil, y por la falta de semaforos ambos se ven involucrados en un gran problema, puesto que no existe una manera de organizar quien puede pasar primero que otro. Bueno, esta es la definición de un "Deadlock", cuando dos o mas procesos se ven bloqueados debido a que la lucha por obtener recursos, y ninguno cede, como consecuencia se ven bloqueados para siempre y ya no se puede realizar mas trabajo.  Cómo solucionariamos esto? Bueno, como se dijo anteriormente, una solución es el uso de semaforos, lo cual administra la sincronización de los procesos, organizando quien se ejecuta primero por orden o por importancia.

Redes iraníes y rusas atacadas usando la vulnerabilidad CVE 2018-0171 de Cisco

El dia 6 de Abril durante la noche se reportó un ataque de seguridad por parte de un grupo de hackers llamado “JHT” hacía varias infraestructuras de redes extranjeras, incluyendo Rusas e Iraníes, utilizando a la instalación inteligente de CISCO bajo el código CVE-2018-0171, gracias a esto los hackers lograron restablecer los enrutadores a su configuración predeterminada, además de mostrar un mensaje a las víctimas. Nos estamos refiriendo a que se sobrescribe el archivo de configuración del enrutador conocido como “startup-config” para reiniciar todo el sistema. Causando interrupciones en las redes afectadas y el archivo de configuración de inicio del enrutador se cambió por un mensaje que decía “No se metan con nuestras elecciones.... -JHT usafreedom_jht@tutanota.com" Según el ministerio de Tecnología de la Información y Comunicación de Irán, se declararon más de 200,000 enrutadores en todo el mundo que se vieron afectados por este ataque, en donde 3500 de ellos eran d